Ninety drops a day, planned every morning on a whiteboard and dispatched over a group chat. An unglamorous tool for people who use it eight hours a day.
- Client
- Regional produce distributor
- Role
- Full-stack
- Timeline
- Apr – Aug 2024
- Team
- Solo
- Stack
- ReactViteNodePostgreSQLService Workers
The whiteboard worked, until it did not
Every morning the dispatcher planned around ninety drops on a wall-mounted whiteboard, photographed it, and posted the photo to a driver group chat. It worked because the dispatcher had eleven years of route knowledge in her head.
It failed on the days she was not there, when a driver's phone lost signal in the hills, and every time a late order arrived after the photo went out. The company had tried two off-the-shelf routing products; both assumed a warehouse with reliable connectivity and drivers who would learn new software.
Build for eight hours a day, not eight minutes
The dispatch interface is keyboard-first. Every action a dispatcher performs more than twice an hour has a single-key shortcut, and the whole morning plan can be built without touching the mouse. This is not a power-user affordance layered on top; it is the primary interaction, with the mouse as the fallback.
The driver side is a progressive web app that assumes the network is absent. The day's manifest is written to local storage before the driver leaves, mutations queue locally, and the app reconciles whenever signal returns. A driver in a valley with no bars sees exactly the same interface as one in town.
There is a print stylesheet, and it is a real deliverable rather than an afterthought. The dispatcher still wants paper on the wall, and now the paper matches the system.
“Nobody is going to praise an internal routing tool. The goal is that after a week nobody thinks about it at all.”
Marko Malec
The knowledge left her head
Morning planning dropped from roughly two hours to thirty-five minutes, and — more usefully — a second person can now do it. The route knowledge that lived with one dispatcher is now encoded as constraints the tool applies.
Drivers stopped losing manifests. Not because the network improved, but because the app stopped depending on it.