Qualitative

Qualitative is a web app I designed and built for myself, and now offer at-cost to the user research community at qualitative.one. It reads your meeting transcripts, breaks them down into short “sticky note”-length extracts, applies a tagging system you customize, drafts follow-up emails, and exports everything into the tools researchers already use — Miro, FigJam, Google Sheets.
The product is live, paid, and in active use. It is a working example of what one designer can build now that AI and modern web tooling have collapsed the cost of going from a sketch on paper to a deployed multi-tenant SaaS app.

The Problem
User research interviews produce hours of transcript that is painful to analyze. The traditional workflow — watch the recording, pull quotes, tag themes, build affinity diagrams — is slow enough that teams often skip it and lose the signal in their own data.
The newer workflow — paste a transcript into ChatGPT and ask for “the key insights” — is fast but produces a single homogenized summary that strips out the voices, the contradictions, and the specific quotes that make research findings credible. You also can't easily import that summary into Miro, FigJam, for your own thematic analysis.
Existing dedicated tools (Dovetail, Marvin, Notably, etc.) solve much of this, but they are priced for enterprise research teams — $30–$50 per seat per month or more. Independent researchers, designers, PMs running their own studies, and small teams get priced out.
The Approach
The core idea is to use AI as a careful tagger, not as a summarizer. The app uses an LLM (Gemini) constrained by a set of extraction rules the researcher writes — one rule per kind of insight they care about (feature requests, bug reports, competitive mentions, action items, pain points, positive feedback). The LLM's job is to find sentences in the transcript that match those rules and emit them as small “sticky note”-length extracts.
Each extract preserves the original quote, the speaker, the meeting, and the matching rule, so the data remains traceable back to a real moment in a real interview. From there, the researcher can filter, search, export, and synthesize using their own preferred analysis approach.
How it works: rules guide the AI
Qualitative syncs meeting transcripts from Google Meet and Zoom, transcribes them, and extracts insights.
Researchers create extraction rules; small structured prompts describing what kind of insight to look for, with a name, summary, example quotes, and associated tags. The rules act as guardrails on the LLM. New users can generate a starter rule set automatically from one or two annotated meetings, then edit from there. Tags are color-coded and reusable across rules.

Review — extracts, notes, action items
When a meeting finishes processing, the researcher gets a structured page: meeting details, a list of extracts each with its matching rule and tag chips, a collapsible full transcript, editable user notes, and a draft follow-up email. Extracts can be edited, flagged as action items, retagged, or removed. Anything the AI got wrong, the researcher fixes once and moves on.

Export — into the researcher's own workflow
Extracts are exportable to CSV (for Google Sheets), XLSX, or plain text formatted for paste-into-Miro. The /extracts page gives a cross-meeting view with filtering by tag, customer, rule, and date so a researcher can pull every extract about, say, “onboarding confusion” across the last three months of interviews and drop it straight into an affinity map.
How It's Built
Qualitative is a single Next.js 15 app (App Router, React 19, Tailwind) hosted on Vercel. The data layer is Neon Postgres accessed through the @neondatabase/serverless driver, with a versioned SQL migration set. Authentication is NextAuth v5 (Google OAuth). Long-running and durable background work — transcription, extraction, email generation — runs through @workflow/next, giving the workflow steps crash-safe retries on Vercel's Fluid Compute runtime.
The AI layer is Google Gemini, called from the server with structured-output prompts for both the extraction step and the email draft step. The system has no chat UI — the LLM is a backend tool, not a surface. Stripe handles billing for the single Pro plan, and there are inbound integrations with Linear and HubSpot so extracts can flow out of the app and into other team systems.

My Role
I designed, built, and operate Qualitative end-to-end — product strategy, UX, visual design, full-stack implementation, AI prompt engineering, deployment, billing, and customer support. The project is a practical demonstration of what a single designer-developer can ship with modern tooling: a multi-tenant SaaS with OAuth integrations, durable workflows, billing, and a working AI feature, designed and shipped solo.
The most interesting design decisions were the small ones — how big a sticky-note-sized extract should be, what metadata to surface alongside each quote, where to put the escape hatches when the AI is wrong, and how to make the rules editor approachable to a researcher who has never written a prompt. The product's usefulness comes from those choices, not from the AI model itself.