One platform replaced a decade of spreadsheets
A national logistics operator ran dispatch on spreadsheets, phone calls, and a system no one fully understood. We built a custom dispatch-and-tracking platform with real-time assignment, a driver app, live status, and automated customer notifications. It integrates with their accounting, on architecture documented for their own team to extend.
- 44%
- Faster dispatch
- 2.1×
- Volume per coordinator
- 1
- Unified system
What they came with
Dispatch ran across a dozen spreadsheets and a WhatsApp group. Which driver had which load was accurate only for as long as someone kept typing it in, so answering a customer asking where their delivery was meant scrolling back through a chat thread. At month end the numbers were rebuilt from exports by hand, and a single correction had to be applied in several places at once.
What the engagement covered
- Real-time dispatch with a live operational view
- Driver mobile app and automated customer updates
- Clean, documented architecture owned by their team
Technical detail
One row per load, locked
Loads, drivers and status sit in one relational model rather than per-user sheets. Assigning a driver is a transaction that locks the load row, so two dispatchers cannot hand the same load to different people.
Status changes are appended
Each transition is written as an event with actor and timestamp instead of overwriting a field. Notifications and the finance reports read the same log, so a correction is visible as a correction rather than quietly replacing history.
Notifications through a Redis queue
Customer messages are sent by background workers with retries and an idempotency key per event, so a redelivered job does not message the same customer twice. If the provider is unavailable the job waits rather than failing the dispatch action behind it.
Live board without polling
Board updates fan out over websockets from Redis pub/sub as events land. The driver app writes to the same API the board reads, so the phone and the screen never hold different versions of a load.
The stack
Frontend
Backend
Data
Infrastructure
- Practice
- Custom Platform
- Sector
- Logistics
- Shape
- Client engagement
- Stack
- Next.js, Node.js, PostgreSQL
Something like this to build?
Tell us what runs today and where it hurts. An engineer reads it and replies.