Redefining Technology

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.

Compact micro-fulfilment unit with tote-carrying mobile robots, dense shelving and a robotic pick station beside a pack bench
Logistics · AI-Driven Disruptions & Innovations

Key takeaways

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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

Question 1 of 8Node economics

Can you state the fully loaded cost per delivered order for your busiest node, split by daypart?

A node whose cost is pooled with a store's or a network's cannot be managed. Every later decision — assortment, automation, promise — is a trade against this number.

How the score maps to a stage
  • 04 — 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.
  • 510 — 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.
  • 1116 — 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.
  • 1721 — 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.
  • 2224 — 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.
CapabilityRunning todayWhat operators have publishedStill a claim
Automated node inside a storeYes — store-embedded storage and retrieval systems are in commercial operationWalmart 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 substitutionsThat every store format can host one economically
Software-driven store and dark-store pickingYes — pick-route optimisation across retail and dark stores is a shipping productOcado publishes up to 300 UPH for its in-store fulfilment software and 98%/99% order accuracy in stores and dark stores respectivelyThat those rates transfer unchanged to any estate or basket mix
Capacity-aware promising at checkoutYes — large operators size and price short windows on live signalsWalmart describes its 30-minute service as using basket size, driver availability and distance from the store, live in 33 US marketsThat a sub-30-minute promise is economic at low order density
Robotic picking of mixed retail unitsPartly — robotic pick handles a subset of items alongside peopleOcado 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 consolidateFully unattended picking of a full grocery range
Autonomous replenishment of a nodePartly — forecast-driven suggestion with human approval is commonOcado reports food waste reduced to 0.49% of stock handled using forecast-driven planningUnattended assortment change without a protected-line policy
The separation this page keeps throughout: what is genuinely running in operators' networks today, what those operators have published about it, and what remains a claim without public evidence. Nothing in the third column is used to support an argument anywhere on this page.

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.

Baseline one store's cost per online order

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.

Measure single-node fill rate on one node

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.

Build the node-SKU-day forecast

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.

Wire node capacity into the promise

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.

Stress-test an automated node decision

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

Source: Illustrative distribution, anchored to MHI's annual industry survey of supply-chain automation adoption

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 termWhat drives itThe decision that moves itWhat does not move it
Pick labourUnits per hour at the node — travel or tote presentation, batch size, congestionSlotting and pick sequencing; goods-to-person (GTP) versus walk-pickA better demand forecast
The split premiumSingle-node fill rate — the share of order lines the node can supply itselfNode assortment, and sourcing that consults live stock before assigningPick automation, however fast
Delivery legDrop density, batching, how wide the promised window isThe promise offered at checkout and the dispatch batching behind itNode throughput
Node fixed costRent, automation amortisation, minimum staffing to open the doorsSiting and utilisation — decided before the node existsAnything at run time
Waste and purgeShort-life stock held against a demand pattern that has movedNode-SKU-day forecasting and forecast-driven replenishmentPick speed, and usually range width too
The five terms in cost per delivered order at a micro-fulfilment node, with the decision that actually moves each. The right-hand column is included because it is where most node investment goes: a change that improves one term is routinely justified by a benefit that belongs to another.

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

Source: Illustrative arithmetic under the stated assumption; pick-rate and accuracy anchors from Ocado Group's published in-store fulfilment figures

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
Demand density — top: Dense catchment, short courier legs, bottom: Dispersed drops, long courier legs
Assortment concentration — left: The long tail carries local demand, right: A few thousand SKUs cover most order lines

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.

DecisionWhat is actually being decidedSystem of recordKPI it movesEarns its keep
Siting and catchmentWhere the node goes and how far it servesNetwork planning / GISOrders per node per day, courier cost per dropRung 3–4
AssortmentWhich SKUs occupy the node's finite locationsWMS + category systemSingle-node fill rate, purgeRung 3
ReplenishmentWhat refills, in what quantity, on what triggerOrdering system / WMSIn-node availability, purgeRung 3
Slotting and pick sequencingWhere lines sit in the grid or aisle, and the order of picksWMS / warehouse control systemUnits per hour, travel per pickRung 2–3
Order sourcingWhich node fulfils which orderOMS / DOMSplit rate, cost per delivered orderRung 4
Promise and capacityWhich delivery windows to offer and when to withdraw themStorefront slot enginePromise attainment, capacity attainmentRung 4–5
Substitution and exceptionsWhat to offer when a line cannot be pickedPick app / OMSSubstitution acceptance, refund rateRung 3–4
Dispatch and last legHow drops are batched and which courier takes themTMS / courier platformDrops per hour, cost per dropRung 4–5
The micro-fulfilment decision landscape. 'Earns its keep' is the rung at which the decision typically starts returning more than it costs to run — attempting a rung-5 decision from a rung-2 data foundation is how nodes end up with sophisticated sourcing and an assortment nobody has revisited since commissioning.

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.

