Technical deep dive1 min readPublished Sep 12, 2026
The support ticket router that took us three tries to get right
Our first two attempts at automatic ticket routing made things worse. The third one shipped because we stopped optimizing for accuracy.
The job sounds simple: read an incoming support ticket, decide which team should handle it, and send it there. We have shipped this feature three times. The first two versions were technically more accurate than the one we run today, and both made support worse.
Version one: a single classifier
We trained a model to predict one of nine team labels from the ticket text. Offline accuracy was 89%, which felt good enough to ship. In production, agents started ignoring the routing entirely within two weeks, because the 11% of misroutes were concentrated in the highest-value accounts, not spread evenly.
Version two: confidence thresholds
We added a threshold: anything under 80% confidence went to a human triage queue instead of a team. This fixed the misrouting but created a new bottleneck. The triage queue grew faster than one person could clear it, and low-confidence tickets are disproportionately the confusing, high-effort ones.
Version three: route to a team, not a person, and make the model explain itself
The change that actually worked was smaller than either previous rewrite. We kept the same classifier, but instead of a hard threshold we show the receiving team the model's top two guesses and its stated reason, and let a team lead reassign in one click if it's wrong.
Misroutes now get fixed in minutes by someone already on the team, not queued for a specialist.
We track reassignment rate per team weekly; anything above 15% triggers a model review.
The explanation text turned out to matter more than the label — agents trust a visible reason.
What we would tell someone starting this
Optimize for how wrong decisions get corrected, not just how often the model is right. A system that is wrong 15% of the time but recovers in one click beats one that is wrong 11% of the time and silently erodes trust.
Continue exploring
What we tell customers before turning on an AI agent
Six sentences we make every customer read and confirm before we enable autonomous replies. Most of the value is in what we exclude.
Why we still keep a human in the loop for refunds over $200
Our agent could technically approve these on its own. The data on why we still do not is more interesting than the policy.
The Job Search Has Changed. And We're Optimizing for the Wrong Thing
You can have 10+ years in your field, a strong CV, the right certifications, and a track record of actually delivering results and still never get a chance to speak to a human.
How we cut LLM inference costs by 61% without touching model quality
Prompt caching, request batching and a routing layer did more than any model swap. Here is what we measured, in order.
Explore this topic
AI Agents
Related experts
Bogdan Dan
It doesn't matter how many times you fall, the important thing is not to break the bottle!
Getronics
1 article
Related businesses
Nodesin
Software · Budapest, Hungary
Cloud Workflow Automation with AI Agents
1 article
