Skip to main content
All case studies
Side ProjectIA générativeClaude APIResearchOpsNext.jsSaaS

User Research Suite — Automating repetitive UX research tasks with AI

Design and development of a full SaaS tool, from blank page to production — AI-generated study protocols, stakeholder briefs as slides, Word/PDF/PowerPoint exports. Powered by Claude AI, deployed on Vercel.

Role
Designer & Developer
Duration
6 days
Tools
Next.js · Anthropic API · Supabase · Stripe · Vercel
Live
uxresearchsuite.com
User Research Suite landing page — dark background with blue radial glow, headline 'La research sans les corvées', product mock on the right with task window and brief strip
Landing page — dark background with blue glow, integrated product mock

Context

UX research generates a lot of repetitive documentation: moderator guides, screeners, framing briefs, insights reports. These deliverables follow known structures, but writing them takes several hours per study — time taken away from fieldwork.

The idea: if the structures are predictable, AI can generate them. One system prompt per study type, an expected JSON schema, streaming for the generation UX — and the researcher gets a structured, exportable deliverable in under 30 seconds.

This project grew out of a personal need during my practice at RAJA, and evolved into a real SaaS product with authentication, payments and saved projects.

What the tool does

Protocol Generator

Available

Describe the context, choose the study type. The AI generates a complete protocol: written moderator guide, tasks and scenarios, observation questions and tips. Word and PDF export in one click.

Exploratory interviewModerated testUnmoderated testSurvey

Brief Builder

Available

Once the protocol is generated, create the stakeholder brief without leaving the page. Claude generates 9 HTML slides with inline styles, viewable in a 16:9 viewer. PowerPoint and PDF export. Included in the same credit.

9 slidesPowerPointPDF

Results Analyser

In progress

Import raw data (CSV from Maze/UserTesting/Typeform, verbatims, notes). Structured insights report with prioritised recommendations. Excel and Word export.

CSV · VerbatimsExcel · WordComing soon
Protocol generation form — study type selector, product, objective, participants, duration and tasks fields filled in
Generation form — study type, context, participants
Protocol generated via streaming — Introduction, Task 1, Task 2, Debrief sections visible, Word and PDF export buttons
Protocol generated via streaming — ready to export

Approach

Use case identification

Analysis of repetitive research tasks: protocol writing, brief preparation, data synthesis. Definition of 3 priority use cases with their expected JSON output schema (protocol structure, brief structure, report structure).

UX ResearchResearchOpsSchéma JSON

Prompt engineering

A distinct system prompt per study type, with the expected JSON schema embedded. Internal reflection phase (<reflexion>) + generation phase (<brief>) for the Brief Builder. Adaptive prompts: moderated/unmoderated distinction, 3 sub-designs for unmoderated tests (monadic, A/B, benchmark).

Claude AIStreamingPrompts adaptatifs

Architecture and development

Next.js API routes with mandatory streaming (ReadableStream + Anthropic SDK) to avoid Vercel timeouts. Supabase Auth + RLS to isolate data per user. Stripe webhook to credit accounts. Server-side exporters only (docx, pptxgenjs, @react-pdf/renderer don't work browser-side).

Next.js 16SupabaseStripeVercel

Production deployment

6 sprints from MVP to advanced features: multi-type protocols, brief builder with slide viewer, saved projects system, full auth, Stripe payments, GDPR legal pages, Vercel analytics. Continuous deployment on Vercel.

Sprint 1–6CI/CDRGPD
Brief Builder — 16:9 viewer with a context slide visible full screen, thumbnails at the bottom, previous/next navigation, PowerPoint and PDF export buttons
Brief Builder — 16:9 viewer with slide navigation and PowerPoint export

Key technical decisions

Mandatory streaming

All API routes use ReadableStream with the Anthropic SDK. Without streaming, 10–15 second generations trigger Vercel timeouts (10s in prod). The client receives tokens in real time and displays step-by-step progress.

Constrained structured JSON

Claude always responds with valid JSON, never free-form markdown. The expected schema is embedded in the system prompt — a distinct schema per study type. The discriminated union on <code/> handles the 3 sub-designs of the unmoderated test (monadic | A/B | benchmark) in the same endpoint.

Server-side exporters only

docx, pptxgenjs and @react-pdf/renderer are not browser-compatible. They run exclusively in API routes. The result is returned to the client as a Uint8Array (Buffer → Uint8Array required in Next.js 16).

Atomic credits

Credit deduction is an atomic SQL function on Supabase (<deductCode/>). It executes after successful generation — never before — to avoid charging for a failed generation. The Stripe webhook uses <addCode/>, also atomic.

Projects space — list of cards with protocol_done or brief_done status badge, study type and creation date
Projects space — saved protocols and briefs, accessible and re-exportable at any time

What I learned

  • Prompt engineering for structured JSON is a craft in itself. Constraining Claude to respect a 20+ field schema without hallucination required multiple iterations per study type — particularly for discriminated unions (unmoderated A/B vs benchmark).
  • Streaming completely changes the UX of an AI tool. Displaying tokens as they arrive transforms an anxious 15-second wait into a reassuring generation experience. The progress stages detected in the buffer (JSON markers) make the interface dynamic without complex JavaScript.
  • Building a SaaS solo in 6 weeks is achievable with the right tools. Supabase (auth + DB + RLS), hosted Stripe Checkout and Vercel eliminated most of the infrastructure plumbing. Claude Code accelerated development by 40% on repetitive parts (exporters, prompts, preview components).
  • Exporters are the real bottleneck. Generating a faithful PPTX from HTML inline-styles (produced by Claude) requires an htmlToLines() function that extracts text and reformats it in pptxgenjs. The A4 PDF with @react-pdf/renderer is more stable but less flexible.

Result

A production tool, usable by any UX researcher. 5 free credits on sign-up allow generating 5 complete protocols — no credit card required. Generating a moderator guide for a moderated test (tasks, scenarios, probe questions, post-task questions) takes under 30 seconds where manual writing takes 2 to 3 hours.

< 30s
per generation
5 types
of studies supported
3 formats
of export
6 days
from start to finish

Let's work together

Interested in this case study? Let's discuss what user research can bring to your product.

Work with me