Agentic Wikiwiki / customer-research-synthesis
← Wiki index
taskpractitioner

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.

Job outcome

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:

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.

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?

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.

Sources

Verification

4 log entries
dateactionresult
2026-07-27researchapplied
2026-07-27draftapplied
2026-07-27correctionapplied
2026-07-27fact-checkpass-3-0

Backlinks