Take 200 open-ended survey responses and come back with five named themes, honest counts, representative quotes, and recommendations — the analysis a research team would charge a week for, done in an afternoon, without the cherry-picking that makes survey write-ups untrustworthy.
Tier: Core · Hands-on time: ~35 minutes · Tools: ChatGPT, Google Sheets, Claude
Everyone runs surveys; almost nobody analyses the free-text box. The multiple-choice charts get made, and the 200 comments — where the actual reasons live — get skimmed for one juicy quote. This recipe makes the model do the tedious clustering while you enforce the one rule that keeps it honest: every theme carries a count, and every count is checkable.
And when not to:
Prepare the responses as a numbered list (5 minutes). Export the free-text column from Google Sheets. Give every response a number (=ROW()-1 in a helper column, then copy both columns out). Numbers are the anti-cherry-picking device: they let you trace any quote back to a real row. Strip names, emails, and anything identifying before it leaves the sheet.
Run the clustering pass with counting rules. Paste the numbered responses with this prompt:
You are a research analyst. Below are numbered open-ended survey
responses to the question: "[PASTE THE EXACT SURVEY QUESTION]".
Cluster them into 4-7 themes. For each theme give:
1. A short, neutral name (not a slogan, not a recommendation).
2. The COUNT of responses assigned to it, and the response numbers.
3. Two representative quotes, copied VERBATIM, with their numbers.
4. One sentence on what the theme means in plain terms.
Rules:
- Every response is assigned to exactly one primary theme. Put
genuinely unclassifiable ones in a final "Other" bucket and list
their numbers — do not hide them.
- Counts must sum to the total number of responses. State the total.
- Quotes must be exact text from the list. Never paraphrase a quote.
- Order themes by count, largest first.
- Do NOT give recommendations yet. Analysis only.
RESPONSES:
[PASTE NUMBERED RESPONSES]
A good output looks like this:
Total responses: 187
Theme 1 — Meeting load (52 responses: #3, #9, #14, ...)
"I lose whole days to meetings that could be a doc" (#14)
"back-to-backs mean my real work starts at 4pm" (#77)
Meaning: the single largest complaint is time lost to meetings,
not the meetings' content.
Theme 2 — Unclear priorities (41 responses: #2, #8, ...)
...
Other (6 responses: #19, #44, #101, #118, #150, #171)
Audit the counts and quotes (8 minutes). Spot-check five quotes against your sheet by number — verbatim or the analysis is untrustworthy. Check the counts sum to your total. Skim the "Other" bucket yourself; models sometimes park inconvenient responses there. If a theme feels like two themes wearing a coat, say so: "Split theme 2 into 'unclear priorities' and 'shifting priorities' and redistribute the numbers."
Now — and only now — ask for recommendations. Same conversation:
Based ONLY on these themes and counts, draft 3-5 recommendations.
For each: the theme(s) it addresses, the count of people affected,
the specific action, and who would own it. Flag any recommendation
that addresses a small theme but would be cheap to do anyway.
Do not recommend anything no theme supports.
Keeping analysis and recommendations in separate steps is the discipline: it stops the model (and you) from bending the clustering to fit a preferred fix.
Write the one-page summary yourself. Themes table (name, count, one quote each), then recommendations, then a link to the full response sheet. The table format the renderer gives you is the deliverable; the model's prose is scaffolding.
Free-text survey answers routinely contain names of colleagues, managers, and customers even when the survey was "anonymous". Strip identifiers before pasting, use your organisation's approved AI tenant, and never paste responses from a survey that promised confidentiality into a personal account.
Numbered responses, counted themes, verbatim quotes, and recommendations only as a separate second pass — that is the whole method. The model does the clustering; the numbering is what lets anyone, including you, catch it cherry-picking.