Lastmily · Platform · Routing AI

Routing AI

Routed for the street,
not for the map.

Where the van can actually park, which entrance works, which ramp is on the side road and how long this door really takes – learned from your own deliveries and planned against. Five routing models, one engine underneath.

Real world routing

The map has the address. The street has everything else.

An address file says where a building is. It does not say which side the ramp is on, that the entrance is down an alley a truck cannot enter, that one door takes minutes and the one beside it takes seconds, or where you can leave the van while you walk four of them.

Every routing engine can draw a shorter line between coordinates. The difference between a line and a round is everything the coordinates leave out – and almost all of it is already in your own delivery history, unread.

So the engine reads it. The corner the driver already stops at, the entrance he corrected at the door, the one-way he walks rather than drives, the fifteen metres with a trolley that save a lap of the block. That knowledge is captured in the app or over the API and becomes an input to the plan, not a note in a WhatsApp group.

The clearest case is parking. A round optimised door to door puts a vehicle stop at every single door, and in a dense street that is a circuit of the block for each one. Planned as driving plus walking, with a maximum walking distance you set per courier, the van parks once and the driver walks the cluster.

Door by door · schematicA lap per doorno film of this one
a lap for every doorpark once

A van stop at every single door

The one beat in the keynote that is a still rather than a film, so this is a schematic: the engine treats each door as a vehicle stop, and the round becomes a lap of the block per delivery.

Park and walk · filmed 11 · 46 mparking stops · longest walk

Park once, walk the doors

Parking points and walked doorsteps instead of a vehicle stop at every door. The circuits of the block disappear, and no door is more than a short walk from where the van is standing.

Every film on this page is a solved round, not a drawing. The kilometres and the times are modelled from the geometry on screen – they are what these rounds cost, not a result measured in your operation. From the Parcel+Post Expo 2026 keynote at the Last Mile Hub, ExCeL London.

up to 10%from driving plus walking in densely clustered areas, against an already optimised route – Lastmily estimate
≈20sto solve 700 stops – a product decision, not a benchmark

Vehicle type is part of the same argument. A bike parks in seconds and slips through traffic; a van does not; a large truck cannot take the narrow road at all, and at some addresses it cannot unload once it gets there. Those are different routes, not the same route driven by different people.

Accessibility is therefore a routing constraint rather than an exception handled at the door – which is the difference between a plan that works in a city centre and one that works on a spreadsheet.

The engine is judged on the round that gets driven, on the street it is actually driven in. How much of that street it is allowed to act on is the next section.

Lastmily · Routing

The models

Five ways to build a round. One engine underneath.

What changes between them is not the solver. It is how much the engine is allowed to decide: nothing but the order, the areas you drew, the areas it drew, or the whole assignment.

01 · SINGLE DRIVER

Sequence one round, assign nothing

The engine puts one courier’s stops in order and goes no further. Nothing is allocated and nothing is taken off anybody, which is why it is usually how a rollout starts and how a small team stays.

Best for: Small teams · pilots · the first month of a rollout

02 · REGIONAL

The zones you drew yourself

Shipments are assigned by static regions an administrator defines. The regions may overlap – and where they do, the engine treats the overlap as a union and decides which round the stop belongs to, instead of refusing it. Local knowledge is respected; the lines need maintaining.

Best for: Big & bulky · fixed crews · strong local knowledge

03 · DYNAMIC REGIONSAI

The zones drawn from your history

The engine builds the regions itself, from volume forecasts and your own delivery record. You get the predictability and the sorting efficiency of fixed areas without having drawn them, and the areas move when the work moves.

Best for: Hyperlocal depots · predictable sorting · stable week to week

04 · FREE ROUTING

Every stop to whichever courier is cheapest

No regions at all. The engine assigns the whole day across the couriers you have and sequences each round for efficiency. The rounds interleave, because nothing holds them apart – and the number of couriers can change every morning.

Best for: Express commerce · long rural rounds · variable crew size

05 · PREFERENCE-BASED FREEAI

Free optimisation, on ground he knows

The same free assignment, with each courier’s familiar ground weighted into the cost. He keeps the streets and the buildings he already knows; the engine still moves a stop across when the day is genuinely cheaper that way.

Best for: Hyperlocal & regional setups · where adherence is the number that matters

How to read the listGoing down it, the engine is handed more of the decision: the order only, then the order inside areas you drew, then the areas as well, then the assignment, then the assignment weighted by what each driver already knows. Nothing else about the solver changes.
The model is a property of the plan, not of the companyRun dynamic regions in the city and free routing on the long rural round, in the same operation, on the same day. A rollout usually starts on single driver, moves to regional where crews are fixed, to dynamic regions once there are enough weeks of history to draw them from, and to preference-based free where adherence is the number being watched.

