# Examples — User Feedback Synthesis Agent

## Clear recurring theme → reported with frequency and quotes

A strong, widespread theme appears across many items. The agent reports it with an honest count and representative quotes.

**Input**

```
Corpus: 400 items (tickets+reviews). 86 mention slow load times on the dashboard.
```

**Output**

```
{
  "corpus": { "total_items": 400, "deduped": 372, "sources": ["tickets","reviews"] },
  "themes": [
    {
      "theme": "Dashboard load times are slow, especially with large datasets",
      "count": 86,
      "frequency": "86/372 (23%)",
      "sentiment": "negative",
      "confidence": "high",
      "quotes": ["takes 15+ seconds to load my main dashboard every morning", "unusable once I have more than a few thousand rows"],
      "note": ""
    }
  ],
  "counter_signal": ["A few power users on the new infra reported fast loads — possible rollout difference"],
  "not_captured": "",
  "caveats": ["Tickets over-represent users who hit problems; absolute prevalence may differ from the full base"]
}
```

**Note:** A high-confidence theme: 86 of 372 deduped items (23%), with real representative quotes and a clear frequency. Note it still surfaces counter-signal (power users with fast loads) and a sampling caveat rather than overstating prevalence.

## Small-sample signal → reported but flagged low-confidence

A potentially interesting issue appears only a few times. The agent reports it honestly without elevating it to a top issue.

**Input**

```
Corpus: 400 items. 3 mention a specific export-to-CSV encoding bug.
```

**Output**

```
{
  "corpus": { "total_items": 400, "deduped": 372, "sources": ["tickets","reviews"] },
  "themes": [
    {
      "theme": "CSV export has a character-encoding issue for non-Latin names",
      "count": 3,
      "frequency": "3/372 (0.8%)",
      "sentiment": "negative",
      "confidence": "low",
      "quotes": ["exported CSV shows garbled characters for my customers' names"],
      "note": "Small sample (3 items) — could be a real narrow bug or noise. Worth a quick check, not a top priority on this evidence alone."
    }
  ],
  "counter_signal": [],
  "not_captured": "Several one-off requests appeared once each and are not asserted as themes",
  "caveats": ["3 items is too few to estimate prevalence; treat as a lead to investigate, not a validated theme"]
}
```

**Note:** The honesty case: only 3 mentions. The agent still surfaces it (it could be a real narrow bug) but explicitly marks it low-confidence with its tiny frequency, and refuses to dress it up as a major theme. This is what stops a vocal-minority issue from hijacking a roadmap.

## Tempting but unsupported causal claim → refuse to fabricate

The team hopes the feedback explains a churn spike. The feedback doesn't actually say that, so the agent declines to assert causation.

**Input**

```
Corpus: 400 items. Some negative comments about a recent redesign. Prompt context: 'churn went up last month — does the feedback explain it?'
```

**Output**

```
{
  "corpus": { "total_items": 400, "deduped": 372, "sources": ["tickets","reviews","survey"] },
  "themes": [
    {
      "theme": "Mixed reactions to the navigation redesign",
      "count": 41,
      "frequency": "41/372 (11%)",
      "sentiment": "mixed",
      "confidence": "medium",
      "quotes": ["the new nav took me a while to get used to", "actually prefer the new layout once I found things"],
      "note": "Sentiment is genuinely mixed — roughly half negative, half adapting/positive"
    }
  ],
  "counter_signal": ["Several users explicitly said they liked the redesign"],
  "not_captured": "",
  "caveats": ["This feedback does NOT establish that the redesign caused the churn increase. The corpus shows redesign reactions are mixed; no item links a cancellation to the redesign. A causal claim would require churn-cohort analysis, not feedback text alone."]
}
```

**Note:** The defining defensive case: there's a strong pull to hand the team the tidy story 'the redesign caused the churn.' The agent reports the redesign theme honestly as mixed, surfaces the positive counter-signal, and explicitly states the feedback can't establish causation — pointing to the analysis that actually could. It refuses to manufacture a satisfying but unsupported narrative.
