Three thousand support tickets, eight hundred NPS verbatims, and a quarter of app reviews contain your roadmap's best evidence — uncounted. This playbook classifies them into a fixed theme schema with counts and representative quotes, then runs the 20-item sample audit that makes the counts trustworthy enough to say out loud.
Workflow area: Discovery & Research · Tier: Core · Hands-on time: ~35 minutes
The difference between "users complain about search" and "search relevance is theme #2 at 14% of tickets, up from 9% last quarter" is the difference between an anecdote and an argument. LLMs made the classification step cheap. What they did not make cheap is trust: a model will happily sort ten thousand items into whatever themes it invents, drift its definitions halfway through, and hand you confident percentages built on mush. The recipe fixes the schema first, batches the classification, and audits a sample per theme before any number leaves your desk.
Fix the schema before the model sees the data. Read 50 random items yourself and draft 8–12 themes with one-line definitions and an example each. Include other and not-feedback (spam, thanks, duplicates). If you let the model invent themes per batch, batch 1's "onboarding friction" and batch 7's "activation issues" will silently be the same theme counted twice.
Classify in batches with a structured-output prompt. 100–200 items per batch, each with a stable ID:
You are classifying customer feedback into a FIXED schema. Use ONLY
these themes — do not invent, merge, or rename themes:
[PASTE SCHEMA: id, name, one-line definition, example]
For each item, output one line:
ITEM_ID | THEME_ID | SEVERITY (blocker/major/minor) | CONFIDENCE
(high/low) | QUOTE (verbatim fragment ≤15 words that justifies
the theme)
Rules:
- An item that fits nothing gets "other" — never force-fit.
- An item raising two themes gets its PRIMARY theme only.
- The QUOTE must be copied verbatim from the item, not paraphrased.
- Mark CONFIDENCE low whenever you hesitated.
Items:
[PASTE BATCH WITH IDs]
Aggregate in a sheet, not in the chat. Paste every batch's output into Google Sheets, pivot on THEME_ID for counts and shares, and keep the item-level rows — they're your audit trail. Never ask the model to total its own counts across batches; arithmetic across a long context is exactly where it slips. A healthy pivot:
THEME COUNT SHARE LOW-CONF
billing-confusion 412 13.7% 31
search-relevance 389 12.9% 18
mobile-sync-failures 267 8.9% 52
other 488 16.2% —
Run the 20-item audit per theme. For each theme you plan to cite, pull 20 random items classified into it and read them yourself. Count the misclassifications: 19–20 correct means the count is quotable; 16–18 means quote it as approximate; below 16 means the theme's definition is broken — rewrite it and reclassify. Audit other too: a fat other hides your next theme.
Write the findings memo with counts, quotes, and caveats. One page: top themes with share and quarter-over-quarter movement, two verbatim quotes per theme (pulled from the audit, so you've verified them), the audit precision per theme, and what the corpus can't tell you — silent churners don't file tickets, and NPS verbatims over-represent extremes.
other is under ~20% and was reada bloated other means the schema is missing a theme, not that users are incoherent.Support tickets and NPS verbatims routinely contain names, emails, account details, and payment fragments — strip or mask identifiers before classification, use your organization's approved AI tenant, and never paste raw ticket exports into consumer tools.
The model does the counting, the sample audit buys the trust — a theme count you haven't audited is an opinion wearing a percentage, and the 20-item read is the cheapest credibility you'll ever buy.