See the models on your own stops.

Send us one ordinary day of deliveries and we will build it every way that applies to your operation, and show you what each one costs the others.

Lastmily · Routing

Targets

Two things to optimise for. You pick which.

Everything else on this page is a constraint. These two are the objective.

Time

Minimise working hours, or maximise deliveries per hour. Built on historical and real-time traffic, with more than 24 time slices a day of average speed per road – so a round planned for 07:00 and the same round planned for 16:00 are not the same round.

Fuel and distance

Minimise kilometres, and with them fuel. The shorter line is not always the faster one, and on a long rural round the difference between the two objectives is the whole argument.

While it solves it reads real-time traffic for the hour ahead, historical patterns beyond it, and the live position and progress of every courier already on the road – so a re-solve at eleven is solved against where the day actually is.

Twenty seconds for 700 stops is a product decision, not a benchmark: at twenty seconds a dispatcher tries several versions before committing. At several minutes she runs it once and lives with the answer.

Lastmily · Routing

Constraints

What the engine solves against.

A constraint is a fact about your operation. A capability, in the next section, is something the engine does with it. These are solved together in one pass – not applied one after another as filters, where each one breaks the previous one.

Resources

Couriers

  • Working hours
  • Departure times
  • Start & end locations
  • Breaks
  • Max walking distance
  • Area of responsibility
  • Driver skills
  • Live tracking accuracy, 1 minute to 3 hours
  • His own history, and the order he works in
  • “I want to end here today”

Vehicles

  • Type: car, van, bike, truck
  • Roads that type may take
  • Parking time per type
  • Max volume
  • Max load
  • Truck dimensions
  • Home depot
  • Fuel type, including electric
  • ADR
  • Cold chain

Depots & projects

  • Number of depots and their locations
  • Depot-specific constraints
  • Per-project resources
  • Per-project constraints
  • Per-project configuration

Shipments

The shipment

  • Type: pickup, delivery, express, same day through depot
  • Priority
  • Volume, dimensions and weight
  • The oblong parcel that will not fit on the bike
  • COD amount
  • Parcel count at the stop
  • Door, PUDO or locker

Time and duration

  • Delivery and pickup time windows
  • Conflicting or misaligned windows
  • Duration on site
  • Opening hours that do not match the file

Access and rules

  • Accessibility: where a large vehicle cannot unload
  • Entrance and floor grouping
  • Automation rules on shipment data
  • High-value COD to named couriers
  • Durations and windows by area or by name

The street

The street

  • Live traffic
  • Historical speed per road
  • One-way streets
  • The cross, the corner, the park point
  • Toll roads
  • Service areas & postcodes
  • Remote & hard-to-reach areas

All of it is solved in one pass. A stop that breaks the cold chain is not a late fix; it is a different route – and the same is true of a capacity break, a skill the driver does not have, and a window that closed while the van was two streets away.

Lastmily · Routing

Capabilities

What the engine does with all that.

Sixteen named behaviours, in the order you meet them: set before the day starts, used while it runs, or learned from what you have already done. Every one of them can be off – and the last group is the reason the next section exists.

Planned before the day starts

Coherent routes

Contiguity constraints, exposed as one flag. With it on, rounds stay inside distinct areas and stop overlapping each other: slightly longer routes, and much easier to sort, load and supervise at the hub, which is usually the trade an operation wants. Note the difference from model 02 – your regions may overlap; with Coherent on, the rounds drawn inside them do not.

Driving and walking together

One round, both modes, with a maximum walking distance you set per courier. The engine picks the parking points, so the driver does not lap the block for each door.

Vehicle-specific routing

Different roads, different parking times, different access per vehicle type – a bike, a van and a large truck get genuinely different plans for the same stops.

Multi-depot rounds

A courier can call at more than one depot inside a round, so loading is a decision the plan makes rather than a limit it works around.

Elastic time windows

Problem data normalised instead of rejected: a courier who finishes at 14:00 and deliveries that open at 17:00, two distant stops sharing one narrow window, constraints that are simply infeasible. The engine produces a sane round and says what it relaxed.

Load balancing

Work distributed evenly across couriers and vehicles by capacity, workload and proximity, so one round does not finish at 15:00 while another runs to 20:00.

Automation rules

Configure the engine against your own shipment data: high-value COD only to named couriers, a fixed duration for a particular chain, a specific window for a specific area.

Tolls and area avoidance

Routes configured to avoid toll roads or defined areas, which on a line-haul-heavy operation is a direct line in the cost model.

While the day is running

Rerouting during the day

New pickups, new deliveries, a priority change, an incident, a van down – re-solved against the remaining work, the live positions and the progress already made. A dispatcher can also trigger it by hand.

Respect previous order