Illustrative scene: a fulfilment team reviewing operating data on a display in a warehouse aisleWalmartUS 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)

Illustrative scene: dense storage aisles served by overhead shuttle units in an urban fulfilment buildingOcado 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)

Illustrative scene: tote-carrying mobile robots feeding a conveyor and robotic pick stations in a fulfilment hallAmazonGlobal 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.

Amazon — Same-Day Delivery (opens in a new tab)

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.

The reference architecture for a micro-fulfilment node

Five layers, each annotated with the rung that first requires it — and one layer almost everybody defers until it hurts.

A rung-3 node requires five layers, and the order in which they are built decides whether the programme compounds or stalls. The architecture below is deliberately vendor-neutral: every layer is defined by what it must guarantee rather than by which product supplies it, because micro-fulfilment estates are unusually heterogeneous — the same operator will commonly run an automated grid at one site, a mezzanine pick face at another and pure store picking at a third, against one storefront.

Layers required by rung

Each layer is annotated with the rung that first requires it. A programme aiming at rung 3 without the measurement and write-back layers is buying automation and keeping rung-2 instruments.

  1. Node and storefront systems

    Stage 1+

    • WMS / store pick appWhere a pick is confirmed and stock is decremented
    • OMS and storefrontWhere the order and the promised window are created
    • Automation controllerThe grid or AS/RS control system, if the node has one
    • Courier / dispatch platformWhere the delivery leg is booked and proven
  2. Node measurement layer

    Stage 2+

    • Order line ↔ pick confirmation joinThe prerequisite for fill rate and split rate
    • Pick telemetryUPH, travel, queue depth, by shift and daypart
    • Cost assemblyLabour, node fixed cost, courier invoice, per delivered order
    • Stock and purgeWhat was held, what expired, against local demand
  3. Decision models

    Stage 3+

    • Node-SKU-day demand forecastLocal, daily, and honest about its own noise
    • Assortment optimiserAdds and drops against finite locations and cube
    • Pick-time predictorWhat this basket will take at this node, right now
    • Substitution rankerTrained on accept and reject history, not on category rules
  4. Write-back and delivery

    Stage 3+

    • Assortment change into the WMSLocations, slot moves, ordering parameters
    • Replenishment suggestionsInto the ordering system, with a planner approving
    • Capacity feed into the slot engineQueue depth and courier availability, in minutes
    • Fallback sourceMin/max levels and the fixed grid, one switch away
  5. Capacity, safety and audit

    Stage 4+

    • Automatic capacity throttleWindow withdrawal with a tested manual override
    • Degraded-mode runbookReduced published capacity when automation is down
    • Safety and food-safety evidenceTraceability, date codes, machinery separation
    • Versioned decision policyReviewed like code once anything runs unattended

Pipeline described

  1. Node and storefront systems (stage 1+) — WMS / store pick app: Where a pick is confirmed and stock is decremented; OMS and storefront: Where the order and the promised window are created; Automation controller: The grid or AS/RS control system, if the node has one; Courier / dispatch platform: Where the delivery leg is booked and proven
  2. Node measurement layer (stage 2+) — Order line ↔ pick confirmation join: The prerequisite for fill rate and split rate; Pick telemetry: UPH, travel, queue depth, by shift and daypart; Cost assembly: Labour, node fixed cost, courier invoice, per delivered order; Stock and purge: What was held, what expired, against local demand
  3. Decision models (stage 3+) — Node-SKU-day demand forecast: Local, daily, and honest about its own noise; Assortment optimiser: Adds and drops against finite locations and cube; Pick-time predictor: What this basket will take at this node, right now; Substitution ranker: Trained on accept and reject history, not on category rules
  4. Write-back and delivery (stage 3+) — Assortment change into the WMS: Locations, slot moves, ordering parameters; Replenishment suggestions: Into the ordering system, with a planner approving; Capacity feed into the slot engine: Queue depth and courier availability, in minutes; Fallback source: Min/max levels and the fixed grid, one switch away
  5. Capacity, safety and audit (stage 4+) — Automatic capacity throttle: Window withdrawal with a tested manual override; Degraded-mode runbook: Reduced published capacity when automation is down; Safety and food-safety evidence: Traceability, date codes, machinery separation; Versioned decision policy: Reviewed like code once anything runs unattended
