Fleet transportation — customer workflow automation
Hundreds of vehicles, multiple depots, a booking desk that never slept — and most of it still running on phone calls, email threads, and spreadsheets passed between shifts.
On the customer side, that meant slow quote-to-booking cycles, repeat calls for the same trip details, and no consistent way to handle anything beyond a standard route. A corporate client asking for a multi-stop move with timing constraints would sit in a queue while someone manually checked vehicle availability, driver hours, and pricing.
On the manager side, leadership was flying blind in patches. Utilization lived in one report, on-time performance in another, and customer complaints in a shared inbox nobody owned. Depot managers had local workarounds. HQ had weekly slides that were already stale by the time they were presented.
Feedback was the other leak. Post-trip surveys went out manually — sometimes. Responses came back days later, if at all. By the time someone flagged a recurring issue with a route or a driver, the pattern had already cost them repeat business.
They didn't need a flashy platform. They needed customer workflows that could run without constant hand-holding, and a single place where managers could see what was actually happening across the fleet.
We split the work into two tracks that had to stay connected: customer-facing automation on one side, and managerial visibility on the other.
L1 handled the high-volume, predictable stuff: trip requests with fixed parameters, status lookups, reschedules, and basic availability checks. If a customer already gave origin, destination, date, and load type, the system moved the booking forward without a human retyping it.
L2 picked up everything L1 couldn't safely close: multi-leg routes, contract pricing exceptions, tight delivery windows, and fleet reallocation. It didn't try to replace dispatch judgment — it gathered context, ran checks against vehicle and driver constraints, and handed managers a ready decision, not a blank form.
We built a dashboard around metrics the operations team already cared about, not vanity numbers: OTIF (on-time in-full) by route, depot, and customer segment; fleet utilization; deadhead ratio; quote-to-booking time; first-contact booking completion; and CSAT with complaint recurrence tied back to specific routes and time windows. Every view was meant to answer a decision — reassign capacity, fix a problematic route, coach a depot, or repair a broken handoff.
We automated post-trip feedback collection and routing. Responses were tagged by trip, vehicle class, and depot. Negative signals triggered review queues instead of dying in a spreadsheet, and recurring themes — late arrivals on a corridor, loading delays at a recurring pickup — surfaced weekly without anyone combing through forms.
| Metric | Before | After |
|---|---|---|
| Median quote-to-booking time | 6.2 hrs | 1.4 hrs |
| First-contact booking completion (standard trips) | 41% | 78% |
| OTIF (company-wide rolling 30-day) | 84% | 91% |
| Fleet utilization (active deployment hours) | 62% | 71% |
| Deadhead ratio | 18% | 13% |
| Post-trip survey response rate | 9% | 34% |
| Median time to close recurring complaint themes | 11 days | 3 days |
Booking-desk load dropped enough that the same team could handle roughly 2.3× inquiry volume without adding headcount. Depot leads moved from stale end-of-week slides to using the dashboard daily for morning standups. The bigger shift was cultural: customer issues stopped disappearing into individual inboxes, and feedback actually looped back into scheduling and route planning.
We connected automation to messy source data. Booking flows went live while vehicle availability and driver-hour records were still inconsistent across depots. L1 started creating duplicate holds on the same asset, and dispatch spent two weeks cleaning up conflicts that looked like bugs but were really data hygiene we should have fixed first.
The first dashboard had too many KPIs. Version one showed everything on one page — utilization, OTIF, cost per mile, idle time, NPS, escalation rate, survey volume. Depot managers opened it twice and went back to their spreadsheets. We cut it to six decision-grade metrics before daily usage stuck.
L2 went out before L1 was stable. Sales pressure pushed a "full automation" demo. Complex bookings auto-routed while basic status updates still misfired on edge cases, so customers hit a polished front end with broken back-end handoffs. Escalations spiked for three weeks until we froze L2 and hardened L1.
Survey timing was off at the start. Firing feedback requests immediately on trip completion kept response rates in single digits. Moving the prompt to 2–4 hours post-delivery, with one reminder, changed the curve completely — obvious in hindsight, expensive to learn in production.
We underestimated regional operating rules. One booking-logic path worked for urban depots and failed quietly for intercity routes with different documentation requirements. We had to map depot-specific rules explicitly instead of assuming one national playbook.
- Clean the operational data before you automate the customer layer. Automation multiplies boring errors — duplicate VIN mappings, stale availability, mismatched depot codes — at speed. A two-week audit upfront beats a messy month later.
- Managers don't want more metrics. They want fewer, trusted ones. If a number doesn't change a decision that week, it probably shouldn't be on the home screen.
- Automation tiers need sequencing, not a big-bang launch. L1 earns the right to run L2; stable routine handling builds the trust to let complex cases flow through programmatic checks.
- Feedback loops are a product problem, not a survey problem. Timing, channel, and routing matter as much as the questions.
- Transportation is regional even when the brand is national. Build rule flexibility early or pay for rework when scale hits.