Rerouting normally rewrites the sequence, which breaks the ETAs your recipients were given and the order the van was loaded in. With this on, the engine keeps the original sequence as far as it can and absorbs the new work around it – minutes of deviation instead of a new round.

Courier delay handling

A courier leaves 90 minutes late, or goes offline for an hour in a basement. A rigid time window model fails at that point. The plan is adjusted against what is left of the day rather than against what the morning assumed.

Incident-driven rerouting

A major traffic incident reroutes the affected rounds automatically, to protect the couriers first and the schedule second.

Autonomous express routing

Continuous optimisation for on-demand and express work: the system assigns new points, handles waiting and preparation time, changes assignments and normalises windows on its own, inside the policy you set.

Reload inside the shift

More than one round in a working day when capacity says so – a bike courier whose load runs out at lunchtime goes back for another one instead of stopping.

Learned from your own data

Predicted collections

Where and when a collection is likely, learned from your history and built into the morning plan. The reactive van drives back across the city; the predicted one is already near.

Knowledge digitalisation

What the courier knows – this recipient is in between two and four, the real entrance is round the back – captured in the app or over the API, and used by the engine rather than remembered by one person.

The Coherent flag is the one worth arguing about: it deliberately gives up optimality to make the day easier to run. That trade is yours to make, not ours.

Lastmily · Routing

Adoption

The product is not the plan. It is what happens in the street.

Not the whole argument for the engine, but the one most operations have never had made to them: a route the driver ignores is not a saving, it is a variance line.

A route is a proposal, not an instruction. The driver reads it in the cab, compares it against a street he knows better than the map does, and drives something else. In B2C, typical route adherence is around 35% – an industry baseline, not a Lastmily result. That is not a discipline problem – it is the engine being wrong about the street more often than it is right.

So the saving on the screen is fiction. The plan claims a number, the driver drives a different route, and the operation books the difference as variance. Every month, in every operation that measures it.

The fix is not more optimisation. It is optimising for something else: the route the driver will actually drive. The areas he already works, the corner he already stops at, the hour this door actually opens – and planning inside them. That is what preference-based free routing and dynamic regions are for.

A slightly longer route that gets driven beats a shorter one that gets ignored. The films below are two ordinary mornings, solved rather than averaged.

The problem · filmed 19.5 · 26.4 kmplanned · driven

What gets delivered is the executed route, not the plan

One driver, one ordinary morning. He kept almost all of the planned order – and the two moves he made cost the round nearly seven kilometres. This is what route adherence looks like when you draw it instead of averaging it.

The habit 6 roundsconsecutive mornings

Six mornings in the same small area

Grey is what the plan sent him. Cyan is what he actually drove. The same shape, every morning, for six consecutive days.

The answer +1.5%above the best found

The areas, learned from his own rounds

Thousands of sequences score within a couple of per cent of each other, so the engine picks the one he was going to drive anyway – and pays 1.5% for a round that gets driven instead of argued with.

Same provenance as the film above: a solved round, not a drawing.

≈35%typical route adherence in B2C – industry baseline, not a Lastmily result
+1.5%above the best sequence found, for the one the driver will follow

Thirty-five per cent is the number this section exists to move, and it is a figure for the industry rather than a result we are claiming. We do not publish an after number, because the honest one is yours: adherence is measurable on your own rounds from the first week.

It also depends on the work. Adherence is the dominant argument in hyperlocal B2C, where the driver knows the street better than any file does. On a big and bulky round of a dozen stops, or an express job that did not exist an hour ago, other constraints bind harder.

Lastmily · Routing

The learned models

Six models, reading the same record the rest of the platform writes.

Adoption, above, is what two of these buy you. Here is the whole set. They are not a layer beside the solver – they are inputs to it, and each one changes something the engine would otherwise have had to assume.

Five of them are below. The sixth is real world routing – the entrance, the ramp, the one-way and the park point – which is the argument this page opens with rather than a footnote down here.

AI · routingschematic
0811141720ticked in a formno answerno answerdoor opened12:00 – 14:00

Preferable time windows

When this door actually opens, inferred from what happened at it before – not from what the recipient once ticked in a form. The window the engine plans against is the one with the highest chance of a first-attempt success.

Reads the attempt history at the address. Changes which window the stop is planned into.

AI · routingschematic
Driver 4Driver 7ten days of each driver’s own history

Area-point matching

Which stop belongs to which area, and which driver already works it. Each driver’s own history replayed, the coherent areas inside it learned, and the round planned inside them – in his order.

Reads ten days per driver. Changes who gets the stop, before sequencing begins.

AI · routingschematic
one flat average4F, no liftgatedthe stops on one round

Service time prediction

How long this stop will actually take: the building, the floor, the entrance, the parcel count, the hour. A round built on one flat average is wrong at every stop and right on average.