Step-by-step insights
Node and storefront systems — the promise is created upstream of everything
The most consequential thing about this layer is where the delivery window is created: in the storefront, at order capture, usually before any fulfilment system has been consulted. That single sequencing fact is why micro-fulfilment programmes that begin in the warehouse struggle — the commitment has already been made by the time the node sees the order. Any serious node architecture has to treat the storefront as a fulfilment system, with a feed running into it, not merely as the place orders arrive from.
Node measurement layer — the line-level join is the whole project
Order lines live in the OMS; pick confirmations live in the WMS; the two are frequently reconciled only at order level, for billing. Until they are joined at line level, single-node fill rate does not exist as a number and neither does an honest cost per delivered order. This is weeks of integration work with no visible output, which is exactly why it gets deferred in favour of something demonstrable. It is also the prerequisite for every number the rest of the architecture produces.
Decision models — small numbers, honest intervals
A node-SKU-day forecast deals in single-digit daily quantities across thousands of lines, which is a genuinely harder statistical problem than a store-week forecast and produces wider relative intervals. The failure mode is presenting a point estimate to a category owner who then treats it as a fact. Publish the interval, and design the assortment optimiser to act on the confident tails — the lines that are clearly ordered and clearly not — rather than on the uncertain middle where the model has little to say.
Write-back and delivery — the fallback source is the political key
The component most often skipped is the fallback: min/max levels and the fixed slot grid, one switch away, tested. It reads as engineering pessimism and it is actually what unlocks approval, because an operations director will accept a new decision source they can revert in a minute. A proposal to let a model change assortment or close windows, without a drilled revert, sits in a change queue for two quarters. With one, it ships.
Capacity throttling — an automated action the customer can feel
Withdrawing a delivery window is the only decision in this architecture that reaches the customer before anything has been picked, which makes it the one that needs the most conservative design. Withdraw the tightest windows first and leave the loose ones open, so demand is shaped rather than refused; log every withdrawal with the queue depth that triggered it; and pair the automatic path with a manual override from the first day, because the first time a node closes itself on a Saturday somebody senior will want a switch. Throttling is also the only place where an over-conservative threshold costs revenue rather than service, so it needs a review cadence of its own.
Why the safety layer belongs in the architecture and not in a policy binder
A node is small, busy and often has people and mobile equipment in the same few hundred square metres, with food-handling duties on top. The evidence those obligations require — traceability of a batch, a date-code decision, a record of who authorised a mode change — is exactly the evidence the decision log produces as a by-product. Build the log as part of the write-back layer and audit preparation becomes an export. Build it later and it becomes a project, usually under time pressure.

On the fifth layer specifically: the operating patterns for automated actions that customers can feel are not novel and should not be invented here. Error budgets, paging policy, tested rollback and blameless review are described at length in Google's Site Reliability Engineering book (opens in a new tab), and importing them is faster than rediscovering them at the first bad Saturday. The one micro-fulfilment-specific addition is that the rollback has a physical component: reverting to manual picking changes the node's rate, so the revert path must include telling the storefront what the node can now do.

A 90-day plan: lift single-node fill rate on one node

The rung 2 → 3 move made concrete on one urban node, on one problem: too many orders leaving the node incomplete. Contains no capital spend and no new automation.

Moving one rung takes about 90 days when it is scoped to a single node and a single number, and several years when it is scoped to an estate. The plan below runs the rung 2 → 3 transition on the most common and most expensive micro-fulfilment problem: a node whose inherited assortment cannot complete a large share of its own orders, so the split premium is paid on every one of them. The quarter contains no new equipment — the work is a line-level join, a forecast, an add/drop list and an attribution.

Rung 2 → rung 3 on single-node fill rate, in one quarter

