Back to projects

Origo

AI-powered project brief generator

In DevelopmentPublic
Next.jsTypeScriptAnthropic ClaudeVercel AI SDKTailwind CSSSaaS

Origo

AI-powered project brief generator for agencies, freelancers, and teams.

The Problem

Most project failures start before a single line of code is written. Scope creep, endless revisions, misaligned expectations -- they all trace back to a missing or incomplete brief. Freelancers and agencies spend hours extracting requirements from clients through back-and-forth emails, only to end up with vague, unstructured documents that leave critical decisions undefined.

The brief is the foundation of every project. Without a structured one, teams estimate blindly, clients change direction mid-build, and deadlines slip. The industry needed a way to turn a 30-minute client conversation into a comprehensive, professional brief -- without the overhead.

Our Solution

Origo is JP.Studio's own SaaS platform. Unlike our client projects, Origo is a product we conceived, designed, architected, and deployed ourselves -- it represents our full-stack capability distilled into a single, investor-ready product.

The platform guides users through a structured input flow: project type, client context, goals, target audience, deliverables, timeline, budget, and constraints. Once collected, Claude (Anthropic's AI) transforms these raw answers into a comprehensive, professional project brief -- formatted, structured, and ready to share.

Users can export briefs as PDF, copy them directly, or share via a unique link (no account required on the client side). All briefs are stored locally, so users can revisit, reuse, and track past projects.

Architecture

Origo follows a modern serverless architecture optimized for speed and cost efficiency.

The Next.js frontend handles both the guided input flow and brief rendering, with server-side generation for shared brief pages. The AI pipeline uses Anthropic's Claude API via the Vercel AI SDK for streaming responses -- users see their brief being generated in real time rather than waiting for a full response.

Internationalization is built in from day one (FR/EN), with locale-aware routing and translated UI throughout.

Key Design Decisions

  • Streaming generation: Briefs are generated using Claude with streaming enabled via the Vercel AI SDK. Users see content appear progressively, which dramatically improves perceived performance and engagement.
  • Local-first storage: Brief data is persisted client-side, reducing server costs and giving users full control of their data. No account required for basic usage.
  • Shareable links: Each brief generates a unique URL that clients can view without creating an account, reducing friction in the handoff process.
  • Bilingual by default: Full FR/EN support with Next.js i18n routing, reflecting our France-based market while targeting international clients.

Tech Stack

LayerTechnologyRationale
FrameworkNext.js, TypeScriptSSR for shared briefs, type safety, App Router for modern patterns
AIAnthropic Claude, Vercel AI SDKBest-in-class reasoning for structured document generation, streaming support
StylingTailwind CSSRapid iteration on premium dark UI with design token consistency
InfrastructureVercelZero-config deployments, edge functions, analytics
ExportPDF generationClient-ready deliverables with one click

Code Patterns

// AI brief generation with streaming
import { streamText } from "ai";
import { anthropic } from "@ai-sdk/anthropic";

async function generateBrief(inputs: BriefInputs) {
  const result = streamText({
    model: anthropic("claude-sonnet-4-20250514"),
    system: BRIEF_SYSTEM_PROMPT,
    messages: [
      {
        role: "user",
        content: formatInputsAsPrompt(inputs),
      },
    ],
    maxTokens: 4096,
  });

  return result.toDataStreamResponse();
}
// Shareable brief link generation
function generateShareableLink(briefId: string): string {
  const token = encodeBase64url(briefId);
  return `${SITE_URL}/brief/${token}`;
}

// Client views brief without authentication
async function getBriefByToken(token: string): Promise<Brief | null> {
  const briefId = decodeBase64url(token);
  return briefs.findById(briefId);
}

Outcomes

  • Brief generation in under 2 minutes: What previously took hours of back-and-forth emails is now a guided 5-minute input flow followed by instant AI generation.
  • PDF export and client sharing: Professional deliverables that clients can review without creating an account, reducing friction in the sales process.
  • Bilingual platform: Full FR/EN support serving our primary French market while targeting international agencies and freelancers.
  • JP.Studio's flagship product: Origo validates our ability to ship end-to-end -- from market research and product design through architecture, development, deployment, and ongoing operations.