Logistics · 6 months

Logistics (under NDA)

Dynamic routing system and driver app that cut kilometers driven and improved on-time without adding fleet.

-17%
Kilometers per route
93%
On-time rate
+15 pts
-2.5h
Daily dispatch hours
+12%
Stops per driver

Problem

The operator served 4,000+ daily stops across five cities with routes planned in spreadsheets and WhatsApp. Dispatchers spent 3 hours every morning building routes; drivers improvised with Waze on the ground. On-time rate fluctuated between 76% and 82%.

Solution

We designed a routing engine with real constraints (time windows, vehicle capacity, restricted zones) on top of a mixed solver (OR-Tools + custom heuristics) and connected it to a real-time mobile driver app. Dispatch stopped manually building routes; the system prioritizes SLA and cost by load type.

Stack

  • TypeScript
  • Python
  • Postgres + PostGIS
  • AWS
  • Flutter

"The best part isn't the direct savings, it's that we no longer depend on the best dispatcher to have a good day."

COO · Logistics operator

Context

The operation had ~120 drivers and was growing by adding enterprise customers that demanded explicit SLAs. Manual dispatch was the bottleneck and cost was rising: every additional driver added quadratic complexity to planning.

Technical decisions

We implemented the solver in Python with OR-Tools, wrapped in a Node (TypeScript) service that orchestrates planning + replanning when deviations occur. PostGIS for geospatial operations. The driver app is Flutter, offline-first, with an event queue that syncs via MQTT when network returns.

We sized the solver to resolve routes of up to 500 stops in under 3 minutes on a normal CPU; for denser zones we use prior clustering and parallel solving.

Lessons learned

The pure solver doesn’t earn dispatcher trust until they can validate and override it. The first iteration, 100% automatic, generated resistance. The second iteration lets the dispatcher move stops between routes and the system re-optimizes; adoption took off.

Want a similar outcome?

Tell us your case and we will design a proposal based on your current metrics.