One node, one catchment, one named owner. If any phase needs more than its window, narrow the scope — one temperature regime, one category group — rather than extending the plan.

  1. Days 1–15

    Join the data and baseline the node

    Pick the busiest node. Join six months of OMS order lines to WMS pick confirmations at line level, and compute single-node fill rate, split rate, units per hour and cost per delivered order by daypart. Name the node manager as owner — fill rate becomes their number, alongside pick rate rather than instead of it.

    Four numbers by daypart, one named owner

  2. Days 16–40

    Forecast the catchment, not the country

    Build a node-SKU-day demand forecast from the node's own order history, with intervals rather than point estimates. Rank every line held by how often it appears in local orders and by what it displaces. The output is two lists: lines that appear in almost nothing, and lines the catchment orders together that the node does not hold.

    A ranked add list and a ranked drop list

  3. Days 41–70

    Write the assortment change into the WMS

    Take the drop list to the category owner and get line-by-line approval, recording every decision and its reason. Execute as WMS work — locations retired, slot moves scheduled, ordering parameters updated — and set replenishment for the added lines from the forecast rather than from commissioning min/max levels, with the old levels one switch away as the fallback.

    Assortment changed in the system, approvals logged

  4. Days 71–90

    Attribute in fill, splits and cost per order

    Compare against a holdout — a comparable node left on the old assortment, or the same node's pre-period with the daypart and basket mix corrected. Report the change in single-node fill rate, split rate and cost per delivered order. Not forecast accuracy, and not pick rate. This is the number that funds the next node.

    A cost-per-order delta a finance director accepts

The order matters

  1. Subtraction before addition

    Run the drop list first and let the freed locations sit empty for a cycle before filling them. Adding and dropping in the same week makes the effect unattributable, and it is the adds that will be argued about — having the space already free removes the strongest objection to the drops.

  2. Assortment before automation

    A node completing 70% of its own orders and picking at 300 UPH is worse economics than one completing 90% at 200 UPH, on the arithmetic set out earlier on this page. Fix which lines are in the node, then buy the rate. Automation bought first lands on the wrong assortment and locks it in, because the grid's slot count becomes the constraint on any later change.

  3. Approval before automation of the approval

    Keep the category owner's line-by-line approval through the first two cycles even where the model is clearly right. The approval log — which recommendations were accepted, which were overridden and why — is the dataset that later defines which classes of change can run unattended and which will always need a person, including the protected lines nobody should ever let a model drop.

  4. One node before one estate

    Build the shared layer when the second and third nodes are already asking for the same join and the same forecast. Building it before the first node has an attributable number encodes guesses as architecture, and micro-fulfilment estates vary enough between sites that the guesses will be wrong in expensive ways.

Instrumenting the node: formula, source, cadence

Where each node metric actually comes from — the formula, the system that produces it, and the rung at which it starts measuring something real.

A node metric you cannot name a source system for is an opinion. Every number argued about on this page reduces to timestamps, counts and invoice lines that the WMS, OMS, automation controller or courier platform already records — the instrumentation work is joining them, not creating them. The table below is the build sheet, and the 'honest from' column matters as much as the formula: a substitution acceptance rate before there is a substitution model is a measurement of picker habit, not of a decision.

MetricFormula / readSourceCadenceHonest from
Single-node fill rateOrder lines picked at the assigned node ÷ order lines orderedOMS lines joined to WMS pick confirmationsPer shiftRung 2
Split rateOrders requiring a second source ÷ orders assigned to the nodeOMSDailyRung 2
Cost per delivered order (CPO)(Pick labour + pack + node fixed + courier + split cost) ÷ delivered ordersWMS labour, finance, courier invoiceWeeklyRung 2
Units per hourUnits picked ÷ picker hours worked at the nodeWMS / warehouse control systemPer shiftRung 1
Promise attainmentOrders delivered inside the offered window ÷ orders deliveredOMS + courier proof of deliveryDailyRung 2
PurgeValue of short-life stock written off ÷ value of stock handledWMS stock movementsWeeklyRung 3
Substitution acceptanceSubstitutions kept ÷ substitutions offeredPick app + refunds and returnsWeeklyRung 3
Capacity attainmentOrders accepted ÷ forecast node capacity for that daypartSlot engine + WMS queue depthPer daypartRung 4
Automation availabilityMinutes the grid or AS/RS was available ÷ scheduled minutesAutomation controllerDailyRung 3
Escalation rateDecisions falling outside policy bounds ÷ automated decisionsDecision logWeeklyRung 5
Instrumentation build sheet for a micro-fulfilment node. 'Honest from' is the rung at which the metric first measures a decision rather than an accident.