Reads the recorded dwell time at that address. Changes how many stops fit in the day.

AI · routingschematic
drawn from your history

Territory generation – the model behind dynamic regions

The areas drawn from your own delivery history rather than from a postcode map: coherent, stable week to week, and the ones drivers actually follow.

Reads your whole delivery history. Changes the areas themselves – and they move when the work moves.

AI · routingschematic
09:0011:0013:00reactiverequested 11:00drove back · collected 12:40predictedcollected 11:00, in sequence

Predicted collections

A pickup expected at 11:00. The reactive van drives all the way back; the predicted one is already there. The round is built for the work that is coming, not only the work that is in.

Reads the pickup pattern at that shipper. Changes the round before the request arrives.

Two of them were filmed for the keynote: the hour a door actually opens, and the collection that has not been requested yet.

Preferable time windows · filmed

The pain 15:00 · closedarrival · state

John, at three in the afternoon

Nothing in the address file says the shop shuts at two. The van arrives at 15:00 and the delivery fails.

The pain 10:56 · deliveredarrival · state

What the courier actually does

He goes off the planned sequence and delivers to John in the morning, because he knows. The plan was wrong and the round was right – and nothing in the system learned anything from it.

The fix 12:00 – 14:00most likely to deliver

Thirteen records, one window

Every delivery at that address left data behind. The records fall away one by one and the window with the highest chance of a first-attempt success resolves out of them: 12:00 to 14:00.

The fix 13:02 · 14:00arrival · shop closes

John gets his slot

Booked before the shop shuts, on a round with no loops in it. The knowledge that was in one courier’s head is now in the plan.

Predicted collections · filmed

The pain Back to Amid-round

The pickup lands behind him

A to B to C to D, and the call comes in from A. The round turns around and drives back across everything it has already done.

The fix +0.35 kmcost of carrying it

The round ends where the call will come from

The recurring collection is predicted into the morning plan instead of breaking the afternoon. Carrying it costs 0.35 km; reacting to it cost the round.

Same provenance as the film above: a solved round, not a drawing.

Lastmily · Last Mile AI

By industry

The same engine. Different things bind.

Everything above applies to all three. What changes is which model fits and which constraints actually decide the day – so here is the same engine, read three ways. These are not three products.

Hyperlocal B2C

Work: dense residential rounds where the driver knows the street better than the file does.
Models: dynamic regions, preference-based free.
Binds: adherence, driver areas, park and walk, entrance and floor grouping, preferable windows.
Coherent: almost always on – the hub has to sort it.

Big & bulky

Work: few stops, long dwell times and vehicles that cannot get everywhere.
Models: regional with overlapping unions, single driver.
Binds: accessibility, truck dimensions, service time per stop and per vehicle, booked windows, load balancing.
Coherent: rarely – there are too few stops for it to bind.

Express commerce

Work: jobs that did not exist an hour ago.
Models: free routing, preference-based free.
Binds: continuous re-solving, waiting and preparation time, respect previous order, predicted collections, reload, live tracking accuracy at the one-minute end.
Coherent: off – the work arrives where it arrives.

Why the difference mattersMuch of this page is about learning a driver’s patterns, and that argument is strongest in hyperlocal work. On a big and bulky round the same models are doing something else entirely – predicting how long a large multi-pallet vehicle will take at a particular dock, and whether it can get in at all.
One configuration per projectProjects carry their own resources, constraints and configuration, so an operation running all three does not have to choose. The same depot can run a hyperlocal project on dynamic regions and an express project on free routing, on the same day.

Tell us which of the three you are.

We will show you the models that apply, the constraints that will actually bind, and the number we think you should measure us on.

Lastmily · Routing

The boundaries

What this engine will not do.

We would rather you heard these here than found them out later.

It will not give you a saving figure firstNot in the walkthrough, not in the proposal. Every number on this site says where it came from, and none of them is a forecast for your operation. We baseline the one you picked, on your own history, before anybody signs anything.
It will not quietly break a hard constraintA solver that gets a better number by treating cold chain or ADR as a preference is not faster, it is wrong. When two stops cannot go together, the engine says which rule bound and the dispatcher decides.
Coherent routes are not freeTurning the flag on costs efficiency, by design. We will show you what it costs on your own day rather than telling you it is nothing.
It will not make you redraw your territories to startRegional routing takes the areas you already have on day one, overlaps and all. Dynamic regions are something you turn on when you want to see what your own history would have drawn – side by side with what you drew, on the same day of work.
It will not claim an adherence number it has not measured on your rounds≈35% is where B2C typically sits. What it becomes is a measurement, not a promise, and it is visible in the control tower from the first week rather than at the end of the pilot.

Keep reading

Lastmily · Routing

The close

Pick the number we should be measured on.

Then let us measure it before you commit to anything.

Lastmily