LogisticsAI-Driven Disruptions & Innovations
AI-driven micro-fulfilment in logistics: making a small node pay
AI-driven micro-fulfilment is the use of demand, assortment and sourcing models to make a small close-to-demand fulfilment node profitable. In logistics the decisive model is rarely the picking robot: it is the pair that decides which few thousand SKUs live in the node, and which orders that node is allowed to take.

Key takeaways
- A micro-fulfilment centre is a small fulfilment node — typically a few thousand square feet inside, behind or beside a store — holding a narrow assortment for same-day delivery and collection. Its defining constraint is not floor space but the number of SKUs it can hold, which is why assortment is the first AI decision, not the last.
- Single-node fill rate is the number that decides whether a node pays. Every order the node cannot complete on its own splits into a second source, and a split order carries a second pick, a second pack and usually a second delivery leg — so fill rate moves cost per delivered order faster than any pick-rate improvement.
- Pick automation raises the ceiling; it does not fix the assortment. Ocado publishes up to 300 units per hour for its in-store fulfilment software and as much as a 50% labour reduction on robotic pick — real numbers that still leave the split premium untouched if the node holds the wrong lines.
- The promise shown at checkout is part of the fulfilment system, not the marketing. Walmart describes its 30-minute-or-less service as running on an algorithm using basket size, driver availability and distance from the store — a sourcing decision made at order capture, not at dispatch.
- Most operators are on the first two rungs: a dedicated pick face exists, but nobody can state the node's fill rate or its cost per delivered order. Instrumenting one node — fill, split, UPH, CPO, by daypart — is a quarter of work and it changes which investment comes next.
Abbreviations used on this page
- MFC
- Micro-fulfilment centre — a small fulfilment node sited close to demand
- CFC
- Customer fulfilment centre — the large, fully automated grocery shed
- WMS
- Warehouse management system
- OMS
- Order management system
- DOM
- Distributed order management — the engine that picks which node fulfils an order
- AS/RS
- Automated storage and retrieval system
- GTP
- Goods-to-person picking — stock is brought to a stationary picker
- SKU
- Stock-keeping unit
- UPH
- Units picked per hour — the node's pick-rate measure
- CPO
- Cost per delivered order, fully loaded
- BOPIS
- Buy online, pick up in store — collection rather than delivery
- TMS
- Transport management system
Free · 8 questions · ~3 minutes
Score one micro-fulfilment node
Eight questions, one at a time, about three minutes — and answer them about a single node rather than about the network, because that is the level at which micro-fulfilment either works or does not. We build your personalised node report: your rung on the ladder, your score on each of the four dimensions, and the specific constraint standing between this node and the next rung.
0 of 8 answered
Pick an option to continue
Report ready
Your personalised node report is ready
Tell us where to send it. Your rung appears on screen straight away, and the full report — dimension scores, the fill-rate and cost questions to put to your own data this week, and a 90-day plan for your weakest dimension — arrives in your inbox.
Your result
Your full node report is on its way to your inbox.
Stage 1 · Store-picked
Store-picked fulfilment is online orders assembled from the retail sales floor, with no dedicated stock pool and no node economics of any kind.
Your next moveCarve out a dedicated pick face for online orders at one site — a manual one is fine — and start recording pick time, fill and substitution against it.
Stage 2 · Dedicated node
A dedicated node exists — a back-of-store pick face, a mezzanine or a dark store — but its assortment is inherited and its economics are still unmeasured.
Your next moveInstrument the node — single-node fill rate, split rate, units per hour and cost per delivered order, per node and per daypart — before changing anything in it.
Stage 3 · Instrumented node
The node's economics are visible, and a demand model drives its assortment and replenishment with a human approving each change.
Your next movePublish the node's live capacity upstream — to the sourcing engine and to the slot grid — so the network can stop over-committing it.
Stage 4 · Orchestrated network
Nodes are capacity-constrained resources the sourcing engine routes to, and the delivery window offered at checkout reflects what the node can actually do.
Your next moveWrite the sourcing and capacity rules down as a versioned policy with explicit bounds, then let the routine cases execute inside them.
Stage 5 · Self-tuning micro-network
Assortment, replenishment, sourcing and promise run inside a versioned policy, with humans setting the bounds and handling the exceptions.
Your next moveTreat the sourcing and assortment policy as a versioned, reviewable artefact with the same rigour as the models it governs.
0 / 24
Node economics
— / 6
Assortment & replenishment
— / 6
Sourcing & promise
— / 6
Throughput & exceptions
— / 6
Your score maps to a rung on the node ladder. The dimension breakdown matters more than the total: the lowest dimension is what actually caps this node, and in micro-fulfilment it is more often assortment or promise than it is automation. Your lowest-scoring dimension is —, and that is where the next investment belongs.
Your score maps to a rung on the node ladder. The dimension breakdown matters more than the total: the lowest dimension is what actually caps this node, and in micro-fulfilment it is more often assortment or promise than it is automation.Your four dimensions score evenly, so there is no single weak link to attack — follow the stage’s next move above rather than picking a dimension.
Want this run against the node's actual data?
We take one node, join your order lines to your pick confirmations and courier costs, and return the fill rate, split rate and cost per delivered order by daypart — next to the assortment changes that would move them. You keep the analysis whether or not we build anything.
How the score maps to a stage
- 0–4 — Stage 1, Store-picked. Store-picked fulfilment is online orders assembled from the retail sales floor, with no dedicated stock pool and no node economics of any kind.
- 5–10 — Stage 2, Dedicated node. A dedicated node exists — a back-of-store pick face, a mezzanine or a dark store — but its assortment is inherited and its economics are still unmeasured.
- 11–16 — Stage 3, Instrumented node. The node's economics are visible, and a demand model drives its assortment and replenishment with a human approving each change.
- 17–21 — Stage 4, Orchestrated network. Nodes are capacity-constrained resources the sourcing engine routes to, and the delivery window offered at checkout reflects what the node can actually do.
- 22–24 — Stage 5, Self-tuning micro-network. Assortment, replenishment, sourcing and promise run inside a versioned policy, with humans setting the bounds and handling the exceptions.
What AI-driven micro-fulfilment is — and what it is not
A definition, the path an order actually takes to a picker, and an honest separation of what runs today from what is still a pitch.
AI-driven micro-fulfilment is the use of demand, assortment and sourcing models to run a small fulfilment node close to demand at a cost per order the business can live with. A micro-fulfilment centre (MFC) is that node: typically a few thousand square feet inside, behind or beside a store, holding a narrow assortment, serving same-day delivery and buy-online-pick-up-in-store (BOPIS) collection rather than the full shopping mission. It exists because the last leg is the expensive one, and shortening it only pays if the node behind it is cheap enough to run.
The word 'micro' names the constraint. A regional shed can carry the long tail because it has the cube for it; a node cannot. Ocado, whose customer fulfilment centres (opens in a new tab) sit at the large end of the same spectrum, describes its store-based automation product (opens in a new tab) as a compact version of that technology designed to fit within or next to customer-facing stores, and states that it can hold up to 20,000 SKUs on a single site in addition to the existing store range. That is a generous node and it is still an order of magnitude below a supermarket's full range. Everything difficult about micro-fulfilment follows from that number.
Which is why the AI that matters here is not primarily the picking robot. Automation raises the node's throughput ceiling and lowers its labour per unit — both real, both measurable. But the decisions that determine whether the node pays are upstream of the pick: which SKUs live in it, when they are replenished, which orders it is given, and what window the customer is offered. Those are forecasting and optimisation problems, they run against the WMS, OMS and storefront rather than against the machinery, and they are available to an operator with no automation at all.
Where an online order actually gets picked
The same order, on three different operating models. The rung you are on is decided by where the decisions happen: at stage 1–2 nothing between the storefront and the picker is a decision at all, at stage 3 the node's own assortment and stock are model-driven, and at stage 4–5 the network chooses the node and the node's capacity chooses the promise.
- Data & feeds
- Where value leaks
- Human in the loop
- System-of-record action
- AI / model
The process, in words
- At stages 1–2 the order is assigned to the nearest store or node by a postcode rules table, picked from whatever the shelf or the inherited range happens to hold, and any gap becomes a substitution or a split decided by the person holding the trolley. The courier leg is paid whatever the basket turned out to be. Nothing between the storefront and the picker is a decision anyone can inspect afterwards.
- At stage 3 the OMS order lines are joined to WMS pick confirmations at line level, so the node's own completion rate exists as a number. A node-SKU-day forecast drives an add/drop list and replenishment suggestions written back into the WMS and the ordering system, a category owner approves each change, and the measured fill and split rates feed the next cycle of the forecast.
- At stages 4–5 a versioned sourcing and capacity policy governs the network. The engine chooses which node takes each order on stock, predicted pick time and delivery-leg cost; the node's live capacity determines which delivery windows the storefront is allowed to offer; and anything outside the policy's bounds — a fault, an unusual basket, a node forty minutes behind — escalates to a person with the trail attached.
Step-by-step insights
- The postcode rules table — the cheapest thing that caps everything
- Assigning orders to nodes by postcode is fast to build, easy to reason about, and guarantees you pay the split premium every time the nearest node is short of one line. It also hides the cost: the second pick lands in another site's labour line and the second delivery leg lands in the courier invoice, so no single report shows what the rule cost. Replacing it is not a machine-learning project to begin with — simply consulting live node stock before assigning is usually worth more than the first model anyone builds.
- Joining the OMS to the WMS at line level
- Almost every micro-fulfilment programme discovers that its systems can say how many orders a node handled but not how many lines of each order it actually supplied. Order lines live in the OMS, pick confirmations live in the WMS, and the two are frequently only reconciled at order level for billing. Building that line-level join is unglamorous integration work measured in weeks, and it is the single prerequisite for every number on this page — fill rate, split rate and a defensible cost per delivered order all fall out of it.
- Why the forecast is node-SKU-day and not store-SKU-week
- A node serves a catchment measured in minutes of travel, not a trading area measured in miles, and the resulting demand is both smaller and spikier. Weekly store-level forecasts smooth away the very pattern that matters: which lines are ordered together, at which hours, in this specific catchment. Node-SKU-day granularity produces smaller numbers with more noise, which is a genuine modelling problem — but the alternative is an assortment tuned to a demand pattern the node never sees.
- Writing the add/drop list back into the WMS
- An assortment recommendation that lands in a spreadsheet changes nothing. The output has to arrive as WMS work: locations created and removed, slot moves scheduled, ordering parameters updated, with the category owner's approval recorded against each line. The approval log is doing double duty — it is the governance record, and it is the training set that later tells you which classes of change are safe to make automatically and which will always need a human.
- Node capacity as an input to the promise
- The feed from pick queue depth and courier availability into the slot engine is the least fashionable component in the whole architecture and the one with the clearest customer effect. Without it, a fixed grid keeps selling two-hour windows while the node falls further behind, and the failure surfaces as missed deliveries hours later. With it, the grid withdraws the tightest windows first and keeps the loose ones open, so demand is shaped rather than refused. Build the withdrawal path and the manual override together — nobody will enable an automatic close they cannot reverse.
- Escalation as the health signal, not the failure
- In a bounded-autonomy design the escalation path is not the unhappy case; it is the instrument. The share of decisions falling outside the policy's bounds tells you whether the world still matches the assumptions the bounds encode. A catchment that gentrifies, a competitor opening nearby or a courier changing coverage will all show up as a rising escalation rate weeks before they show up in fill rate or cost. Put it on a weekly report and treat a rise as a scheduled policy review rather than an incident.
| Capability | Running today | What operators have published | Still a claim |
|---|---|---|---|
| Automated node inside a store | Yes — store-embedded storage and retrieval systems are in commercial operation | Walmart opened an in-store Market Fulfillment Center on its Alphabot system and says MFCs raise the orders a store can fulfil in a day with lower substitutions | That every store format can host one economically |
| Software-driven store and dark-store picking | Yes — pick-route optimisation across retail and dark stores is a shipping product | Ocado publishes up to 300 UPH for its in-store fulfilment software and 98%/99% order accuracy in stores and dark stores respectively | That those rates transfer unchanged to any estate or basket mix |
| Capacity-aware promising at checkout | Yes — large operators size and price short windows on live signals | Walmart describes its 30-minute service as using basket size, driver availability and distance from the store, live in 33 US markets | That a sub-30-minute promise is economic at low order density |
| Robotic picking of mixed retail units | Partly — robotic pick handles a subset of items alongside people | Ocado reports as much as a 50% labour reduction on its on-grid robotic pick; Amazon reports multi-arm systems in test that combine pick, stow and consolidate | Fully unattended picking of a full grocery range |
| Autonomous replenishment of a node | Partly — forecast-driven suggestion with human approval is common | Ocado reports food waste reduced to 0.49% of stock handled using forecast-driven planning | Unattended assortment change without a protected-line policy |
The pattern in that table is worth stating plainly, because it recurs in every ambitious micro-fulfilment business case: future-readiness is mostly present-readiness. The operators publishing the strongest results are not the ones running the most speculative technology — they are the ones who instrumented a node, fixed its assortment, and only then bought throughput. The rest of this page is the ladder that describes that sequence and the measurements that tell you where on it you actually are.
The five rungs of the micro-fulfilment ladder
For each rung: what the node actually looks like, the signals a reviewer can check in an afternoon, the anti-pattern that traps operators there, and what leaving costs.
The ladder runs from store-picked to a self-tuning micro-network, and each rung is defined by which decisions about the node are made by a model rather than by habit. It is written for a practitioner: the hallmarks are observable conditions, the diagnostic signals are checks you can run against your own systems this week, and the anti-pattern is the specific mistake most often made trying to leave that rung.
Value released against time on the node ladder
The curve is flat through rungs 1 and 2 for a structural reason: until the node's fill rate and cost per delivered order are measured, every improvement is a guess and most of them go into pick speed, which is not where the money is. It inflects at rung 3, when assortment becomes a model-driven decision, and again at rung 4, when the network stops over-committing the node.
Cost per delivered order improved by stage
- Stage 1 · Store-picked — 34% of operators. Store-picked fulfilment is online orders assembled from the retail sales floor, with no dedicated stock pool and no node economics of any kind.
- Stage 2 · Dedicated node — 31% of operators. A dedicated node exists — a back-of-store pick face, a mezzanine or a dark store — but its assortment is inherited and its economics are still unmeasured.
- Stage 3 · Instrumented node — 22% of operators. The node's economics are visible, and a demand model drives its assortment and replenishment with a human approving each change.
- Stage 4 · Orchestrated network — 10% of operators. Nodes are capacity-constrained resources the sourcing engine routes to, and the delivery window offered at checkout reflects what the node can actually do.
- Stage 5 · Self-tuning micro-network — 3% of operators. Assortment, replenishment, sourcing and promise run inside a versioned policy, with humans setting the bounds and handling the exceptions.
Curve shape: logistic, plotted from the stage data above. Distribution: Sequence consistent with operator reporting from Ocado Group and Walmart.
Select a rung
Every rung's full detail is in the page source — the selector only changes which panel is visible, so nothing here depends on JavaScript to exist.
Stage 1
Store-picked
34% of operators sit here
Store-picked fulfilment is online orders assembled from the retail sales floor, with no dedicated stock pool and no node economics of any kind.
Stage 1 is not the absence of local fulfilment — it is local fulfilment without a node. The orders get picked, the customers get served, and the operation works right up to the volume where it doesn't. What is missing is a dedicated place for online stock to live, which means online demand and store demand compete for the same shelf, the same replenishment cycle and the same staff hours, with no way to tell afterwards which of them consumed what.
The tell is what happens to a short line. Because the pick face is the sales floor, availability is whatever the shelf happens to hold at the moment the picker reaches it, and a gap becomes a substitution decided on the spot by whoever is holding the trolley. There is no fill rate to measure because there is no defined assortment to measure it against, and no substitution policy to compare the picker's judgement with. The customer finds out at the door.
This is a cheap stage to occupy at low volume and an expensive one to stay in as volume grows, because the cost curve has the wrong shape. Every additional order adds a full picker walk of roughly the same length as the last one, so unit cost is flat where it should be falling. Operators usually notice at the point where online picking starts colliding with the busiest trading hours, which is exactly when the store can least absorb it.
In practice
The Saturday morning collision
A grocery chain grew click-and-collect at three suburban stores until, on Saturday mornings, six pickers with trolleys were working the same aisles as the busiest shopping hour of the week. Pick times rose, shoppers complained, and the store manager's fix was to start picking at 06:00 — which moved the problem into a shift with fewer staff and worse availability, because the overnight replenishment had not landed yet. No number anywhere in the business showed what an online order at that store actually cost.
What it looks like
- Online orders are picked from the same shelves walk-in customers shop
- No dedicated stock pool, pick face or storage for online demand
- Online cost sits inside the store's labour line and is never separated
- The published slot grid is fixed and never closes for capacity
Diagnostic signals you can check this week
- Ask what an online order costs to pick at your busiest store. A network average means you are here
- Walk the sales floor at 10:00 on a Saturday and count pick trolleys against shoppers
- Ask how a picker decides a substitution. If the answer is 'they know the regulars', it is not a process
- Check whether the published slot grid has ever closed because a store was behind
Anti-pattern · Opening a dark store because the aisles are crowded
The crowding is real and a dedicated building genuinely fixes it, so the move looks obvious. The trap is what gets moved: operators almost always stock the new site with a shrunk copy of the store range, chosen on national velocity. That duplicates the range without changing the cost curve — you now pay rent on a second building, run two replenishment streams, and still cannot say what an order costs. Carve out a dedicated pick face inside the store first, measure it for a quarter, and let the measurement decide whether a separate building is warranted and what should be in it.
What holds you here
There is no dedicated stock pool and no node-level cost, so nothing about online fulfilment can be measured, let alone improved.
Highest-leverage next move
Carve out a dedicated pick face for online orders at one site — a manual one is fine — and start recording pick time, fill and substitution against it.
Cost of leaving
- Effort
- 2–4 months
- Team
- One operations analyst, one store-systems engineer, part-time
- Risk
- Low — nothing in the customer promise changes yet
- To next stage
- 2–4 months
If this is you, the next step is
A two-week exercise: join order lines to pick confirmations and courier cost for one site.
Stage 2
Dedicated node
31% of operators sit here
A dedicated node exists — a back-of-store pick face, a mezzanine or a dark store — but its assortment is inherited and its economics are still unmeasured.
Stage 2 feels like the decisive step and frequently is not. Separating online picking from the trading floor is a genuine gain: pick times stabilise, shoppers stop being obstructed, and the node acquires a manager. What has not changed is the thing that governs the node's economics, which is the list of SKUs inside it. That list is nearly always inherited — the store's range, minus whatever did not fit — and it was chosen by a process optimised for a completely different question.
The node's job is unlike a store's. A store range is chosen to maximise choice and category margin across a full shopping mission. A node's range must hold the smallest number of lines that completes the largest share of local orders on its own, because anything it cannot complete becomes a split. Those two objectives point at different SKUs: the node wants the high-frequency, high-co-occurrence core of the local basket, and it wants to be ruthless about the long tail that a store carries for range perception.
Time at stage 2 is expensive in a quiet way. The node's cost lands in a store P&L or a central 'online' cost line, the split premium is spread across couriers and second picks nobody attributes, and when the finance review comes the honest answer to 'what does this node cost per order?' is a shrug. Programmes that stall here usually stall for a full budget cycle, because the case for the next investment cannot be built from numbers that do not exist.
In practice
The node that held the wrong 3,000
A dark store serving a dense inner-city catchment was stocked to the national top 3,000 lines. The catchment's own baskets were dominated by a different set — single-portion chilled, high-frequency ambient, and a short list of local staples that barely registered nationally. Around a third of orders needed a line from a second source. The node's pick rate was excellent and its manager was regularly commended for it, while the split premium sat unattributed in the courier line of a different budget.
What it looks like
- A defined pick face or building serves online orders only
- The node's SKU list is a shrunk copy of the store or national range
- Replenishment runs on min/max levels set at commissioning
- Nobody can state the node's single-node fill rate on request
Diagnostic signals you can check this week
- Ask for the node's SKU list and the catchment's top lines by order frequency, then compare them
- Ask what share of orders the node completes on its own — hesitation means it is not measured
- Check when the node's min/max replenishment levels were last changed and by whom
- Ask who owns the node's cost per delivered order, by name
Anti-pattern · Adding SKUs to fix the fill rate
When splits are noticed, the instinct is to widen the range. But a node is bounded by cube and pick face, so every SKU added displaces one already there, and the ones added are usually chosen from the same national-velocity list that caused the problem. The result is a slower node — more locations to traverse, more totes in circulation — with more short-life stock going to purge and a fill rate that has barely moved. The correct move is subtraction first: find the lines that appear in almost no local orders and take them out, then use the freed space for the ones the catchment actually buys together.
What holds you here
The node's assortment is inherited from the store range and its fill rate is unmeasured, so the split premium never appears in anyone's P&L.
Highest-leverage next move
Instrument the node — single-node fill rate, split rate, units per hour and cost per delivered order, per node and per daypart — before changing anything in it.
Cost of leaving
- Effort
- 3–6 months
- Team
- One data engineer, one demand planner, a named node owner
- Risk
- Low to medium — the work is measurement, and the customer promise does not change
- To next stage
- 3–6 months
If this is you, the next step is
We join your OMS order lines to WMS pick confirmations and return fill, split and cost by daypart.
Stage 3
Instrumented node
22% of operators sit here
The node's economics are visible, and a demand model drives its assortment and replenishment with a human approving each change.
Stage 3 is the first stage where the node can be managed rather than merely operated. The change is measurement joined to a decision: order lines from the OMS are matched to pick confirmations in the WMS, so the operation can finally say what share of each order the node completed itself, what the rest cost, and how both move by daypart. Once that number exists it becomes very hard to unsee, because it reorders the priority list — pick-rate projects drop, assortment projects rise.
The model that matters here is unglamorous: a demand forecast at node-SKU-day granularity, feeding two things. First, replenishment suggestions, so the node refills against what its catchment will order rather than against levels set at commissioning. Second, an add/drop list on a fixed cadence, so the assortment is revised deliberately instead of drifting. A category owner still approves every line, which is correct at this stage — the approval log is what later sets the bounds for doing it automatically.
The constraint that emerges at stage 3 is that the node has been optimised alone. Its fill rate is up, its purge is down, and it is still handed whatever orders the routing rules send it, at whatever times a fixed slot grid published. When the catchment has a bad hour, the node absorbs it and the promise does not move. Operators notice this the first peak after the assortment work lands, when a node that is now genuinely good spends a Saturday behind.
In practice
The add/drop list that halved the splits
An operator ran the first node-SKU-day forecast against a 4,000-line urban node and produced a 600-line drop list and a 500-line add list. The drops were long-tail ambient lines appearing in under one order in four hundred; the adds were chilled and household lines the catchment bought together most weeks. The category team argued about roughly eighty lines and approved the rest. The node's own order completion improved sharply within two replenishment cycles, and the courier line — where the split premium had been hiding — moved with it.
What it looks like
- Fill, split, UPH and cost per delivered order are reported per node per daypart
- A node-SKU-day forecast drives replenishment suggestions into the ordering system
- An add/drop list is produced on a cadence and approved by a category owner
- A named node owner is accountable for fill rate, not only for pick rate
Diagnostic signals you can check this week
- Ask for last week's fill rate by daypart for one node; a monthly network number means the join is not built
- Check whether the add/drop list has a date, an approver and a next review
- Ask what the replenishment suggestion is based on, and whether anyone overrides it and why
- Check whether pick rate and fill rate appear on the same report — if not, the node is still measured on speed alone
Anti-pattern · Optimising the node while the network still routes blind
A well-run node is satisfying to improve, so teams keep improving it: better slotting, better batching, another point of UPH. Meanwhile the sourcing rules still send it orders by postcode, the slot grid still publishes the same windows on a Saturday as on a Tuesday, and the node's own gains are consumed by demand it was never sized for. Past a certain point the marginal return on the node itself is smaller than the return on telling the network what the node can do. Instrument capacity and feed it upstream before buying another point of pick rate.
What holds you here
The node is optimised in isolation while order sourcing and the published promise still ignore what it can actually do on the day.
Highest-leverage next move
Publish the node's live capacity upstream — to the sourcing engine and to the slot grid — so the network can stop over-committing it.
Cost of leaving
- Effort
- 6–12 months
- Team
- One ML engineer, one integration engineer, a demand planner, a category owner
- Risk
- Medium — the first automated write into the ordering system needs a documented fallback
- To next stage
- 6–12 months
If this is you, the next step is
Forecast, add/drop list and replenishment write-back on one node, in a quarter.
Stage 4
Orchestrated network
10% of operators sit here
Nodes are capacity-constrained resources the sourcing engine routes to, and the delivery window offered at checkout reflects what the node can actually do.
At stage 4 the unit of optimisation stops being the node and becomes the catchment. The sourcing engine chooses, per order, which node should fulfil it — weighing what each node holds, how long each will take given its current queue, and what the delivery leg will cost from each. Walmart describes its own 30-minute service in these terms, running on an algorithm that considers basket size, driver availability and distance from the store. That is a fulfilment decision taken at order capture, before a picker has touched anything.
The second half of stage 4 is the promise. A published slot grid is a commitment made in advance of knowing whether it can be kept; a capacity-aware grid closes windows when the node behind them is at its limit and reopens them when it is not. This is the change that stops a good node having a bad Saturday, and it requires an unglamorous feed — pick queue depth and courier availability out of the WMS and the dispatch platform, into the storefront, on a cadence measured in minutes rather than days.
The remaining constraint at stage 4 is human throughput on the decisions around the edges. Assortment changes still wait for a category meeting, sourcing overrides still route to a planner, and capacity thresholds are still set by hand each season. That is often the right place to stop: the returns from removing those approvals are real but modest, while the consequences of removing them badly are not. Moving further should be a deliberate risk decision rather than a technical inevitability.
In practice
The Saturday that closed itself
An operator wired pick-queue depth from three urban nodes into the slot engine. At 09:40 on a Saturday one node fell behind by roughly forty minutes of queue; the engine withdrew its two-hour windows for the next three slots and left the four-hour windows open, while the sourcing engine started preferring a neighbouring node for orders in the overlap zone. Nothing was cancelled and no customer was told anything late. The previous quarter, the same situation had produced a batch of missed windows and a day of service recovery.
What it looks like
- Order sourcing scores nodes on stock, predicted pick time and courier cost
- The slot grid is capped by forecast node capacity, refreshed through the day
- Nodes, stores and the regional shed are treated as one pool of capacity
- Substitution decisions consider stock at other nodes before offering an alternative
Diagnostic signals you can check this week
- Ask what happens to the slot grid when a node is forty minutes behind — a shrug means the feed does not exist
- Check whether sourcing decisions are logged with the alternatives that were considered
- Ask whether any order has ever been sourced to a node other than the nearest one, and why
- Check whether courier availability is an input to the promise or only to dispatch
Anti-pattern · Letting the promise write cheques the node cannot cash
Speed is the most visible thing a micro-fulfilment programme produces, so the promise tends to get extended ahead of the capacity feed — a new market, a tighter window, a longer trading day. It works while demand is average and fails at exactly the moments that generate the most customer contact. The discipline is to treat the published promise as an output of measured node capacity rather than an input to it, and to expand it only where the feed exists and the degraded mode has been drilled.
What holds you here
Assortment, sourcing overrides and capacity thresholds still wait on human approval, so the network can only adapt as fast as its meeting cadence.
Highest-leverage next move
Write the sourcing and capacity rules down as a versioned policy with explicit bounds, then let the routine cases execute inside them.
Cost of leaving
- Effort
- 12–24 months
- Team
- Platform team, an order-management engineer, an operations product owner
- Risk
- Higher — the promise is customer-facing, so a bad capacity signal is visible immediately
- To next stage
- 12–24 months
If this is you, the next step is
Queue depth and courier availability into the slot engine, with a tested manual override.
Stage 5
Self-tuning micro-network
3% of operators sit here
Assortment, replenishment, sourcing and promise run inside a versioned policy, with humans setting the bounds and handling the exceptions.
Stage 5 is narrower than the phrase suggests. It is not an autonomous network; it is an enumerated set of decisions that execute without approval inside written bounds — add or drop a line below a stated volume and margin threshold, re-source an order between two nodes inside a cost band, withdraw a delivery window when queue depth crosses a limit. Anything outside those bounds escalates. Decisions with regulatory, safety or significant commercial exposure are correctly held at stage 4 indefinitely, and saying so out loud is part of the design.
By the time an operator arrives here the engineering is largely a solved problem and the artefact under scrutiny is the policy. It needs the same treatment as code: versioned, reviewed, with a record of who changed which threshold on what date and why. The reason is prosaic — someone will eventually ask why a particular customer's order was re-sourced eight months ago, and the answer has to be reconstructable from logs rather than from memory. The operational patterns for this are borrowed almost wholesale from site reliability engineering.
Stage 5 is also the stage most likely to regress, because the conditions that made the bounds valid keep moving. A catchment gentrifies, a competitor opens two streets away, a courier partner changes its coverage, a new store format changes the substitution set. The escalation rate — the share of decisions falling outside the policy — is the cheapest early warning available, and a rising one should trigger a policy review long before it triggers an incident.
In practice
The bounded decision set
A multi-node operator runs unattended add/drop inside explicit bounds: a line may be dropped automatically if it has appeared in fewer than a stated number of local orders over a rolling window and is not on a protected list — allergen alternatives, regulated categories, contracted promotions. Everything else routes to the category owner with the model's reasoning attached. Roughly one proposed change in six escalates, and that ratio is itself monitored: when it rises, the catchment has moved and the bounds are reviewed before the next cycle runs.
What it looks like
- Routine assortment and sourcing decisions execute unattended inside stated bounds
- Capacity throttling and window withdrawal are automatic and reversible
- Every automated decision carries a reconstructable trail
- Escalation rate is monitored as the leading indicator that the policy has aged
Diagnostic signals you can check this week
- Check whether the sourcing and assortment policies are versioned and reviewed like code
- Ask when the automatic window-withdrawal path was last exercised deliberately
- Check whether escalation rate is on a dashboard anyone reads weekly
- Ask whether an auditor could reconstruct why one specific order was re-sourced last quarter
Anti-pattern · Treating the thresholds as configuration
Bounds get tuned in a settings screen with no review, no version history and no record of who changed what. It works until someone has to explain a decision made two quarters ago — a dropped line that turned out to be an allergen alternative, a withdrawn window during a service incident — and neither the model nor the threshold that produced it can be reconstructed. Version the policy, review changes on a cadence, and keep the trail. The cost is a few hours a month; the alternative is discovering the gap during an investigation.
What holds you here
Sustaining autonomy is a governance problem — the constraint becomes policy review and evidence, not engineering.
Highest-leverage next move
Treat the sourcing and assortment policy as a versioned, reviewable artefact with the same rigour as the models it governs.
Cost of leaving
- Effort
- Continuous
- Team
- Platform team plus a standing policy forum spanning operations, category and risk
- Risk
- Concentrated — low frequency, high consequence, and customer-visible when it goes wrong
If this is you, the next step is
We take one bounded decision and test the policy, the trail and the rollback against a real scenario.
Where operators actually sit on the ladder
The distribution across the five rungs, and why the second rung holds so many nodes that look modern and behave like store picking.
Most operators running micro-fulfilment are on the first two rungs. A dedicated pick face or a dark store exists — that part has spread quickly, because it is a property and process decision rather than a technology one — but the assortment inside it was inherited and its fill rate has never been measured. The result is a node that looks contemporary from the outside and is being managed with the same instruments as a shop floor.
Distribution of operators across the five rungs
Illustrative distribution, not a survey result. It is our reading of where micro-fulfilment estates sit given published adoption data on warehouse automation and the far smaller number of operators publicly describing capacity-aware promising or model-driven node assortment. Treat the shape as the argument and the exact percentages as indicative.
Share of operators
- 34% — 1 · Store-picked
- 31% — 2 · Dedicated node (the plateau)
- 22% — 3 · Instrumented node
- 10% — 4 · Orchestrated network
- 3% — 5 · Self-tuning
The plateau at rung 2 is not caused by a shortage of technology. It is caused by an accounting boundary: the node's picking cost sits in one budget, its stock and purge in another, and the split premium — the second pick and the second delivery leg for every order the node could not complete — is smeared across a courier invoice that nobody reads by node. MHI's annual industry survey (opens in a new tab) tracks the same pattern in warehouse automation more broadly: adoption of the equipment consistently runs ahead of the measurement discipline that would show what the equipment is worth.
The rung-2 to rung-3 move is therefore an integration and measurement project, not a capital one. Its whole content is joining OMS order lines to WMS pick confirmations, computing four numbers by daypart, and giving one named person the fill rate as a target. Operators who do it first almost always change what they buy next — and quite often decide not to buy the thing they had already budgeted for.
The economics of a node: fill rate, splits and the throughput ceiling
Cost per delivered order has five terms. Only two of them move with pick speed — and the largest usually moves with assortment.
A micro-fulfilment node's cost per delivered order decomposes into five terms, and the mistake that defines rung 2 is treating all five as if they were pick labour. Pick labour is the term automation attacks and the one every vendor demonstration is built around. It is rarely the largest, and it is almost never the one with the steepest gradient. The term with the steepest gradient is the split premium: the extra cost incurred every time the node cannot complete an order on its own.
| Cost term | What drives it | The decision that moves it | What does not move it |
|---|---|---|---|
| Pick labour | Units per hour at the node — travel or tote presentation, batch size, congestion | Slotting and pick sequencing; goods-to-person (GTP) versus walk-pick | A better demand forecast |
| The split premium | Single-node fill rate — the share of order lines the node can supply itself | Node assortment, and sourcing that consults live stock before assigning | Pick automation, however fast |
| Delivery leg | Drop density, batching, how wide the promised window is | The promise offered at checkout and the dispatch batching behind it | Node throughput |
| Node fixed cost | Rent, automation amortisation, minimum staffing to open the doors | Siting and utilisation — decided before the node exists | Anything at run time |
| Waste and purge | Short-life stock held against a demand pattern that has moved | Node-SKU-day forecasting and forecast-driven replenishment | Pick speed, and usually range width too |
The split premium deserves its own arithmetic because it is the one term operators consistently under-count. When an order splits, the second source performs a full pick-and-pack cycle for the missing lines and, in most operating models, a second delivery leg follows — a separate drop, a separate driver interaction, a separate chance of a failed attempt. Order-level costing hides this entirely: the order still counts as one order. The chart below is a simple, stated model rather than measured data, and it exists to show the shape of the relationship rather than to supply a number to a business case.
Illustrative: cost per delivered order against single-node fill rate
Stated model, not measured data. Assumption: an order the node completes itself indexes at 100; an order that splits carries roughly a further 70 index points for the second pick, pack and delivery leg. Index = 100 + (1 − fill rate) × 70. The point is the gradient — a ten-point fill-rate improvement is worth about seven index points, which is a larger move than most pick-rate programmes deliver.
Cost per delivered order (100 = no splits)
- 135index — 50% fill (an inherited store range in a specialised catchment)
- 128index — 60% fill
- 121index — 70% fill (a common rung-2 starting point)
- 114index — 80% fill
- 107index — 90% fill (achievable with a node-tuned assortment)
- 104index — 95% fill
None of this argues against automation. It argues about sequence. Ocado publishes genuinely strong numbers for its in-store fulfilment software (opens in a new tab) — up to 300 UPH, 98% order accuracy in stores and 99% in dark stores, and food waste reduced to 0.49% of all stock handled — and reports that its on-grid robotic pick can cut the labour requirement by as much as 50%. Those gains are real and they compound. They also all sit inside the pick-labour and purge terms. Buy them after the assortment work, and they land on a node that is already completing most of its orders; buy them before, and you have made a node that holds the wrong lines faster at holding them.
300 UPH
Pick rate Ocado publishes for its in-store fulfilment software across retail and dark stores
Ocado Group
0.49%
Of all stock handled written off as purge, using forecast-driven planning
Ocado Group
50%
Labour reduction Ocado reports as achievable on its on-grid robotic pick
Ocado Group
The other structural fact about a node is its throughput ceiling. A large distribution centre absorbs a demand spike by adding people and hours; a node with an automated grid has a hard physical rate and a floor area that will not accommodate a second shift's worth of totes. That changes the management problem from 'how do we go faster' to 'how do we shape demand to what the node can do' — which is why capacity-aware promising sits on this ladder at all, and why the throughput question is a different problem from maximising throughput inside a large warehouse, where the constraint is station balance rather than the size of the box.
Should this catchment have a node at all?
Plot the catchment's demand density against its assortment concentration — the share of local order lines covered by the top few thousand SKUs. The quadrant tells you what to build, and in two of the four the answer is not a micro-fulfilment centre.
Urban fulfilment centre, not a micro one
- Density supports speed; the tail will not fit a small node
- A node here splits a third of its orders
- Take a larger urban unit, or keep the tail on the regional shed
Micro-fulfilment country
- Dense demand, concentrated assortment
- The node can complete most orders on its own
- Build it, and instrument fill rate from day one
Serve it from the regional shed
- Neither density nor concentration
- Courier cost per drop dominates every other term
- Sell a next-day promise and do not build a node
Back-of-store pick face
- Concentrated demand, but drops are dispersed
- Automation will not amortise against the order volume
- Carve dedicated space inside the store; skip the capital
Where AI lands around a micro-fulfilment node
Eight decisions, the system of record each one lives in, the KPI it moves, and the rung at which it earns its keep.
AI value around a node concentrates in eight decisions, and they are not equally good places to start. A decision is a good first candidate when three things are true: the system of record is one you already control, the feedback loop is measured in shifts rather than quarters, and the KPI it moves is one a budget holder already recognises. On that test, assortment and replenishment beat sourcing and promise as a starting point almost every time, even though sourcing carries the larger eventual prize.
| Decision | What is actually being decided | System of record | KPI it moves | Earns its keep |
|---|---|---|---|---|
| Siting and catchment | Where the node goes and how far it serves | Network planning / GIS | Orders per node per day, courier cost per drop | Rung 3–4 |
| Assortment | Which SKUs occupy the node's finite locations | WMS + category system | Single-node fill rate, purge | Rung 3 |
| Replenishment | What refills, in what quantity, on what trigger | Ordering system / WMS | In-node availability, purge | Rung 3 |
| Slotting and pick sequencing | Where lines sit in the grid or aisle, and the order of picks | WMS / warehouse control system | Units per hour, travel per pick | Rung 2–3 |
| Order sourcing | Which node fulfils which order | OMS / DOM | Split rate, cost per delivered order | Rung 4 |
| Promise and capacity | Which delivery windows to offer and when to withdraw them | Storefront slot engine | Promise attainment, capacity attainment | Rung 4–5 |
| Substitution and exceptions | What to offer when a line cannot be picked | Pick app / OMS | Substitution acceptance, refund rate | Rung 3–4 |
| Dispatch and last leg | How drops are batched and which courier takes them | TMS / courier platform | Drops per hour, cost per drop | Rung 4–5 |
Two of those rows are worth expanding, because they are the ones most often built in the wrong order.
Assortment is the highest-leverage first model
It runs against systems you own, its effect appears within two replenishment cycles, and it moves the term with the steepest gradient. It is also the least fashionable, because the deliverable is a list of lines to drop rather than a piece of equipment. Insist on the subtraction half of the list: an add-only assortment change makes the node slower without making it more complete.
Sourcing carries the larger prize and the longer approval path
Choosing the node per order is where the split premium is genuinely eliminated rather than reduced, and Walmart describes its own 30-minute service as running on an algorithm using basket size, driver availability and distance from the store (opens in a new tab). But sourcing changes what customers are promised, so it touches commercial policy, customer service and the storefront. Build it after the node can be trusted to do what the sourcing engine assumes it can.
Substitution is the node's most frequent customer-visible decision
Every short line produces one, several times an hour, and the accept/reject log it generates is the most useful dataset a node produces. Treat it as data collection from the first day: which alternative was offered, whether the customer kept it, and what the picker would have chosen instead. That log is what later makes automated substitution defensible rather than a guess.
Slotting is worth doing early and worth stopping early
Slot and sequence optimisation is quick to build, gives a visible UPH gain, and then plateaus. Its danger is that it is satisfying: teams keep returning to it because the numbers move, long after the marginal point of pick rate is worth less than a point of fill rate. Set a target, hit it, and move the team to assortment.
The compliance frame around a node is tighter than around a shed, because a node is small, often food-handling, frequently attached to a building the public walks into, and full of moving equipment. Grocery nodes carry food-safety duties — traceability, temperature control, date-code discipline — under the same regimes as the store they sit behind; in the UK that is the Food Standards Agency (opens in a new tab) frame, and product identification for traceability generally runs on GS1 barcode and identification standards (opens in a new tab). Where the node uses mobile robots or automated storage, the machinery-safety obligations are real and specific: ISO 3691-4 covers driverless industrial trucks and their systems, with the A3 industrial-robot safety standards (opens in a new tab) series applying in the United States, and the standards themselves are published by ISO (opens in a new tab). Pedestrian and vehicle separation inside a small, busy space is exactly the risk the HSE's workplace-transport guidance (opens in a new tab) and OSHA's warehousing programme (opens in a new tab) are written about.
None of these regimes prohibits an AI-driven decision in the loop. What they require is that the decision be traceable and that a person remain accountable for the outcome — which is a maturity property rather than a model property, and it is produced as a by-product of the rung-3 write-back discipline described further down this page.
What micro-fulfilment looks like in public
Three publicly reported programmes, read against the ladder. None is an Atomic Loops engagement — each links to the operator's own published material.
The clearest evidence for the sequence argued on this page is in what large operators chose to build and what they chose to publish about it. In each case below the visible artefact is a building or a robot, and the operative change described in the operator's own material is a decision moving — which store fulfils, which items are eligible, which window is offered. Read the three together and the pattern is consistent: the node is the vehicle, the sourcing and assortment logic is the product.
Three programmes read against the node ladder
Outcomes as reported by the operators themselves; verify figures against the linked source before reusing them, as we have not independently audited them. Card images are generated illustrations from our own library, not photographs of these operators' facilities, and imply no endorsement.
WalmartUS omnichannel retailer · store-embedded nodes14
- Challenge
- Online orders were assembled by associates walking the sales floor, which competed with in-store shoppers for space and staff hours and capped how many orders a store could fulfil in a day.
- Approach
- Walmart built a Market Fulfillment Center inside an existing store — Store 100 in Bentonville — running on its proprietary Alphabot storage-and-retrieval system, deliberately siting the node in the store rather than replacing store fulfilment with a separate network. It later described its 30-minute-or-less service as running on an algorithm using basket size, driver availability and distance from the store.
- Reported outcome
- Walmart reports that MFCs significantly increase the number of orders a store can fulfil in a day with faster fulfilment and lower substitutions, and that 30-minute-or-less delivery is live across 33 US markets on more than 100,000 eligible items, with 26% of Express Deliveries already arriving inside that window.
- What it shows about the curveThe node and the sourcing algorithm arrived as one system. The building raises the ceiling; the algorithm deciding which store serves which order at what promise is what turns the ceiling into delivered orders — the rung-4 signature.
Walmart corporate newsroom — Market Fulfillment Center (opens in a new tab)
Ocado GroupGrocery technology platform · 14 partner retailers worldwide35
- Challenge
- Serving pick-up and ultra-short-lead-time orders profitably from an existing store estate, under rising labour costs and thin grocery margins, without disrupting the in-store shopping experience.
- Approach
- Two products against one problem. Store Based Automation puts a compact version of Ocado's customer-fulfilment-centre technology inside or beside a store, storing up to 20,000 SKUs on a single site in addition to the store range. In-Store Fulfilment takes the software route instead, optimising pick routes across retail stores and dark stores with forecast-driven purge visibility.
- Reported outcome
- Ocado publishes up to 300 UPH for in-store fulfilment, 98% order accuracy in stores and 99% in dark stores, food waste reduced to 0.49% of all stock handled, as much as 50% labour reduction on on-grid robotic pick, and one partner scaling from 40 to 450 stores within months.
- What it shows about the curveThe same operator offers an automated node and a software-only node, and publishes results for both. That is the strongest available evidence that the node's automation is a throughput choice and its software is the economics choice — they are separable, and the software is the one that travels.
Ocado Group — In-Store Fulfilment and Store Based Automation (opens in a new tab)
AmazonGlobal e-commerce and logistics network35
- Challenge
- Offering a same-day promise across a very large catalogue when only a small, curated subset of items can physically be held close enough to a customer to make same-day economic.
- Approach
- Amazon separated the promise from the catalogue: Same-Day Delivery covers an eligible subset of items, surfaced to the customer at the point of browsing with a countdown showing how long they have to order, so the assortment decision behind the node is expressed as storefront eligibility rather than hidden behind a slot grid. Alongside it, Amazon reports robotics and agentic-AI systems in its facilities aimed at picking, stowing and operational decision support.
- Reported outcome
- Amazon reports Same-Day Delivery available in more than 9,000 US cities and towns, with millions of items eligible, and publicly describes multi-arm robotic systems and an agentic operations model being tested to support the network behind it.
- What it shows about the curveEligibility is assortment made visible. When the node's range is exposed as what the customer can have today, the assortment decision becomes a commercial decision with a feedback loop — which is the cleanest version of the rung-4 move on this ladder.
We've been delivering orders in 30 minutes or less for more than a year, and today 26% of our Express Deliveries are already arriving in that timeframe.