Two of those pairs must always be reported together, because either one alone is misleading. Units per hour without single-node fill rate rewards a node for picking the wrong lines quickly. Promise attainment without capacity attainment rewards a node for publishing a promise so loose that nothing can miss it. Put each pair on the same report, with the same owner, and the arguments that follow tend to be the productive ones.

Rung 3 node-readiness checklist

If you cannot tick all eight, the node is still at rung 2 regardless of what equipment is inside it. Tick as you go — this list works without JavaScript.

0 of 8 ticked

Nothing ticked — and that is the most common honest answer

Almost every operator running a dedicated node starts here, because the equipment decision came first and the measurement decision was never taken. Do not start with tooling. Start with the line-level join on one node and the four numbers that fall out of it; every other item on this list becomes obvious once you can see them.

Failure modes that quietly shut a node down

A node degrades faster than a shed and shows it later. Four regressions account for almost all of it.

A micro-fulfilment node degrades faster than a large facility and reveals it later. It is small, so there is no slack to absorb a fault; it is close to demand, so a local change in the catchment moves its whole basket mix; and it is usually measured on pick rate, which is the metric least sensitive to everything that actually goes wrong. Four regressions account for almost all of it, and each one has a cheap preventive measure.

Likelihood: highImpact: high

The assortment ages into the wrong few thousand lines

Catchments move — a new development, a competitor opening, a change in the local demographic — and a node stocked from a list agreed at commissioning drifts out of alignment with what its customers now order together. Fill rate slides by a point a month, which is invisible week to week and substantial by the end of a year, and it surfaces as courier cost rather than as an assortment problem.

PreventionA fixed assortment review cadence tied to the demand model, producing a dated add/drop list every cycle whether or not anyone asked for one.

Likelihood: highImpact: high

The promise stays open while the node falls behind

A published slot grid keeps selling the tightest windows regardless of queue depth, so a node that is forty minutes down at 10:00 has committed to another three hours of work it cannot do. The failure surfaces hours later as missed windows and a day of service recovery, and it is almost always attributed to the node rather than to the grid that oversold it.

PreventionA capacity feed from WMS queue depth into the slot engine, with automatic withdrawal of the tightest windows first and a tested manual override.

Likelihood: mediumImpact: high

Automation downtime becomes a customer event

A node with a grid has a hard rate and no spare aisles. When the automation stops, manual picking runs at a fraction of the rate in a space designed around the machine, so a two-hour fault consumes most of a trading day. Where no degraded mode was designed, the choice on the day is between cancelling orders and delivering them late.

PreventionA rehearsed degraded mode with a stated lower published capacity, drilled quarterly, and a revert path that includes telling the storefront the new rate.

Likelihood: highImpact: medium

The node is managed on pick rate alone

Units per hour is easy to measure, easy to compare between sites and immediately legible to a general manager, so it becomes the node's identity. A node can improve UPH every quarter while its fill rate falls, its purge rises and its cost per delivered order goes backwards — and everyone involved will be able to point at an improving number.

PreventionReport units per hour and single-node fill rate on the same page with the same owner, and never quote one without the other.

Glossary

Hover a term for its definition — or expand the map full screen. The full definitions are written out below.

Micro-fulfilment centre (MFC)
A small fulfilment node sited close to demand — typically a few thousand square feet inside, behind or beside a store — holding a narrow assortment for same-day delivery and collection. Walmart calls its in-store version a Market Fulfillment Center, renamed Accelerated Pickup and Delivery in 2025.
Dark store
A retail-format building closed to the public and operated purely as a fulfilment node. It removes the collision between pickers and shoppers but does not, on its own, change the assortment or the economics of the node.
Single-node fill rate
The share of an order's lines the assigned node can supply from its own stock. The metric that governs micro-fulfilment economics, because everything it cannot supply becomes a split. Requires an order-line-to-pick-confirmation join to compute.
Split order
An order the assigned node cannot complete alone, so part of it is sourced elsewhere. It counts as one order in most reporting and carries the cost of two — which is why order-level costing systematically understates the price of a poor assortment.
Split premium
The additional cost a split order carries: a second pick-and-pack cycle and, usually, a second delivery leg with its own failed-attempt risk. The cost term with the steepest gradient against fill rate.
Cost per delivered order (CPO)
The fully loaded cost of getting one order to a customer, decomposed into pick labour, the split premium, the delivery leg, node fixed cost and purge. The only node metric that a finance review will accept on its own.
Units per hour (UPH)
Units picked per picker hour at the node. The most visible node metric and the least sensitive to what usually goes wrong; it should never be reported without single-node fill rate beside it.
Goods-to-person (GTP)
A picking arrangement in which stock is brought to a stationary picker by an automated system rather than the picker walking to the stock. Raises the node's throughput ceiling and fixes the number of storage locations, which becomes the binding constraint on later assortment changes.
Purge
Short-life stock written off because it was held against demand that did not arrive. In a node it is the earliest visible symptom of an over-wide assortment, showing up weeks before the effect reaches cost per delivered order.
Order sourcing (distributed order management)
The decision about which node, store or shed fulfils a given order. Assigning by postcode guarantees the split premium is paid whenever the nearest node is short; scoring nodes on stock, predicted pick time and delivery cost is where it is genuinely avoided.
Capacity-aware promising
Offering delivery windows at checkout against the node's live pick queue and courier availability, withdrawing the tightest windows when the node is at its limit. The mechanism that stops a good node having a failed Saturday.
Degraded mode
A rehearsed operating state with a stated lower published capacity, used when the node's automation is unavailable. Its absence is why a two-hour automation fault regularly becomes a full day of late deliveries.

