Skip to content
cd ../projects

2026

Synthetic User Generator

A complete research workflow — define an experiment, ground it in your own documents, generate personas, run surveys and interviews, and export a report — rather than a standalone persona generator.

React 19FastAPILangGraphGroqPostgreSQL + pgvectorGenerative AIMulti-Agent Architecture
Synthetic User Generator research workspace showing generated personas

cat problem.md

The problem

Early product discovery is the stage where teams have the most assumptions and the least evidence. Real user research is the right answer, but recruiting, scheduling, and synthesizing it takes weeks that a discovery sprint does not have.

The gap is not a lack of ideas about users. It is the lack of a structured way to interrogate those assumptions before real research starts, and a way to keep what you learn attached to evidence instead of opinion.

The platform is explicitly not a replacement for talking to people. It is a way to explore hypotheses quickly, with every generated response traceable to the source material it was grounded in.

tree --architecture

Architecture

~/synthetic-user-generator
Researcher
    |
    v
React + Vite UI  ........  Cloudflare Pages
    |  HTTPS / JSON
    v
FastAPI service  ........  FastAPI Cloud
    |
    +--> Experiment services ------+
    +--> LangGraph supervisor      |
    |        |                     |
    |        +--> Persona agent    |
    |        +--> Survey agent     +--> Groq
    |        +--> Insight agent    |    gpt-oss-20b
    |                              |
    +--> RAG pipeline -------------+
    +--> ReportLab PDF             |
                                   v
                       Supabase PostgreSQL
                            + pgvector

Every workflow retrieves experiment-scoped evidence before the supervisor picks a specialist agent.

layertechnologyresponsibility
Web clientReact 19, Vite, Tailwind CSS, RechartsResearch workflow, persona interactions, charts, voice controls
APIFastAPI, Pydantic, SQLAlchemyValidation, REST endpoints, business logic, persistence
OrchestrationLangGraphSupervisor routing, shared workflow state, durable checkpoints
ModelGroq, openai/gpt-oss-20bPersona generation, responses, and synthesis
RetrievalFeature-hashed vectors + pgvectorLocal, no-key embedding and experiment-scoped similarity search
DatabaseSQLite locally, Supabase PostgreSQL hostedExperiments, personas, messages, documents, vectors, workflow state

git log --decisions

Key decisions

  1. A supervisor that picks exactly one specialist

    Rather than chaining every agent on every request, a LangGraph supervisor routes each task to one of three specialists: persona, survey, or insight. Shared state stays traceable, and durable checkpoints mean a long survey run can resume instead of restarting.

  2. Evidence is scoped to an experiment

    Documents uploaded to one research project cannot surface in another. Isolation is enforced at retrieval, not just in the UI, so two experiments exploring competing hypotheses never contaminate each other's findings.

  3. Embeddings run in-process with no API key

    Deterministic 384-dimensional feature hashing replaces a hosted embedding service. That removes a per-token cost and a rate limit, and it means uploaded source documents are never sent to a third-party embedding provider.

  4. Generated answers are never indexed as evidence

    Synthetic responses stay out of the vector store. Without this the system would eventually retrieve its own output as source truth and quietly launder a guess into a finding.

  5. Voice without a paid voice API

    The speaking persona uses browser-native text-to-speech and a live visualizer. It keeps the whole application inside free service tiers, which is what makes a public live demo viable at all.

cat outcome.md

Outcome

  • Live at synthetic-user-generator.pages.dev with a React front end on Cloudflare Pages and a managed FastAPI service, running entirely on free tiers.
  • A researcher can go from an empty workspace to a downloadable PDF report — experiment, uploaded evidence, personas, survey or interview, synthesized themes and sentiment — without leaving the app.
  • Built during the Infosys Springboard AI Engineer internship, June to August 2026.