Supply chain · 480 agents
Northwind Logistics
Routed 12,000 tickets/month to the right agent automatically.
Northwind's support routing had become a 400-row spreadsheet nobody could read. Tickets bounced 2-3 times before landing with the right agent. We replaced the matrix in 11 days with an embedding-based routing engine — keeping the hard rules (PII, region) intact and turning everything else into a learned ranking that explains itself.
12,000
Tickets/month auto-routed
−42%
Reassignment rate
11 days
From scope to production
The screen they actually see
Browser extension, live in the agent's Freshdesk.
We replaced the matrix with a similarity-based routing engine trained on 90 days of resolutions. Hard rules (PII, region) stayed enforced; everything else became a learned ranking. Managers got an 'explain this routing' button.
Ticket arrives
Subject: 'Damaged pallet on shipment LH-2241'
Embed + similarity match
Compared against 90 days of resolutions · 7,412 candidates considered
Rank by CSAT × load
Top 3 candidates surfaced, scored 0.69 — 0.88
Aisha B. chosen
Routed once. Explanation stored.
Candidate agents
Requirements & solutions delivered
What they asked for. What we shipped.
Replace the 400-row routing matrix nobody owned
Embedding-based routing engine trained on 90 days of resolutions. The matrix was archived on day 11, not refactored.
Preserve the hard rules (region, PII handling)
Hard rules became constraints, enforced before similarity ranking ever runs. Compliance team signed off pre-launch.
Explain every routing decision for ops auditing
Every routed ticket carries a 'why this agent' tag — match score, load context, CSAT — queryable from manager dashboards.
Onboard new agents in under a week
Engine routes only tickets in a new agent's skill range, ramping confidence gradually. Onboarding fell from 14 days to 5.
Show shadow-mode results before going live
4 days of shadow mode: engine suggested, managers approved. 1,500 tickets reviewed. 92% approval before cutover.
The problem
What it actually looked like.
Northwind's existing routing matrix had 400+ rules and nobody knew which were active. Tickets bounced an average of 2.3 times before landing with the right agent. Onboarding new agents was a multi-week ordeal.
400 rules
Routing matrix rows, mostly stale
2.3×
Average reassignments per ticket
31%
Tickets reassigned at least once
14 days
New-agent onboarding time
Before vs after
Ticket routing: rebuilt.
Before · static matrix
- 1Ticket arrives in the queue
- 2Match against 400-row rules sheet
- 3First-rule match wins (often wrong)
- 4Agent triages, escalates, reassigns
- 5Reassign 2.3× on average before resolution
Nobody knew which rules were active. New agents bounced tickets for weeks.
After · learned routing
- 1Ticket arrives in the queue
- 2Similarity match against 90 days of resolutions
- 3Top-3 agents ranked by CSAT + current load
- 4Routed once · 'why this agent' explanation stored
- 5Resolve
−42% reassignment. First-touch resolution +19%. Onboarding: 14 days → 5.
How we shipped
Day 1 to live in day 11.
- Day 1Step 01
Audit
Read the 400-row matrix end-to-end. Identified the hard rules (PII, region) we'd preserve.
- Day 3Step 02
Backfill training
Trained similarity engine on 90 days of resolved tickets. About 6 hours of compute.
- Day 7Step 03
Shadow mode beta
Engine suggested routes, managers approved. 1,500 tickets reviewed in 4 days.
- Day 11Step 04
Production cutover
Full handover. Old matrix archived. 'Explain this routing' button shipped.
"We had a feature request open with Freshworks for 18 months. streamlineworks built it in 11 days."
Marcus K. · VP Customer Experience, Northwind Logistics
Outcomes
- Reassignment rate dropped from 31% to 18%
- First-touch resolution climbed 19%
- New-agent onboarding time fell from 14 days to 5 days
- Operations team retired the old routing spreadsheet
Solutions used
Stop waiting for Freshworks to ship it.
Tell us the workflow that's costing your team time. We'll have a working prototype in your hands inside two weeks.