Frequently asked questions

The questions operators ask most often when deciding whether to build a micro-fulfilment node, and how to run the one they already have.

What is a micro-fulfilment centre?

A micro-fulfilment centre is a small fulfilment node sited close to demand — typically a few thousand square feet inside, behind or beside a retail store — that holds a narrow assortment and serves same-day delivery and click-and-collect rather than the full shopping mission. It may be automated or manual. Walmart's in-store version runs on its Alphabot storage-and-retrieval system; Ocado sells both an automated store-based version and a software-only in-store fulfilment product. The defining constraint is not floor area but the number of SKUs the node can hold.

Does AI in micro-fulfilment mean robots?

No, and treating it that way is the most expensive mistake in this space. Robotics raises the node's throughput ceiling and lowers labour per unit, both real and measurable. But the decisions that determine whether a node pays sit 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 running against the WMS, OMS and storefront, and they are available to an operator with no automation at all.

What is single-node fill rate and why does it matter more than pick rate?

Single-node fill rate is the share of an order's lines the assigned node can supply itself. It matters because every line it cannot supply turns the order into a split, and a split carries a second pick, a second pack and usually a second delivery leg. Pick rate improves one cost term; fill rate improves the term with the steepest gradient. On the illustrative arithmetic set out on this page, a ten-point fill-rate gain is worth roughly seven index points of cost per delivered order — larger than most pick-rate programmes deliver.

How dense does demand have to be before a node makes sense?

Density is only half the test; assortment concentration is the other half. A dense catchment whose demand sits in a long tail will split a third of its orders from any small node, and is better served by a larger urban unit or by keeping the tail on the regional shed. A concentrated assortment in a dispersed catchment cannot amortise automation, so a dedicated back-of-store pick face beats a capital project. Plot the two axes before committing: two of the four quadrants say do not build a micro-fulfilment centre.

Should we start with a dark store or an automated node?

Start with neither, and instrument what you already have. A dedicated pick face inside an existing store, measured for a quarter, tells you the node's real fill rate, split rate and cost per delivered order — the three numbers that decide whether a dark store or an automated grid is the right next step, and what should be inside it. Operators who buy first almost always stock the new site with a shrunk copy of the store range, which duplicates the range without changing the cost curve.

How is this different from optimising warehouse throughput?

Warehouse throughput optimisation is a balance problem inside a large box: stations, waves, replenishment and labour arranged so the constraint moves as little as possible. Micro-fulfilment is a fit problem in a small box: the node has a hard rate, no spare aisles and a finite number of locations, so the questions are which SKUs deserve those locations and which orders the node should be allowed to take. The disciplines share tools and almost no decisions, and a throughput programme run on a node will optimise the wrong term.

What does a 30-minute delivery promise actually require?

It requires the fulfilment decision to happen at order capture rather than at dispatch. Walmart describes its 30-minute-or-less service as running on an algorithm using basket size, driver availability and distance from the store, live across 33 US markets on more than 100,000 eligible items. Three things must be true: the node holds the eligible assortment, the node's live capacity is visible to the storefront, and a courier is available now rather than in the next wave. Missing any one of them turns the promise into a service-recovery workload.

How do we measure whether a node is working?

