Skip to content

50,000 free calls a month, card-free. Get an API key →

Solutions / Fleet Optimisation & Dispatch

Plan the whole shift, not just the stops.

One call plans several vehicles against skills, working windows, capacities and the rest a shift legally needs, with the lorry's own dimensions and ADR profile inside the matrix the plan is built from. A second call says where each vehicle has got to, and stores nothing.

The constraints belong in the solver, not in the dispatcher's head.

Every block below is a shipped endpoint with its limits published: what it enforces, what it only approximates, and what it refuses to certify.

A real optimised five-stop delivery round across London on the MapMap map, with a card listing the solver's visit order and cumulative times
Constraints

Skills, windows and capacities in one call

Multi-vehicle optimisation assigns work against the things that actually decide it. A job only ever goes to a vehicle whose declared skills cover it, capacities are multidimensional, every stop can carry its own arrival window, and a vehicle can carry a daily driving limit and its own cost model so the plan is cost-optimal rather than merely quick. Two hundred unique locations per request, 1,500 km between the furthest two: published numbers, not a sales call.

Optimisation docs
Rest

The break the shift needs, placed by the solver

Give a vehicle a working window and ask for EU drivers' hours, and a mandatory rest is generated for it: 45 minutes after at most four and a half hours' driving, the Regulation (EC) No 561/2006 defaults, or your own figures. It is a single-shift approximation and says so. No split breaks, no daily or weekly rest, so post-validate the plan you get back.

Diagram of a route line diverting around a low bridge arch, then around a tunnel cross-section marked with a restricted clearance zone
Enforced, not penalised

The lorry's dimensions are in the plan's own matrix

Optimise with truck costing and an ADR profile and the travel-time matrix underneath is computed by our routing engine with those dimensional and hazmat constraints applied, so the plan never assumes a leg a lorry cannot legally drive. The solver never routes for itself: it is handed explicit matrices. One request means one matrix and one costing, so a fleet whose vehicles need genuinely different road access wants one request per costing.

Truck and ADR routing
A four-by-four travel-time matrix table: Stockport, Bury, Altrincham and Rochdale against four Manchester destinations, shaded by minutes from one API call
Dispatch

Who takes the job, and in what order

A travel-time matrix answers which vehicle reaches the pickup soonest: up to a hundred origins against a hundred destinations in one call, real driving minutes on the road network rather than crow-flies. When it is one vehicle and a handful of drops, the order-stops tool puts them in an optimal order, out and back to the depot if you ask for a round trip, and it carries a truck profile through for a restriction-aware order.

A Manchester delivery leg with a cafe marked directly on the route and a card showing its real detour cost: zero minutes
Along the route

Detours priced in minutes, against your own places

Along-route search runs over the places your deployment loaded rather than the world's, so the answers are your depots, your yards and your customers, each with its real engine-computed detour. Fuel is ranked cheapest first from the statutory open-price feeds in the UK, France and Germany, flagged whenever a price is not verifiably fresher than 24 hours. Charge points are ranked most powerful first, with the operators a deployment covers named on every answer.

the planner, inside your own network
$ docker compose up -d --build
→ tiles · geocoder · router · guidance · territories
→ 0 external map dependencies
Self-hosted

The planner runs inside your own network

Docker distribution with the solver as a service in the compose file, signed territory packages, and a procurement pack carrying an SBOM and a security questionnaire. Your depots, your customers and your rounds stay on your own infrastructure, and nothing meters you per stop.

The day as it runs

Follow the shift without becoming somebody's location data

One call answers where a vehicle is against its plan: the position snapped onto the route, how far along it is, the distance and time still to run recomputed on the real road network, an off-route flag with the measured distance, and an arrival time that says how much traffic data stands behind it. Send a handful of recent fixes with it and the position is map-matched to the road the vehicle is actually on rather than guessed from a single reading, and the response always names which of the two you got. Nothing is kept: the plan and the position arrive with the request and are gone when it is answered, so you keep the history and we do the geometry.

What we do and do not store
Known limit

The optimiser runs as a configurable solver sidecar, a request is capped at 200 unique locations with 1,500 km between its furthest two points, and the plan carries no route geometry, so the committed legs are fetched from the routing endpoint afterwards. The drivers' hours option places one mid-shift rest and models neither split breaks nor daily and weekly rest. A successful plan is not a compliance certificate: what it asserts is that your declared dimensions and tunnel code shaped the matrix it was built from, never that a journey is lawful.

Agent-first

Send us a week of real rounds.

Depots, vehicle profiles and the constraints your dispatchers currently carry in their heads. Our AI agents will build the planner against your own rounds, so what you judge is your fleet's day rather than a demo dataset.