The founder's deck says: "Customers love how fast it absorbs." It has a quote, in italics, attributed to Priya, 29, Pune. Nobody called Priya. The model wrote a sentence that sounded like a customer, and it went into the pitch.
This is the failure that makes AI synthesis dangerous for customer research, and it is fixable. This post gives you a prompt that forces quotes to come from the transcript, a small Python verifier that catches the ones that don't (I ran it, output below), and a short consent checklist. The example transcripts in this post are fabricated test data written by me for the demo; they are not real customers.
What should you collect before synthesising?
Raw material, labelled. For each interview you need a transcript or notes with:
- A participant ID (
P1,P2), not a name. - The interview date and how you recruited them (past buyer, subscriber, support ticket).
- What you asked. If you asked leading questions ("Don't you think delivery is slow?"), mark it, because the answers are worth less.
Don't merge reviews and interviews into one pool. Reviews are public text written after the fact; interviews are conversations you steered. If you mine reviews too, see review mining prompts for competitor product research and keep the two analyses separate.
How do you prompt for synthesis without invented quotes?
The trick is making the model's job extraction, not writing. Untested template:
You are helping me analyse customer interviews for [BRAND], which sells
[CATEGORY] in India. Below are transcripts, each starting with a
participant ID like P1.
RULES:
1. Every quote must be copied exactly, word for word, from a transcript.
Put it in straight double quotes, followed by the participant ID in
square brackets, like "exact words" [P2].
2. If you paraphrase, do not use quotation marks. Write "P2 said that..."
3. Do not combine sentences from different places into one quote.
4. Do not correct grammar or spelling inside quotes.
5. If no transcript supports a theme, say "no evidence in these transcripts".
6. Do not give percentages or say "most customers". Give counts as
"mentioned by P1, P3, P4 (3 of 6 participants)".
TASK:
A. List up to 6 themes. For each: a one-line description, the participants
who mentioned it, and up to 2 exact quotes.
B. List things participants said that contradict each other.
C. List questions this research did NOT answer.
TRANSCRIPTS:
[PASTE P1...Pn]
Rule 6 matters. Six interviews can tell you a problem exists; they can't tell you how common it is. If a model writes "70 percent of customers dislike the smell", delete it.
How do you verify the quotes?
Don't re-read the output and hope. Run a script. Mine checks every double-quoted string of 20 characters or more followed by a participant tag, and confirms it appears verbatim (ignoring case, whitespace and curly quotes) in that participant's transcript file.
import re, sys, pathlib
def norm(s):
s = s.replace("’", "'").replace("“", '"').replace("”", '"')
return re.sub(r"\s+", " ", s).strip().lower()
synth = pathlib.Path(sys.argv[1]).read_text()
sources = {p.stem: norm(p.read_text()) for p in sorted(pathlib.Path(sys.argv[2]).glob("*.txt"))}
bad = 0
for m in re.finditer(r'"([^"]{20,})"\s*\[(P\d+)\]', synth):
quote, pid = norm(m.group(1)), m.group(2)
src = sources.get(pid)
if src is None:
print(f"NO SOURCE {pid}: {m.group(1)[:60]}"); bad += 1
elif quote not in src:
where = [k for k, v in sources.items() if quote in v]
print(f"NOT VERBATIM in {pid} (found in {where or 'nowhere'}): {m.group(1)[:70]}"); bad += 1
else:
print(f"ok {pid}: {m.group(1)[:50]}")
print(f"{bad} problem(s)")
sys.exit(1 if bad else 0)
I ran it on 2026-10-09 against two tiny fabricated transcripts (P1.txt, P2.txt) and a four-line "synthesis" where I had deliberately planted two bad quotes: one reworded, one attributed to a participant with no transcript. Output:
ok P1: I couldn't stand the smell in the morning
ok P2: The delivery estimate said seven to nine days and
NOT VERBATIM in P2 (found in nowhere): Nobody with my skin tone was ever shown wearing it
NO SOURCE P3: My cousin sent me a link, I didn't search for it at all.
2 problem(s)
The reworded quote ("Nobody with my skin tone was ever shown wearing it") is the realistic failure: the real participant said something similar ("there weren't any photos like that"), and the model smoothed it into a better sentence. The script caught it, and it can't be caught by eye reliably because it reads true.
Limits: the script checks that the words exist in that participant's transcript, not that they are used in context. A quote can be verbatim and still misleading, so read the surrounding lines for every quote that ends up in a deck. Also, if transcripts come from auto-transcription, fix obvious errors before running, or the verifier will flag correct quotes.
What themes should you ask for?
Pick a frame before asking, or the model will give you generic themes. A simple one for D2C research:
| Frame | Question to extract |
|---|---|
| Trigger | What happened that made them look for a product like this? |
| Alternatives | What else did they consider or use before? |
| Hesitations | What almost stopped the purchase? |
| Use | How do they actually use it, versus how the page says to? |
| Switching | What would make them leave? |
Run each frame as a separate pass over the same transcripts, with the same quote rules. One mega-prompt for everything tends to blur themes together.
How do you turn themes into decisions?
Ask for hypotheses and cheap tests, not findings. Untested template, run after you've verified the quotes:
Using only the verified themes below, propose for each:
1. A hypothesis in the form "If we change X, then Y, because Z".
2. A cheap way to test it in 2 weeks with our own store data
(page change, FAQ addition, message test).
3. What result would make us drop the hypothesis.
Do not recommend anything that is not tied to a theme. Do not invent
numbers.
THEMES: [PASTE VERIFIED THEMES]
For the test side, see our post on A/B testing prompts in production for why small samples mislead.
Consent and privacy checklist
Interview transcripts are personal data. Before you paste any into an AI tool:
- Participants agreed to recording and to the use of an AI tool for analysis, in words they understood. Ask them; don't assume.
- Names, phone numbers, addresses, order numbers and anything identifying are removed or replaced with IDs.
- You've checked the tool's data and training settings for your plan. See what not to paste into ChatGPT.
- You've told participants how long you keep recordings and who sees them.
- If you're based in India, the Digital Personal Data Protection Act is relevant to personal data processing. I did not review the Act for this post, so check with a professional how it applies to your research.
What I'd skip
Skip "personas" generated by a model from six interviews; they look finished and are mostly fiction. Skip percentages. Skip any quote you couldn't verify, even if it's perfect. If a deck needs a vivid line and none of the real ones work, use a real one anyway, or write "paraphrased" and don't use quote marks. The prompts above are untested templates; the verifier and its output are the parts I actually ran.



