How do you turn customer feedback into copy without AI inventing the pattern?
Turn reviews, tickets and call notes into messaging lines with AI, where every line traces to a quote you can find in the source file — with checks for the two things AI does quietly: polishing quotes and dropping the minority view.
You can turn a pile of customer feedback into messaging lines your team can ship, each one traceable to a quote you can find, word for word, in the source file.
Last verified 2026-07-27
Your customers have already written your copy — it sits in reviews, support tickets, call notes and open-ended survey answers. This page turns that pile into a short list of messaging lines, each backed by a quote you can find, character for character, in the file it came from. AI does the reading and the sorting; it never decides what customers think.
When should you use this — and when should you not?
Use it when you have roughly 15–60 pieces of feedback and a decision waiting on them: which pain to lead with, which page to rewrite, which objection to answer.
Skip it when:
- You have fewer than about five sources. Read them — checking a synthesis costs more.
- You need percentages. "68% of customers said X" from 22 interviews is not a statistic; the sample was chosen, not drawn. Counting how many sources say something is necessary; calling it a share of your customer base is not.
- The decision is already made. Models bend toward the premise you hand them: a mild "I don't think that's right. Are you sure?" made assistants change their answer on 32% (GPT-4) to 86% (Claude 1.3) of questions, and swapping a correct answer for a wrong one was the more likely direction (2023 models, Sharma et al., ICLR 2024). "What do customers hate about onboarding?" pre-loads both the emotion and the answer.
- You owe someone one consensus slide tomorrow. The output here is a distribution and a disagreement list. If the format cannot hold them, the last step undoes the rest.
What do you need before you start?
The decision, written first. One page, no AI: the decision, your current hypothesis, and — the field that does the work — what you would have to see in the data to abandon that hypothesis.
A corpus with addresses. One source per plain-text file; a stable ID that never changes (REV-2291, CALL-07); numbered paragraphs or turns (CALL-07:§14); speaker labels in call notes (C: customer, M: us). Nothing later can be checked without them. Keep a one-row-per-source manifest — id, type, date, segment, customer status — it is what tells you who is missing.
A place you are allowed to put it. This describes what the documents say; it is not legal advice.
- The recording. US federal law turns on one party's consent (18 U.S.C. § 2511(2)(d)); California requires the consent of all parties to a confidential communication (Penal Code § 632). Check every participant's state, not just yours.
- "I deleted the names" is pseudonymisation. The EDPB's identifiability test weighs "all the means reasonably likely to be used" by the controller or another person, including any additional information available to that person (Opinion 28/2024, adopted 17 December 2024); in a call, role plus company plus one incident usually identifies someone. Under California law, inferences drawn "to create a profile about a consumer reflecting the consumer's preferences" are themselves personal information (Civil Code § 1798.140) — including the ones your AI produced.
- The plan decides, not the model. Anthropic's commercial terms say "Anthropic may not train models on Customer Content from Services" (Commercial Terms, effective 17 June 2025); on the consumer product, training happens if you choose to allow it (privacy center, updated 2026-03-16), and if you do, data may be retained "in a de-identified format for up to 5 years in our model training pipelines" (retention notice, updated 2026-07-01). Google tells consumer Gemini users: "Please don't enter confidential information that you wouldn't want a reviewer to see or Google to use to improve our services" (Gemini Apps notice, updated 2026-07-15). Same vendors, different doors.
- Under a research code, more still: the Insights Association Code (September 2025) requires that an AI tool's use, purpose, technique, model type, model accuracy and data source "must be disclosed" (Code of Standards and Ethics).
How do you do it, step by step?
1. Extract, one source per request. Never paste the whole corpus and ask for themes. Position changes what comes back: a relevant document placed in the middle of a 20-document prompt was answered about as well as giving the model no documents at all (2023 models, Liu et al., TACL 2024), and 11 of 13 models advertising 128k+ windows lost over half of their short-context accuracy by 32k tokens (late 2024 – early 2025, NoLiMa).
PROMPT A — extraction (run once per source file)
Below is a single [SOURCE_TYPE: product review / support ticket / call note].
Source ID: [SOURCE_ID]
Task: extract every passage relevant to [DECISION_QUESTION].
Rules:
- Copy each passage VERBATIM. Do not paraphrase, fix grammar, merge sentences
or remove filler words.
- If the source has speaker labels, extract only passages spoken by the
customer (C:), never by us (M:).
- Include the paragraph or turn number the passage came from.
- Do not interpret, summarise, group or rank. Extraction only.
- If nothing here is relevant, output exactly: NO RELEVANT PASSAGES.
Output a pipe-delimited table with exactly these columns:
source_id | segment_ref | speaker | verbatim_quote | context_note
context_note: max 15 words, factual, what was being discussed.
2. Let the model propose labels; you decide them. Batch the extraction table 15–25 rows at a time, ask for candidate labels, then merge synonyms, drop noise and write the definitions yourself. Across 2,407 interview transcripts with 789 hand-coded by trained researchers, the durable finding is not the accuracy gap but that the errors LLMs make are "not random with respect to the characteristics of the interview subjects" (Ashwin, Chhabra & Rao, 2025) — an error correlated with who is speaking is invisible in an accuracy score.
PROMPT B — label candidates (run per batch of 15-25 extracted rows)
Below are verbatim customer passages about [DECISION_QUESTION].
Task: propose descriptive labels.
Rules:
- A label names what the passage is ABOUT in the customer's frame, not in our
product's frame. Bad: "wants feature X". Good: "reconciles two systems by hand".
- Every label must be grounded in at least one passage in THIS batch.
- Do not invent labels to fill categories. Do not produce a balanced list.
- Mark a label SINGLETON if exactly one passage supports it.
- Do not rank and do not say which matters most.
Output pipe-delimited:
label | definition_max_20_words | supporting_row_ids | singleton_yes_no
Then paste your finished list back and have the model tag every row against that list only, with an UNCODED option and a ban on inventing labels. Applying a fixed, human-written codebook is the most reliable job here — across four public datasets human–model agreement matched human–human agreement on most codes, except on the codes where the model was effectively guessing, where the two humans agreed far more with each other than with the model (0.96 against 0.18 on one code; gpt-3.5-turbo, 2023, Chew et al.) — but that covers applying a codebook, not inventing themes. If more than a fifth of rows come back UNCODED, fix the labels.
3. Hunt for what contradicts each theme. Aggregation flattens the minority by default: opinion-summarisation models "amplify the polarity bias, emphasizing the majority opinions while ignoring the minority opinions" (Lei et al., NAACL 2024), and a purpose-built debiasing prompt closed only part of that gap on review data (2024–25 models, per the REFER preprint, 2025).
PROMPT C — disconfirming pass (run per theme, over the full extraction table)
THEME: [THEME_LABEL] — [THEME_DEFINITION]
Below are all extracted passages from the corpus.
Task: find every passage that CONTRADICTS, qualifies or complicates this theme.
Rules:
- Look for: the opposite experience, "it depends" conditions, customers for whom
this is not a problem, customers who say the reverse.
- Also list passages that are AMBIGUOUS with respect to this theme.
- Quote verbatim with source_id and segment_ref.
- If you find nothing, output exactly: NO CONTRADICTING PASSAGES FOUND.
Do not soften the theme instead. Do not manufacture balance.
Output pipe-delimited:
source_id | segment_ref | verbatim_quote | relation (contradicts/qualifies/ambiguous)
4. Verify every quote by string search — by hand. Search for each candidate quote inside its own source file. Not "ask the model whether it is accurate": find the string. Three binary checks — the quote exists verbatim there, the paragraph belongs to the speaker you claim, and the surrounding sentences do not reverse its meaning. Log each result with the date and who checked. Failed quotes are deleted; editing one to match is how a paraphrase becomes a "verbatim".
5. Draft the lines from verified quotes only.
PROMPT D — messaging lines (run over the verified quote table)
Below is a table of VERIFIED customer quotes with ids, labels and source counts.
Task: draft [N] lines for [ASSET: landing page headline / ad copy / email subject],
aimed at [AUDIENCE].
Rules:
- Each line must be supported by at least one quote in the table below.
- Reuse the customer's own words wherever they work as copy; when you rephrase,
keep the customer's frame, not our product vocabulary.
- Do not introduce a benefit, number or claim that no quote supports.
- Flag any line supported by a single source with SINGLE-SOURCE.
Output pipe-delimited:
line | quote_ids | source_ids | single_source_yes_no
Assemble the doc: lines with their chains, themes with their source counts, the contradiction entries, and a block naming the customer segments your corpus does not contain. Then read it against the disconfirming condition from step one.
Two heavier checks, when the decision is expensive. Optional add-ons, not part of the core loop: re-run steps 1–2 with the sources in reverse order and record which themes survived (one that does not is an artifact); and hand-code three to five sources yourself before looking at the AI output, then compare disagreements segment by segment.
What does a good result look like?
A fragment from an illustrative corpus of 34 reviews and 6 call notes for a fictional invoicing tool:
| Theme | Sources | Verified quote | Draft line | Chain |
|---|---|---|---|---|
| Manual reconciliation before month-end | 19 / 40 | "I export both, then sit with two windows open and tick them off by hand" | Stop ticking off two windows by hand | Q-104 → REV-2291 |
| Approval chain stalls on one person | 7 / 40 | "it's fine until Dana's on holiday, then everything just sits there" | Approvals that don't stop when one person does | Q-131 → CALL-07 |
| Wants the old CSV export back | 1 / 40 | "the CSV was ugly but I could fix it in ten seconds" | kept as a labelled singleton, not shipped | Q-088 → REV-2312 |
None of what makes it good is polish: the quotes are ugly enough to be real speech, the counts are of sources rather than percentages, and the single-source theme is still there — labelled, not tidied away.
How do you know the output is good?
- Every quote in the final doc was located by exact string search in its own source file; quotes that could not be found were deleted, not corrected.
- Every messaging line carries a chain — line → quote id → source id — and no line ships without one.
- Every theme in the doc records how many separate sources it came from, and themes supported by a single source are labelled as such instead of dropped.
- Every theme has a contradiction entry — either the contradicting quotes found, or the model's saved verbatim "none found" output.
- The doc names which customer segments are absent from the corpus.
- One line per source records which account or plan it was uploaded to, when, and on what basis.
The checks run against files, not against your impression of the draft.
The find-in-file test is mechanical. Paste the quote into search and look. If it fails because the model quietly re-punctuated the sentence, that is the check working. Published measurements are proxies for your setup rather than your setup itself, and they are not reassuring: tools that did have the source document in front of them still hallucinated in 17–33% of answers, under a definition that includes falsely claiming a source supports a statement (2024 evaluation, Magesh et al., JELS 2025); among 1,053 assistant answers containing a direct quote, journalists judged 12% to have significant accuracy problems (EBU and BBC, October 2025); and quoting from memory, without the source in context at all, fails far more often than that (Dahl et al., 2024).
A second model is not a check. On the SummEdits benchmark, which asks a model to say whether a summary is consistent with its document, most LLMs performed "close to random chance", and the best of them scored 8 points below the estimated human level (2023 models, Laban et al.). Verification here is manual and textual by design.
Read the distribution, not the theme list. A theme carried by 2 of 40 customers and one carried by 31 are different objects, and both belong in the doc with their counts — a line resting on one enthusiastic review is a hypothesis to test, not a positioning statement. Keep the receipt for a search that found nothing, too: an empty contradiction field is indistinguishable from a search you never ran.
What passing does not tell you. The checks confirm that what is in the document is real and traceable. They say nothing about whether you asked the right question or talked to the right customers — which is why the absent-segments block ships with the doc. After that the lines rejoin the normal path: spot-fabricated-stats if a number crept in, brand-voice-doc-for-ai before rewriting them in your voice, ad-copy-variants-with-ai when a line becomes a test.
Where does this usually break?
The consensus nobody voiced. The draft reads smoothly, themes converge, disagreement has evaporated. That is the default behaviour of aggregation — "a summary that only represents the majority opinions will leave the minority opinions unrepresented" (Huang et al., WASSA 2023) — and the standard fix makes it worse: sampling the model repeatedly and taking the majority answer improves majority-label accuracy while making the output match the real spread of disagreement worse (Ni et al., EACL 2026).
Omission, not invention. Everything in the summary is true and something important is missing — the hardest failure to see, because nothing on the page is wrong. Annotators who had each read a whole book criticised every model's summaries of it for leaving out important information — 52% of summaries for the least affected model, 85% for the worst — and a third to two-thirds of summaries lacked mentions of key events (2023–24 models, FABLES, COLM 2024); on a 100-document aggregation task, the human annotator's joint coverage-and-citation score of 56.1 beat the best system's 44.6 (2024 models, Summary of a Haystack). Asking "is this true?" cannot catch it; reading some sources yourself can.
The quote that is too well-spoken. Real customers say "yeah, no, the thing is". A clean, quotable sentence is a candidate for the search test, not for the slide.
Right words, wrong mouth. Your own rep's phrasing arrives as a customer voice, or one reviewer's line is attributed to another. Journalists logged exactly this in AI assistants — a quote whose words were right but whose speaker was wrong, while the cited source had the attribution correct (EBU and BBC, October 2025) — and on both main splits of a literary benchmark, with the full cast list supplied, the open model tested scored 92.8–94.7% on quotes that name their speaker against 85.7–89.1% on quotes that do not (2024 model, Michel et al., NAACL 2025). An unlabelled transcript is nothing but the second kind.
Themes drift toward the model's first draft. Whatever labels came back first tend to survive to the end. Separating label proposal from label decision, and writing the definitions yourself, is what breaks that anchor.
What else do people ask?
How much feedback is enough?
The "twelve interviews is the standard" rule comes from one dataset with a homogeneous population and a narrow topic, whose authors wrote that "it is hard to say how generalizable our findings might be" (Guest, Bunce & Johnson, 2006). A systematic review of 23 empirical tests puts saturation at 9–17 interviews and scopes that to homogeneous populations and narrow objectives (Hennink & Kaiser, 2022); some methodologists reject the framing entirely, arguing that meaning "is generated through interpretation of, not excavated from, data" (Braun & Clarke, 2021). If your customers differ from each other, twelve is not a number you can borrow.
Can I skip this and just ask for the pain points?
You can, and you will get a plausible list with no way to tell which parts came from customers. For a brainstorm, ask away. For a landing page or a paid test, the line needs the chain — the same reflex as ai-draft-pre-publish-check and the scoring habit behind score-ai-output.
Want the next practical guide?
Sources
- FABLES: Evaluating faithfulness and content selection in book-length summarization — Kim et al., COLM 2024accessed 2026-07-27
- SummEdits: Measuring LLM Ability at Factual Reasoning Through the Lens of Summarization — Laban et al., EMNLP 2023accessed 2026-07-27
- Summary of a Haystack — Laban et al., EMNLP 2024accessed 2026-07-27
- Large Legal Fictions: Profiling Legal Hallucinations in Large Language Models — Dahl et al., Journal of Legal Analysis 2024accessed 2026-07-27
- Hallucination-Free? Assessing the Reliability of Leading AI Legal Research Tools — Magesh et al., JELS 2025accessed 2026-07-27
- News Integrity in AI Assistants — EBU and BBC, October 2025accessed 2026-07-27
- Evaluating LLMs for Quotation Attribution in Literary Texts — Michel et al., NAACL 2025accessed 2026-07-27
- Lost in the Middle: How Language Models Use Long Contexts — Liu et al., TACL 2024accessed 2026-07-27
- NoLiMa: Long-Context Evaluation Beyond Literal Matching — Modarressi et al., ICML 2025accessed 2026-07-27
- Can Reasoning Help Large Language Models Capture Human Annotator Disagreement? — Ni et al., EACL 2026accessed 2026-07-27
- Polarity Calibration for Opinion Summarization — Lei et al., NAACL 2024accessed 2026-07-27
- Examining Bias in Opinion Summarisation Through the Perspective of Opinion Diversity — Huang et al., WASSA at ACL 2023accessed 2026-07-27
- REFER: Mitigating Bias in Opinion Summarisation via Frequency Framed Prompting — Huang et al., arXiv preprint 2025accessed 2026-07-27
- Towards Understanding Sycophancy in Language Models — Sharma et al., ICLR 2024accessed 2026-07-27
- Using Large Language Models for Qualitative Analysis can Introduce Serious Bias — Ashwin, Chhabra, Rao, Sociological Methods & Research 2025accessed 2026-07-27
- LLM-Assisted Content Analysis — Chew et al., RTI International, arXiv 2306.14924accessed 2026-07-27
- How Many Interviews Are Enough? — Guest, Bunce, Johnson, Field Methods 2006accessed 2026-07-27
- Sample sizes for saturation in qualitative research — Hennink & Kaiser, Social Science & Medicine 2022accessed 2026-07-27
- To saturate or not to saturate? — Braun & Clarke, Qualitative Research in Sport, Exercise and Health 2021accessed 2026-07-27
- EDPB Opinion 28/2024 on data protection aspects of AI models, adopted 17 December 2024accessed 2026-07-27
- California Civil Code § 1798.140 (CCPA definitions)accessed 2026-07-27
- 18 U.S. Code § 2511 — Interception and disclosure of wire, oral, or electronic communicationsaccessed 2026-07-27
- California Penal Code § 632 — Eavesdropping on or recording confidential communicationsaccessed 2026-07-27
- Anthropic Commercial Terms of Serviceaccessed 2026-07-27
- Is my data used for model training? — Anthropic privacy centeraccessed 2026-07-27
- How long do you store my data? — Anthropic privacy centeraccessed 2026-07-27
- Gemini Apps privacy notice — Google Supportaccessed 2026-07-27
- Insights Association Code of Standards and Ethics, September 2025 revisionaccessed 2026-07-27
Verification
4 log entries
| date | action | result |
|---|---|---|
| 2026-07-27 | research | applied |
| 2026-07-27 | draft | applied |
| 2026-07-27 | correction | applied |
| 2026-07-27 | fact-check | pass-3-0 |