Data Analytics · Read + Write

VOC clustering

Augment Rep · High Reason · High

The problem

Customer feedback piles up across reviews, support tickets, NPS comments — but reading 10,000 of them is impossible. Themes go unrecognised; same issues fester.

The AI approach

Embed all comments → cluster by topic → score each cluster's sentiment + business impact → LLM names each theme + writes a one-line summary.

The outcome

~12 themes

10k comments collapse to 12–20 named themes ranked by impact. Product + CX know exactly what to fix this quarter.

Try itInput → Process → Output

Input — raw VOC stream
★★"checkout kept failing my promo code, gave up after 3 tries"
★★★"app is fine but the discount field never works"
★★★★★"love the new search filters! finally"
★"3rd time my voucher won't apply, this is annoying"
★★★★★"search is so much better now"
★★"shipping took 2 weeks, no updates"
★★★"why does the promo code never work??"
★★★★"checkout is fast when it works"
+ 9,847 more · last 30 days
Process — AI pipeline
1Embed each commentReadPredictive
2Cluster (HDBSCAN)ReadPredictive
3Score sentiment + impactReadPredictive
4Name + summarise each clusterWriteGenerative
Output — ranked themes
Click Run demo to cluster comments and name each theme.
Themes · ranked by impact 14 clusters · 9,855 msgs
01Promo / voucher codes failing"discount field never works", "voucher won't apply"2,103 · −0.71
02Slow shipping, no tracking"2 weeks, no updates"1,612 · −0.62
03New search filters loved"search is so much better"1,148 · +0.83
04Checkout speed (when it works)fast but unreliable932 · +0.12
Action call: theme #1 (promo codes) is the biggest single quick-win — 21% of all negative comments converge here.

Three AI types in this use case

SymbolicTopic dedup rules (merge near-duplicate clusters); business-domain glossary; PII redaction before clustering.
PredictiveEmbedding model (sentence-transformers) + HDBSCAN clustering + per-cluster sentiment scoring.
GenerativeLLM names each cluster (e.g. "Slow checkout — promo codes") and writes a one-line summary.

The stack

  • Embeddings · OpenAI ada / Cohere
  • Cluster · HDBSCAN + UMAP
  • Sentiment · DistilBERT fine-tuned
  • Namer · LLM

When this works

  • Volume is high (≥ 5k comments / period)
  • Comments are mostly text (not just star ratings)
  • Product + CX are ready to act on themes

When it fails

  • Multi-language comments without translation — clusters split by language
  • Tiny clusters that are noise — needs min-cluster-size guard
  • Theme drift over time — needs periodic re-clustering, not snapshot