Atmora Tech

Corvus Logistics · 2024

Route planning and ETAs for 1,400 Corvus vehicles that planners actually accept

Corvus planned 220 daily routes by hand and quoted ETAs that were often an hour wrong. We paired a solver seeded with the previous day's plan with a gradient-boosted ETA model, and gave drivers an app that queues work offline. Planning fell from four hours to 22 minutes a day.

  • Logistics & Supply Chain
  • 8 months
  • 6 engineers, 2 data scientists, 1 designer
9 minutes
p90 ETA error, down from 70 minutes
18% to 11%
Empty running as a share of fleet kilometres
22 minutes
Daily planning time, down from 4 hours

The challenge

What was wrong

Three planners built 220 routes a day for 1,400 vehicles in a spreadsheet, and quoted customer ETAs that were routinely 70 minutes out, which kept two people on the phone full time. GPS pings drop in tunnels and on rural runs, so any model had to work across 8 to 12 minute gaps. Drivers had already abandoned one app that assumed a live connection, and driver hours rules with 30-minute delivery windows made naive optimiser output unusable on the road.

The approach

What we did

Two stages. A metaheuristic solver runs on a 45-second budget seeded with yesterday's plan, so today's routes stay recognisable to the planner who has to defend them. That seeding costs roughly 2 per cent against the theoretical optimum and is the reason planners use the output instead of overriding it. ETAs come from a gradient-boosted model over 26 months of pings rather than a sequence model, because 8 ms inference and per-feature attribution mattered more than the last point of accuracy.

Seeding the solver with yesterday's plan sounds like a small decision. It is the whole reason my planners trust the output instead of quietly rebuilding it themselves.

Marcus AdeyemiDirector of Network Operations, Corvus Logistics

Stack

What it runs on

  • Python
  • OR-Tools
  • LightGBM
  • FastAPI
  • Flutter
  • SQLite
  • PostGIS
  • Apache Kafka

Start a project

Tell us what is
breaking.

We reply within one working day, and the first call is with an engineer who would actually work on it — not an account manager. If we are not the right studio for the problem, we will say so on that call.

Start a project