AI systems

Planning 10,000 Deliveries a Week Without Growing the Operations Team

An automated planning system removed a manual bottleneck and helped a logistics business handle ten times the delivery volume.

Founder Track Record
Built by Chris before Pare, presented as founder track record.

Growth was not being limited by demand. It was being limited by the number of routes a small operations team could plan by hand.

The problem

Manual planning became the bottleneck

A London logistics company was handling around 1,000 deliveries a week. Every route was assembled manually in spreadsheets, with planners balancing delivery windows, vehicle capacity and driver availability.

As demand grew, planning became the ceiling on the business. Adding more jobs created far more combinations to consider, so adding planners would only move the bottleneck rather than remove it.

What we did

A planning system built around the existing operation

We built an automated planning system around Google OR-Tools, popular optimisation software that compares many possible route combinations and finds one that satisfies the business rules. It turned the latest deliveries, available drivers and operating constraints into a complete route plan, balancing delivery windows, vehicle capacity, qualifications and driver shifts. GraphHopper supplied realistic journey times between every address.

The system was hosted on AWS and integrated with the client’s existing backend. It saved each completed route, updated the operations records and reporting tools, and dispatched the route automatically to the app drivers already used. Planners could review the completed plan and intervene when needed instead of building every route from scratch.

System architecture How the planning job became a route on a driver’s phone

A scheduled task assembled the routing problem, the optimiser solved it, and the backend delivered the result.

A scheduled task triggers a data model. The operations database supplies jobs and drivers, while GraphHopper supplies directions. The data model passes the problem to Google OR-Tools. The optimiser sends completed routes to the system backend, which automatically dispatches them to the driver app and updates reporting, cloud storage, and the operations database. jobs + drivers Scheduled task Data model Builds the problem Optimiser Google OR-Tools System backend Driver app Operations DB Directions API GraphHopper Reporting dashboard Cloud storage A scheduled task triggers a data model. Jobs and drivers come from the operations database, and GraphHopper supplies directions. Google OR-Tools optimises the routes. The backend automatically dispatches them to the driver app and updates reporting, cloud storage, and the operations database. jobs + drivers Scheduled task Data model Builds the problem Operations DB Directions API GraphHopper Optimiser Google OR-Tools System backend Reporting dashboard Cloud storage Driver app

The planning task gathered live work and driver data, asked GraphHopper for journey times, and built the problem for OR-Tools. The completed routes then passed through the existing backend and were dispatched automatically to the driver app.

What improved

  • 1,000 to 10,000 weekly deliveries handled
  • About 10% of completed routes required planner changes
  • 0 additional operations hires required
The point

The company did not need a larger planning team. It needed routine planning to stop consuming the team it already had.

Where is manual planning limiting your growth?

We build operational systems that increase capacity without automatically increasing headcount.

Talk through the bottleneck