What we built
Mornings in dispatch are a fight. The partner's route data lands somewhere between 6:00 and 6:30, drivers start showing up at 7:00, and the half-hour in between used to be hand-keyed reconciliation that a single typo could blow up.
Excel was the right answer to that. Dispatchers were already in the workbook every morning, and bolting a new desktop app onto an already-on-fire workflow would have been more friction, not less. So instead of replacing it, we made it smarter — a VBA macro layer that drives the whole reconciliation end-to-end, plus a Tesseract OCR pipeline for the days the partner can only send a phone screenshot.
That 30-minute morning crunch, compressed to seconds. The dispatcher drops in the inputs, presses Process, hands the sheets to drivers — and the morning is suddenly free for the calls and exceptions that actually need a human.

A quick primer — waves, dock doors, and DAs
A few terms before the tour. Vans go out in waves — groups of routes that depart together to spread the warehouse load. Each van is assigned a dock door at the building where it loads, and that assignment is what tells a Delivery Associate (a DA) which physical bay to walk to. The route sheet a DA carries lists their stops, but the header tells them which wave they're in and which dock door their van is at. The partner shipping operation owns the route data; the warehouse owns the dock-door assignments. The workbook reconciles the two.
MRA codes show up everywhere — they're the partner provider's internal route IDs, opaque to most of the team but the dispatcher's daily vocabulary. The workbook speaks them natively.
Inside the dashboard
Everything a dispatcher needs to ship the day's routes lives on one panel — load the source files, plan any reshuffles, process the sheets, send the per-driver hand-off message, and search for missing packages. Built inside Excel on purpose: dispatchers already live there, and a separate desktop app would have meant another tool to lose track of when the morning is on fire.
Action Plan — drive time and cargo, not just stop counts
When a driver calls out at 6:45 (or the partner drops more routes than expected), the workbook redistributes stops intelligently — reasoning about each van's drive time and remaining cargo space, not just which DA has the lightest count. The action plan grid keeps those split/combine decisions visible and reviewable before they touch print, so a senior dispatcher can sanity-check the day's reshuffle in seconds instead of trusting it to mental math.
What pressing Process actually does
The Process button is the morning's keystroke. Behind it, the macro runs a discrete pipeline: read the partner-supplied route spreadsheet (or OCR the screenshot if that's all there is), parse the MRA codes, look each one up against the dock-door and wave assignments file, apply any pending action-plan splits or combines, then emit one route sheet per driver — header populated with the DA's name, dock door, wave color, and stop count, body populated with the actual stop list. From "I have two files and a screenshot" to "I have N route sheets ready for print" without a hand-keyed character anywhere along the way.
The morning hand-off, one message per driver
The hand-off goes out in Slack/Chime, one message per driver, with their specific route snippet pasted underneath. The workbook generates both pieces — header with the DA's name and stop count, body with the actual stops — so the dispatcher's job is paste, paste, paste, not retype, retype, retype.
Search across TBAs, bags, and OV
A package surfaces three different ways. A driver finds a stray and needs to know whose route it belongs to. A driver radios that they're missing one. A bag breaks open in the van. The workbook handles all three with one search — by tracking number (TBA), by the bag a package shipped in, or by an overflow (OV) tag for the large stuff that doesn't fit a normal bag. One lookup, three problems solved.
Excel file or phone screenshot — both work
The partner shipping team usually sends a spreadsheet. Sometimes all they send is a phone screenshot. The workbook OCRs it via Tesseract and proceeds as normal — the dispatcher's day doesn't stop because someone upstream couldn't find the export button.
Restore Assignments — the morning safety net
The Restore button is small, but it's there for the worst possible reason: at 6:45 with drivers staging in the parking lot, a Process run that came out wrong needs to be reversible in one click. So the workbook snapshots the dock-door assignments before every Process and exposes a one-button rollback to the last good state. Every irreversible operation in this workbook has an escape hatch — because the morning doesn't forgive a stuck dispatcher.
Settings — every toggle is a real disagreement
The settings panel reads like a list of operational disagreements that got resolved with a checkbox: force smaller route last in combine actions, prefer DA's last name on route sheet, auto-print to color (skip preview). Each toggle represents a dispatcher saying "do it this way, every time" and the tool absorbing it permanently.
Take the force smaller route last toggle. When you merge two thin routes into one combined van, the system used to default to the source MRA going first — but dispatchers found the smaller route belongs at the END so the driver finishes closer to home base. One toggle, one operational reality the workbook now respects forever. Multiply by ten and you get the settings panel — the part of the dashboard that proves the workbook has been used in anger, not just demoed.
Tech stack
- Microsoft Excel — the host. Dispatchers already live here; the workbook meets them where they are
- VBA — drives the whole pipeline end-to-end: file ingest, MRA parsing, reconciliation, action-plan execution, route-sheet emission, print routing
- Tesseract OCR — fallback path for the days the partner shipping team can only send a phone screenshot of the route data
- Windows print APIs — direct-to-color-printer routing when the auto-print to color toggle is on, skipping the Print Preview screen so the morning doesn't pause for a dialog box
Inputs and outputs are exactly what dispatchers had before — partner files in, printed route sheets and Slack/Chime messages out. The workbook compressed the time between them, without adding a new tool, a new login, or anything new to train on.
Every morning, dispatch staff spent 30+ minutes hand-merging route data from their partner shipping operation against image-based attachments. The work was tedious, error-prone, and ran right up against the start-of-day window — a single keying mistake could send a driver the wrong route information and cause cascading effects.
Excel workbook driven end-to-end by a VBA macro: pulls in the partner-supplied route spreadsheets, OCRs the supporting images via Tesseract, reconciles the two against the operation's map, and emits clean per-driver route sheets ready to print or hand off.
Hours of every dispatcher's week reclaimed. Hand-keyed errors essentially eliminated. Drivers get their route sheets in seconds instead of waiting on the morning crunch — the start-of-day window is no longer a bottleneck.
Most of these started with one paragraph.
Send yours and we’ll tell you whether we’re the right fit before either of us spends another minute on it.