Skip to content
SwankyForge
SwankyForge
All case studies
NLPAutomationOps2 months

Support Ticket Triage + Auto-Routing

A third of support tickets went to the wrong team. Now it is closer to one in thirteen.

Routing accuracy

92.4%

Calibrated multi-label classifier

Was

65.3%

Keyword rule engine

In plain terms

What this actually was.

No jargon in this section. The technical write-up is further down.

What was going wrong

Tickets were sorted by keyword rules that had been patched for years. A third went to the wrong team, and every mistake cost a full handoff before anyone started helping — which was the single biggest reason customers rated support poorly.

What we built

We replaced the rules with a classifier trained on how tickets were actually resolved, and retired the old rule engine rather than adding one more rule to it.

What changed

Correct routing went from 65% to 92%, first replies got faster, and satisfaction rose as a direct consequence. Agents stopped sorting tickets and started resolving them.

Architecture

How it fits together.

Scroll through the stages. Anything marked as added is a component that did not exist before this project.

Ticket intakeOMNICHANNELClassifierMULTI-LABELCalibrationCOST-AWARERouterQUEUE ASSIGNReply draftFROM RESOLVEDAgentRESOLVES
  1. Ticket intake

    omnichannel

    feeds
    Classifier
  2. Classifier

    multi-label

    We added this
    receives from
    Ticket intake
    feeds
    Calibration
  3. Calibration

    cost-aware

    We added this
    receives from
    Classifier
    feeds
    Router · Reply draft
  4. Router

    queue assign

    receives from
    Calibration
    feeds
    Agent
  5. Reply draft

    from resolved

    We added this
    receives from
    Calibration
    feeds
    Agent
  6. Agent

    resolves

    receives from
    Router · Reply draft
The write-up

How it was actually built.

Dataset, approach, measured results and the stack. Written for whoever has to review it.

NLPAutomationOps2 months

Support Ticket Triage + Auto-Routing

Classification, tagging, and routing that keeps queues clean and responses consistent.

Problem

Tickets were routed by keyword rules that had accreted for years. Misroutes cost a full handoff cycle, and first-response time was the top driver of poor CSAT.

Dataset

rows
2.4M tickets
features
128
sources
Helpdesk, chat, email
window
36 months

Approach

  1. 01Trained a multi-label classifier over historical resolved tickets
  2. 02Calibrated probabilities so routing thresholds map to business cost
  3. 03Added intent-based reply suggestions drafted from resolved cases
  4. 04Shipped behind a shadow-mode rollout compared against the rule engine

Metrics

92.4%
routing accuracy
+27.1pp
4.2 min
first response
-38 min
7.6%
misroute rate
-27pp
19%
deflection
self-serve

Business impact

  • CSAT improvement driven directly by faster first response
  • Agents stopped triaging and started resolving
  • Rule engine retired rather than extended again

Tech stack

  • Python
  • FastAPI
  • XGBoost
  • Elasticsearch
  • PostgreSQL
  • Celery
  • Docker

Next

Need a system like this?

Answer six questions and we will tell you whether this shape fits your problem — including when it does not.