{ case study 04 }
Customer Intelligence
Support volume tells you how busy you were, not what is breaking. This clusters conversations into named issues, ranks them by growth against the week before, and keeps the conversations behind every signal one click away.
Runs on a synthetic dataset with the AI provider in mock mode. No sign-in, no real customer data.
{ the build }
Counts down,
causes up.
Problem
Every support tool reports the same four numbers: tickets open, tickets resolved, response time, CSAT. They describe the queue. None of them answers the question a support lead actually has on a Monday, which is what is going wrong now that wasn't going wrong last week.
Tag counts don't answer it either. Tags get assigned by whoever closed the ticket, they drift as the product changes, and a spike in "other" tells you nothing at all. The signal lives in the text of the conversations, where anything counting rows cannot see it.
Approach
Cluster the conversations themselves into named issues, then score each issue's last seven days against the seven before it. Growth is the metric, not volume. A new issue with 53 conversations is worth more of your morning than a steady one with 500.
Then the rule that makes the ranking worth reading: every signal opens onto the conversations that produced it. Each issue carries a confidence label and an evidence control listing the tickets underneath. A ranked list you cannot audit is just a more confident way of guessing, so the evidence rail is not a feature bolted on the side here. It is the thing the ranking rests on.
{ how it runs }
Conversations in,
ranked causes out.
Four stages. Nothing reaches the dashboard without the records that back it.
Ingest & slice
Conversations arrive as tickets tied to customers, channels and plans. Five filter axes and a time range sit over the whole workspace, so the same question can be put to enterprise phone tickets in the last 7 days or to everything in the last 90.
Plan · channel · priority Status · category 7d / 30d / 90d / custom
Cluster into issues
Conversations group into named issues rather than tag buckets: "CSV import fails with unsupported file encoding" instead of a rising count under "data import". The name is the finding, and it is specific enough to hand to an engineer without anyone translating it first.
Text clustering Named issues Per-issue timelines
Rank by growth
Each issue's last 7 days is scored against the 7 before, and the ones that moved surface with the reason attached: new issue, volume spike, slower resolution. Every one carries a confidence label and an evidence control that opens the conversations it was built from.
Week over week Signal types Confidence labels
Act, with a human in it
The same dataset produces knowledge gaps (questions asked hundreds of times with no article behind them), suggested actions, and an executive report. Actions queue for review instead of firing, so the system proposes and a person decides.
Knowledge gaps Action center Executive report
{ what it produces }
Numbers
you can open.
{ more work }