What six years of feedback says
The survey pile the quality team could never read end-to-end — scored, split by topic and country, and trended over time. Change the country above and everything recomputes.
Topic health
Average score of the comments that talk about each theme. Click a topic to read its comments.
Topic trends · average score by year
The year-over-year view the team never had: is a theme getting better or quietly rotting? Toggle topics; hover for values.
Table view (average score by topic and year)
The words that carry the score
Every recurring term, grouped with the scores of the comments it appears in — terms shown in their processed form. Click one to read the comments behind it.
Praised — high average, high agreement
Criticised — recurring and low
Read the pile like the tool did
Every response, with what the pipeline decided about it. Click any comment for its x-ray — each processing step, applied to that exact text.
How it worked
The real system read several thousand survey responses collected since 2013 — score, country, date and a free-text comment, typed on shop floors in a dozen languages.
The pipeline
Non-English comments were routed to their own track by language detection; the mining below ran on the English corpus. Click any comment in the Comments view to watch these steps run on that exact text.
Terms that carry the score
The core trick needs no labels and no training: group comments by the terms they share, and look at the statistics of their scores. The average tells you whether a term lives in praise or in complaints; the spread tells you whether people agree.
A low average with a tight spread is a systematic problem, not bad luck. A wide spread is a fight — the same words appear in 0s and 10s — which usually means two different experiences hiding under one term.
Topics without labeled data
- as in productionSeed words, not training setsA handful of anchor words — service, price, precision, part, support… — defined each theme. No one had to label a single comment.
- demo: ported lexiconSemantic similarity does the stretchingEvery term in the corpus was scored against the anchors with WordNet path-similarity and word-vector distance — so “technician”, “hotline” and “callback” all pull toward service without anyone listing them.
- production onlyClusters as a cross-checkComment vectors were also clustered bottom-up — DBSCAN parameter sweeps scored by label entropy, then a k-means pass over the ensemble — to surface recurring situations the seed topics might have missed.
Honest notes
- The spelling was hostileReal comments were typed on shop floors: “relibility”, “servise”, “sparepart” as one word. The production pipeline spell-corrected and re-segmented the whole vocabulary; this demo ships a seeded typo dictionary and fixes the same way.
- What this demo simplifiesThe corpus here is fictional and generated from a fixed seed; topic similarity uses the lexicon the real system learned, rather than live word vectors; the clustering cross-check is described but not re-run.
- What stayed faithfulThe pipeline order, the language gate, the normalisation steps, the n-gram score statistics and their thresholds, and the read-out the quality team got: praised vs criticised terms, by topic, by country, over time.