Why drivers override the route the software gives them
iotoms team · October 6, 2026 · 5 min read
A beverage distributor running nine vans out of a single depot rolled out route optimization software the way most do: load the customer list, let the algorithm sequence the stops, print the route, hand it to the driver. Within three weeks, four of the nine drivers had quietly stopped using it. They'd glance at the printed sequence in the morning, then drive their own order anyway — the one they'd been running for two years. The dispatcher kept re-sending the optimized route. The drivers kept ignoring it.
Nobody on the ops side could say exactly why. The software's own numbers looked right: shorter total distance, fewer miles, a route that should have finished earlier. When the ops lead rode along with one of the holdouts to see what was actually happening, the answer took about forty minutes to show up.
What the algorithm couldn't see
The optimized route sent the driver to a stop on the far side of a rail crossing at 8:15 a.m. — the exact ten minutes a freight train blocked that crossing every weekday. The algorithm had no way to know that; it had a road network and distances, not a local timetable of a level crossing nobody had ever told it about. The driver knew it because he'd sat at that crossing for ten minutes, three times a week, for two years, until he learned to hit it at 8:30 instead.
Multiply that one blind spot across a route and the pattern becomes obvious. The software's "shortest path" was mathematically correct and practically wrong in a dozen small ways the driver had learned the hard way: a loading dock that only has parking after 9, a customer who locks the gate during a shift change, a left turn onto a four-lane road that costs more real minutes waiting for a gap than a longer route with no left turn at all. None of that lives in a distance matrix. All of it lives in the driver's head, and none of it gets back to the software unless someone builds a way for it to.
This is the part that's easy to miss from the office: when a driver overrides the route, it's rarely because they don't trust optimization in principle. It's because they've been burned by a specific, repeatable gap between the computed route and the territory they actually drive, and the system gave them no way to flag it except ignoring it. Routing research calls the visibly tangled result of this a "spaghetti route" — stops that double back and criss-cross in a way that looks efficient to an algorithm scoring only distance, and looks obviously wrong to a human looking at the map. Once a driver sees the software produce one spaghetti route, or send them into one timing trap, they stop trusting the next nine good routes it produces too. Trust doesn't degrade gradually here — it breaks on the first bad call and takes a long time to rebuild.
Why "just enforce the route" makes it worse
The beverage distributor's first instinct was to tighten compliance — track GPS against the planned route, flag deviations, have the dispatcher call drivers who went off-script. That fixed nothing, because the drivers weren't wrong. They were avoiding a real ten-minute delay the software didn't know existed. Enforcing the broken route just converts a driver's good judgment into a compliance problem and burns the goodwill that gets drivers to use the system on the days it actually is right.
The fix that worked ran the other direction: give the override a place to go instead of a place to hide. When a driver deviated from the planned sequence, the ops lead started asking why, on the spot, instead of asking them to stop. Three patterns showed up fast — the rail crossing, a gate that opened later than the stop's listed hours, and a customer who'd moved his receiving to the back of the building without telling anyone. Each one was a fact the routing system was missing, not a flaw in the routing math. Once those facts got entered — a time-window adjustment here, a note on the stop there — the next morning's optimized route matched what the driver would have driven anyway, and the override stopped happening on its own.
What actually closes the gap
- Treat every override as a data point, not a discipline issue. A driver going off-script is reporting a bug in the route's assumptions, in the only language the system currently gives them to report it.
- Make deviations visible to whoever maintains the route, not just to a compliance dashboard. The information is useless if it only ever becomes a flag on a report nobody reads.
- Feed confirmed local constraints back into the next day's sequencing — a time window, a access restriction, a turn to avoid — so the same ten-minute mistake doesn't get recomputed every morning.
- Let a route be edited mid-stream without throwing out the rest of the plan. A driver who can't adjust one stop without the whole sequence becoming stale will stop looking at the sequence at all.
- Separate "the algorithm found a shorter path" from "the algorithm found a path a human will actually drive." Distance is one input, not the whole answer — routes also have to survive contact with gates, crossings, parking, and the hours a place is actually open.
iotoms sequences routes from the same workspace data that's already current — confirmed orders, van stock, customer details — and lets a dispatcher adjust a stop's timing or constraints directly, so a driver's hard-won local knowledge becomes part of tomorrow's route instead of a daily workaround nobody ever writes down.