ai ticket triage
08.2026A LangGraph agent that drafts a reply to every support ticket and decides who sees it.

An agent that drafts a reply to each support ticket and decides who sees it: classify the ticket, retrieve similar resolved cases, draft an answer, score that answer, then route it to auto-send, human review or escalation. Every draft is grounded in a case that already worked, and a ticket with no relevant precedent escalates instead of getting an invented answer.
architecture
A LangGraph pipeline that classifies an incoming ticket, retrieves similar resolved cases, drafts an answer, scores it, then routes it to auto-send, human review or escalation. Failures are recorded as state rather than thrown, so a ticket that cannot be classified stops early instead of paying for a draft nobody will use. Retrieval runs semantic and keyword search together over 3,400 previously resolved tickets, and a second model from a different vendor checks each draft against the cases it cited before anything is sent.
how i built it
- Modelled every failure as state on the graph rather than an exception, so a ticket that cannot be classified exits before it costs a draft.
- Ran vector and keyword search together over 3,400 resolved tickets, so each draft follows a case that already worked.
- Made an empty retrieval an escalation path rather than a licence to invent an answer.
- Put a second model from a different vendor in front of send, checking each draft against the cases it cited.
- Hand-labelled the 60-ticket test set with 27% non-English and 5 deliberately adversarial tickets, rather than measuring on the easy ones.
results
- 95% intent accuracy and 100% language accuracy across the 60 hand-labelled tickets, at 0.05 rupees per ticket.
- The vendor-independent checker caught 3 fabricated claims during development.
- Replaying all 60 recorded routes showed the checker on its own scored better than the shipped three-signal blend. That result is published on the repo rather than buried.
- 120 tests, with strict typing and linting in CI.
