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.
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 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.
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.
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
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
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
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
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
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.
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
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.
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.
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.
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 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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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 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 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.
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.
Keep reading
Lastmily · Routing
The close
Pick the number we should be measured on.
Then let us measure it before you commit to anything.