Report two pairs together and never one alone. Units per hour with single-node fill rate, so speed cannot be bought by picking the wrong lines quickly; and promise attainment with capacity attainment, so a node cannot look reliable by publishing a promise nothing can miss. Underneath both, cost per delivered order decomposed into pick labour, split premium, delivery leg, node fixed cost and purge. All of it comes from timestamps and invoice lines your WMS, OMS and courier platform already produce.

What breaks first when a micro-fulfilment estate scales?

The assortment, in two directions at once. Nodes copied from a successful first site inherit that site's catchment assumptions, which are wrong for the next catchment; and the original node's own list ages as its catchment moves. Fill rate slides by a point a month at each, which is invisible week to week and substantial over a year, and it surfaces in the courier line rather than as an assortment problem. A fixed review cadence per node, producing a dated add/drop list every cycle, is the cheap preventive measure.

Where do safety and food-safety rules bite in a small node?

Harder than in a shed, because the space is tight and often shares a building with the public. Grocery nodes carry the same traceability, temperature and date-code duties as the store behind them, with product identification generally running on GS1 standards. Where mobile robots or automated storage are used, ISO 3691-4 covers driverless industrial trucks and the A3 series applies in the United States, and pedestrian separation in a busy small space is exactly the risk HSE and OSHA warehousing guidance addresses. None of it prohibits an AI decision in the loop; all of it requires the decision to be traceable.

How long does it take to move a node from rung 2 to rung 3?

About 90 days when scoped to one node and one number, and several years when scoped to an estate. The quarter contains no capital spend: a line-level join between OMS order lines and WMS pick confirmations, four baseline numbers by daypart, a node-SKU-day forecast, an approved add/drop list written into the WMS, and an attribution against a holdout node. The dominant cost is usually not engineering but the approval path for changing an assortment, which is why picking a node whose category owner is willing is the biggest lever on the timeline.

Can a third-party logistics provider run micro-fulfilment for us?

Operationally yes, and the arrangement is common. The thing to keep is the assortment decision and the data behind it. A provider can run the node, the picking and the last leg efficiently, but if the SKU list is set by your category team from national velocity and never revisited against the node's own order history, the split premium is being paid by you and measured by nobody. Contract for the line-level data feed and a fill-rate service level, not only a pick-rate one, before the first node opens.

About the author

Atomic Loops Engineering

Industrial AI practice

Atomic Loops builds production AI systems for manufacturing, logistics and energy operators — forecasting, sourcing, vision inspection and decision support running against live operational data, integrated into the WMS, OMS and storefront rather than delivered as dashboards.

  • · Production deployments across warehousing, store fulfilment and last-mile
  • · Node-level assessments run jointly with operations and category teams
  • · Integration-first delivery: WMS and OMS write-back, monitoring, rollback
  • · 15 cited sources on this page

Sources

  1. WalmartWalmart opens first Market Fulfillment Center in Arkansas (opens in a new tab)
  2. WalmartWalmart brings 30-minute-or-less delivery to 33 U.S. markets (opens in a new tab)
  3. Ocado GroupIn-Store Fulfilment — OSP (opens in a new tab)
  4. Ocado GroupStore Based Automation (opens in a new tab)
  5. Ocado GroupCustomer Fulfilment Centres (opens in a new tab)
  6. AmazonSame-Day Delivery (opens in a new tab)
  7. AmazonNew AI and robotics systems in Amazon operations (opens in a new tab)
  8. MHIAnnual Industry Report (opens in a new tab)
  9. GS1GS1 General Specifications (opens in a new tab)
  10. OSHAWarehousing safety guidance (opens in a new tab)
  11. HSE (Great Britain)Workplace transport safety (opens in a new tab)
  12. Food Standards AgencyFood safety and traceability guidance (opens in a new tab)
  13. A3 — Association for Advancing AutomationIndustrial robot safety standards (opens in a new tab)
  14. ISOInternational standards catalogue (ISO 3691-4, ISO 28000) (opens in a new tab)
  15. GoogleSite Reliability Engineering (opens in a new tab)

Find out what one node actually costs you — then what to do about it

We join your order lines to your pick confirmations, decompose cost per delivered order into its five terms, and hand back the assortment changes that would move the largest one. You keep the analysis whether or not we build anything.

Published · Last updated

Benchmark request

Tell us where to send it

Benchmark for this page

Used once, to send this benchmark and follow it up personally. No newsletter, no automated sequences.