CASE STUDY
Freight brokerage
Grounded ops co-pilot for dispatchers and account managers

THE SITUATION
Dispatchers spending a third of their day toggling between systems
A mid-market North American freight brokerage runs the same sequence dozens of times a day. Where is shipment X, which carriers cover lane Y, what is the SLA on customer Z, what did we last quote for this route. The data exists, but it is spread across the TMS, carrier portals, ELD tracking feeds, EDI streams, and a wiki of carrier rate notes only the senior dispatchers really know.
The team had tried generic AI assistants and bounced off them: hallucinated lane rates, stale shipment status, no auditable trail back to the source system. They needed an assistant that lived inside their workflow, grounded in live state, with answers they could defend to a customer on the phone.
BEFORE
Dispatchers toggling five systems to answer one customer call.
AFTER
Dispatchers ask in plain English. The co-pilot answers, grounded and cited, in seconds.
WHAT I BUILT
A grounded chatbot that lives where the team works
I built a Slack-native ops co-pilot, with a second surface inside their TMS. Every answer is produced by a tool-call architecture: the model decides which systems to query, fetches live state, and composes a grounded answer with a citation back to the source. No retrieval over stale snapshots, no hallucinated rates.
Before it touched a real dispatcher, I assembled an evaluation set from two hundred real questions the senior dispatchers had answered in the previous quarter. Every prompt change, every model swap, runs against that set. Releases are gated on it.
Tool-call grounding
The model does not guess. It calls into the TMS, the carrier portal, and the SLA table, and cites the system it pulled from on every answer.
Eval-gated rollouts
Two hundred real dispatcher questions, scored per release. A regression in answer quality blocks the deploy.
Slack-native by design
Lives inside the channels the dispatch team already runs on. Answers thread, escalate to a senior dispatcher, and capture tribal knowledge as it gets used.
THE OUTCOMES
Hours back, every day, across the dispatch floor
Hours
back per dispatcher per day, no more system toggling
Evaluated
releases gated on a curated dispatcher question set, not vibes
Weeks
to ramp a new dispatcher, instead of months
STACK
- Next.js
- Postgres
- Anthropic
- Slack API
- Tool calls
- Evals
