The Ops Atlas xOps School

Industry & Organisation Established term Partly verified

RetailOps

RetailOps (retail operations) runs the store and its channels so the right product is on the shelf or ready for pickup, correctly priced, at a labour cost the business can sustain, with records that match physical reality.

Key takeaways

  • Retail operations is an established field; the one-word 'RetailOps' is informal and is also a software brand (acquired by Flowspace in 2023).
  • In FMCG studies, most out-of-stocks were traced to store practices rather than upstream supply: phantom stock, product stuck in the backroom and poor shelf discipline.
  • Perpetual inventory records are wrong far more often than people assume (65% of records at one studied retailer), and wrong records quietly stop replenishment.
  • Labour is the largest controllable store cost. Single-chain studies found that more labour, and more stable schedules, raised sales or profit, and that the effect differs by store: budget labour by store, not by a flat ratio.
  • Omnichannel turns the store into a fulfilment node: every pickup promise is only as good as the store's inventory record.
  • Measure with explicit denominators (conversion, IRA, OSA, shrink, pick-failure rate) and never compare shrink figures whose definitions differ.

RetailOps (retail operations) is the discipline of running stores and their sales channels day to day so that the product a customer wants is on the shelf or ready for pickup, at the right price, with enough trained people on the floor, at a cost the business can sustain. Its raw material is the store as an operating unit: deliveries, backroom, shelves, tills, people, pickup orders and returns, and the records that are supposed to describe all of them.

It sounds simple and is not. Thousands of items pass through hands-on processes, largely run by part-time staff, that update the records ordering, pricing and online availability rely on. When record and shelf disagree, the store orders the wrong thing, promises stock it does not have and loses sales nobody sees.

Written for beginners, store and area managers, retail operations and merchandising teams, analysts and engineers who build store systems, and leaders who set labour budgets and omnichannel promises. Sources were last verified on 2026-10-23.

Question Short answer
Goal Products available, correctly priced and well presented, at a sustainable labour cost, with trustworthy records
Primary users Store, area and regional managers; retail operations, merchandising and loss-prevention teams; retail analysts; store-systems engineers
In scope Store standards, receiving and replenishment, inventory record accuracy, on-shelf availability, shrink, planograms, price accuracy, POS operations, labour scheduling, pickup and ship-from-store, returns, store KPIs
Handed off Network planning and safety stock → SupplyChainOps; payments platforms → FinTechOps; campaigns → MarketingOps; e-commerce site → WebOps; customer journey design → CXOps
Prerequisites None; spreadsheet or SQL skills help with the labs
Key outputs Store operating standards, count and replenishment SOPs, labour model and schedules, availability and accuracy measures, a store scorecard, audit evidence
Minimum vocabulary PI: perpetual inventory, the system’s running count. IRA: inventory record accuracy. OOS / OSA: out of stock / on-shelf availability. Shrink: stock lost without a sale. BOPIS: buy online, pick up in store. More in the glossary
Term status Established under its spaced name “retail operations”; the one-word label is informal (explained below)
Evidence status Partially verified: every footnoted claim was checked against an opened source; gaps are listed in the ledger

Term status: an established field, an informal label and a brand

Link to section “Term status: an established field, an informal label and a brand”

“Retail operations” is a recognised field with stable roles and definitions. England’s government-approved Level 4 apprenticeship standard for a Retail manager (ST0325, approved in 2016, version 1.2 from 2023) lists what the job covers: sales targets and customer experience, team leadership, financial performance across the retail calendar, merchandising, stock control that minimises damage and loss, technology, and legal duties such as age-restricted sales and weights and measures.[1] Operations-management research has studied store execution for more than two decades,[2][3] and industry bodies publish identification and data standards for stores (GS1, and the ARTS standards now managed by the Object Management Group).[4][5]

The one-word “RetailOps” is not a recognised discipline name. It is also a product brand: in June 2023 Flowspace announced it had acquired RetailOps, which it described as a San Diego-based software company for omnichannel brands’ supply chain operations.[6] This page is about the practice, not that product.

  • Not supply chain planning. Forecasting, safety stock and network inventory are on SupplyChainOps. RetailOps owns whether the stock that arrived is recorded correctly, reaches the shelf and stays findable.
  • Not merchandising strategy. Choosing the assortment and the price is a merchandising and pricing decision. RetailOps executes the planogram and the price change, and reports when they cannot be executed.
  • Not loss prevention alone. Theft matters, but much shrink is process error: miscounts, unrecorded damage, scanning mistakes. A store that treats every variance as theft will not fix its receiving process.
  • Not e-commerce. The website and app are run on WebOps. RetailOps owns the store side of an online order: picking, staging, handover and the inventory promise behind it.
  • Not only physical stores. The same disciplines apply to a dark store, a pickup locker bank or a concession inside another retailer.

Retailers have invested heavily in planning systems, yet the best-documented failures are failures of execution. Raman, DeHoratius and Ton described two of them in 2001: inventory records that do not match what is in the store, and products that are in the store but cannot be found. At one leading retailer, 65% of inventory records were inaccurate; at another, misplaced products kept one in six customers who asked for help from finding what they wanted. They estimated that such problems “reduce profits by more than 10%”, and found large differences between stores of the same chain running identical systems.[2]

Availability research tells the same story from the customer’s side. Gruen and Corsten’s industry-funded guide put the average out-of-stock rate for fast-moving consumer goods at 8.3% and, summarising their 2002 worldwide study, attributed about 75% of out-of-stocks to retail store practices rather than upstream supply.[7] When the item is missing, many shoppers do not wait: in that study 31% bought the item at another store and 9% did not buy it at all.[7]

The table below is a composite of common failure patterns, not a report about one company.

Area Without disciplined retail operations With it
Availability The system shows stock, the shelf is empty, the item is not reordered Phantom stock is hunted with targeted counts; shelf gaps trigger a task
Labour Hours cut to hit the quarter; Saturday understaffed Labour model by store and hour; schedules stable and published early
Pickup Orders cancelled at pick because the stock never existed Promises limited to items whose records are trusted, with a buffer
Price Shelf label and till disagree Price changes executed and audited by sample, with overcharges tracked
Shrink One number, defined differently in every report Losses classified by cause, measured at cost, compared like with like

Four changes shaped the modern discipline. The milestones are documented; the thread linking them is this Atlas’s reading.

  1. The scanned barcode (1974). The first product scanned at a checkout was a 10-pack of Wrigley’s Juicy Fruit gum, on 26 June 1974, in a Marsh supermarket in Troy, Ohio.[8][9] Scanning made item-level sales data cheap, and that data later fed perpetual inventory and automatic ordering.
  2. Perpetual inventory and automatic ordering. Once every sale decremented a running count, stores could reorder automatically, and a wrong count began to drive the order.
  3. The execution research of the 2000s. Studies showed how often store inventory records were wrong,[3] and FMCG out-of-stock studies traced most out-of-stocks to retail store practices rather than upstream supply.[7]
  4. RFID and omnichannel. GS1’s EPC “Gen2” air interface for passive UHF tags was first published by EPCglobal in 2004, with Gen2v2 in 2013 and a Gen2v3 update since.[10] As stores began fulfilling online orders, the inventory record became a customer promise: Target, for example, reports that its stores fulfil the majority of its digitally originated sales (see Use cases).

The next change is already scheduled: GS1 US describes Sunrise 2027 as a transition from 1D UPC barcodes to 2D barcodes such as QR codes, asking retailers to make sure their point-of-sale scanners can read them and extract the product number (GTIN).[11]

Term Meaning Example
SKU Stock-keeping unit: the retailer’s identifier for one sellable variant A jacket in size M and colour navy
GTIN GS1’s Global Trade Item Number for trade items (what the barcode encodes)[4] The 12- or 13-digit number under the barcode
Perpetual inventory (PI) The system’s running count of units on hand per SKU and location PI says 6 units of SKU 100232
Inventory record accuracy (IRA) Share of counted records whose PI matches the physical count (exactly or within a tolerance) 5 of 12 counted records match: 41.7%
Phantom inventory PI is higher than what is physically there PI 6, shelf and backroom 0
Hidden inventory PI is lower than what is physically there PI 0, 4 units in the backroom
Store OOS / shelf OOS The store has none / the store has some but not on the shelf[7] Delivery missed vs. cases stuck in the backroom
On-shelf availability (OSA) Share of planned items present and sellable on the shelf at a check 962 of 1,000 audited items present: 96.2%
Planogram (POG) The plan of where each product sits on a fixture and how many facings it gets[12] Cereal bay 4, shelf 3, two facings
Shrink Inventory lost without a sale; definitions vary (see shrink) Book inventory 1,000 units, counted 984
BOPIS / curbside Buy online, pick up in store / at the kerb Order at 10:00, collect at 12:00
Ship-from-store (SFS) Online orders picked and shipped from a store’s stock The store as a mini warehouse
CAO Computer-assisted ordering from PI, sales and parameters Order generated nightly per SKU

Mental model: four flows that must agree. A store is the meeting point of four flows: goods (deliveries, shelves, returns, losses), information (item master, prices, PI, orders, promises made online), people (hours, skills, tasks) and money (sales, payments, margin). Most RetailOps failures are a disagreement between two flows: goods and information disagree (phantom stock), people and goods disagree (cases not worked to the shelf), information and money disagree (shelf price differs from the till). The job is to detect those disagreements early and fix the process that created them, not just the number.

Figure 1. RetailOps and its neighbours: who owns which part of the store’s world
items, termsdeliveriesonline orderscard acceptancepeople, policyexperiencestore dataProcurementOps: buyingSupplyChainOps: network,DC stockRetailOps: the store as anoperating unitWebOps: site and appFinTechOps: paymentsPeopleOps: staff and payCXOps: journey designAnalyticsOps: metrics
Diagram source (Mermaid)
flowchart TB
  PR["ProcurementOps: buying"] -->|items, terms| SC["SupplyChainOps: network, DC stock"]
  SC -->|deliveries| RO
  WO["WebOps: site and app"] -->|online orders| RO
  FT["FinTechOps: payments"] -->|card acceptance| RO
  PE["PeopleOps: staff and pay"] -->|people, policy| RO
  RO["RetailOps: the store as an operating unit"]
  RO -->|experience| CX["CXOps: journey design"]
  RO -->|store data| AN["AnalyticsOps: metrics"]
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
  class RO core
  class SC,PR,CX,WO,AN,FT,PE neutral

Text equivalent: RetailOps, the store as an operating unit, sits in the centre. ProcurementOps supplies items and terms to SupplyChainOps, which sends deliveries to the store. WebOps sends online orders, FinTechOps provides card acceptance and PeopleOps provides people and policy. RetailOps delivers the experience that CXOps designs and measures, and sends store data to AnalyticsOps.

Neighbour Shared scope RetailOps focus The neighbour’s focus
SupplyChainOps Inventory, replenishment Record accuracy, backroom to shelf, store OOS vs shelf OOS Forecasts, safety stock, DC and network inventory
ProcurementOps Suppliers, items Receiving accuracy, vendor compliance at the dock Buying process, purchase orders, supplier onboarding
CXOps Customer experience Executing the experience in the store Designing and measuring the journey across channels
WebOps Online orders Pick, stage, hand over; the store-side promise Site performance, checkout, release of the web stack
FinTechOps Payments Till procedures, terminal inspection, cash handling Payment platforms, processing, fraud systems
AnalyticsOps Store KPIs Defining measures that reflect store reality Pipelines, dashboards, governed metrics
PeopleOps Store workforce Labour model, schedules, task execution Hiring, pay, policy, the employee record
MarketingOps Promotions Setting promotional displays and price changes in store Campaign process, targeting, attribution

The following charter is this Atlas’s proposal; no standards body publishes a RetailOps charter.

Mission. Make every store a place where the promised product is available at the promised price, served by enough trained people, with records the rest of the business can trust.

Principles.

  1. The shelf is the truth; the record is a claim. Treat perpetual inventory as an estimate to be tested, not a fact. Design processes that test it where it matters most.
  2. Fix the process, not the number. Correcting a count without finding why it drifted guarantees the next variance.
  3. Store first, then channel. Do not promise online what the store cannot reliably find on the shelf.
  4. Labour is a lever, not only a cost. Model hours from traffic and tasks by store and hour; protect the hours that sell.
  5. Standards are few, written and measured. A store can execute ten standards well, not a hundred.
  6. Measure with explicit denominators. Every rate states what is counted, over what, and when.
  7. Close the loop with the stores. Headquarters requests are capacity: every task sent to stores carries a time estimate and an owner.

Invariants (what must stay true). Every sale, receipt, transfer, return and write-off updates the record once and only once. Every price shown to a customer matches the price charged, or the customer is protected. No customer is promised a pickup the store cannot fill without the promise being measured.

A store’s operating system has seven building blocks. Each can be strong or weak independently, which is why the same software performs differently in different stores.

Building block What it is Why it matters
Item and price master The items the store sells, with GTINs, case packs and current prices Wrong item data breaks ordering and scanning before anything else[7]
Perpetual inventory Running count per SKU and location (shelf, backroom, pickup staging) Drives automatic ordering and online availability
Planograms and space Where each item goes and how much space it gets Sets shelf capacity, which interacts with case pack and delivery frequency
Receiving and replenishment Deliveries checked, recorded and worked to the shelf Many phantom and hidden stock errors start here or at the till
Labour model and schedule Hours by store, day and hour from traffic and task drivers Determines whether processes are actually done
Task management Work sent to stores, with time estimates and completion evidence Turns headquarters intent into store action, or into noise
POS and payments Tills, terminals, self-checkout and their procedures Records the sale; a scanning error creates two record errors

Titles vary; the table shows a common pattern, not a standard structure. Large stores often add an inventory or stock controller (counts, adjustments, backroom), and store systems and analytics teams own POS, PI, workforce tools and the scorecard. R = responsible, A = accountable, C = consulted, I = informed.

Activity Store manager Dept / shift lead Area manager Retail ops (HQ) Loss prevention Space / merch
Daily availability walk and gap fill A R I I – I
Cycle counts and adjustments A R I C C –
Receiving accuracy A R I C C –
Planogram resets A R I C – C
Price changes and price audits A R I C – C
Weekly schedule within labour budget A/R C C C – –
Labour model and standards C – C A/R – –
Shrink measurement and classification C – I C A/R –
Pickup promise rules (buffers, eligible items) C C I A/R – C
Task calendar sent to stores I I C A/R C C

Lifecycle: the store’s life and the year inside it

Link to section “Lifecycle: the store’s life and the year inside it”

Two lifecycles overlap. A store has a life: site selection, build and opening, a ramp-up of several months, steady state, remodels and resets, and eventually relocation or closure. Inside each year runs the retail calendar: seasonal plans, sets and resets, peaks (in many markets the year-end holidays), markdowns and clearance, then the physical inventory count that closes the books.

Figure 2. Lifecycle of a store and the seasonal loop inside steady state
Site and format decisionBuild, fit-out and systemsinstallPre-opening: hire, train,stock, test tillsOpening and ramp-upSteady stateSeason plan and floor setSell, replenish, countPeak tradingMarkdown and clearancePhysical inventory and reviewRemodel or relocationClosure: sell-down, transfer,decommission
Diagram source (Mermaid)
flowchart TB
  A["Site and format decision"] --> B["Build, fit-out and systems install"]
  B --> C["Pre-opening: hire, train, stock, test tills"]
  C --> D["Opening and ramp-up"]
  D --> E["Steady state"]
  E --> F["Season plan and floor set"]
  F --> G["Sell, replenish, count"]
  G --> H["Peak trading"]
  H --> I["Markdown and clearance"]
  I --> J["Physical inventory and review"]
  J --> F
  E --> K["Remodel or relocation"]
  K --> E
  E --> L["Closure: sell-down, transfer, decommission"]
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  class E,F,G,H,I,J core
  class A,K decision
  class L risk

Text equivalent: A store moves from a site and format decision, through build and systems installation, pre-opening hiring, training, stocking and till tests, to opening and ramp-up, then steady state. Inside steady state a seasonal loop repeats: season plan and floor set, selling with replenishment and counting, peak trading, markdown and clearance, physical inventory and review, then the next season plan. From steady state a store may be remodelled or relocated and return to steady state, or be closed with sell-down, stock transfers and decommissioning.

Each stage has its own risk. Pre-opening is the cheapest time to fix item and price errors: scan-test every fixture. Ramp-up stores lack sales history, so ordering and labour need manual parameters. Resets move thousands of items and create location and capacity errors (see the runbook). Closures concentrate shrink risk in transfers and write-offs.

Store operations works on a fixed rhythm. The cadences below are a common pattern; adapt them to format and size.

Cadence Forum Inputs Outputs
Daily Opening huddle (10 minutes) Yesterday’s sales vs plan, today’s deliveries, pickup volume, gaps from the walk Task priorities and owners for the day
Daily Availability walk Shelf gaps, empty pegs, wrong labels Gap-fill tasks; count requests for suspected phantom stock
Weekly Store review Scorecard: sales, conversion, labour, IRA, OSA, pickup failures Two or three improvement actions
Weekly Area call Store-to-store comparison Coaching, escalations, shared fixes
Monthly Operations business review (HQ) Chain trends, task load sent to stores, standards compliance Changes to standards, labour model, task calendar
Seasonal / annual Physical inventory and shrink review Book vs counted inventory, loss classification Shrink plan per store and category

Controls that keep the model honest. Head-office tasks carry a time estimate and a weekly cap, with completion evidence that audits sample. Large inventory adjustments need a second person. Price changes are audited by sample, using the same logic weights-and-measures inspectors use (see price accuracy). Escalation is explicit: a process defect that recurs in three stores becomes a head-office problem, not a store’s.

Reference architecture: the store systems map

Link to section “Reference architecture: the store systems map”

The architecture below is a logical map, not a product recommendation; real retailers merge some boxes and split others. What matters is which system is the source of truth for each fact, and where physical work updates it.

Figure 3. Store systems: sources of truth and the flows between them
items, pricescase packsshelf capacitysales, returnsscanson hand by locationpick taskstasksstore orderssales, variancesItem and price masterPOS and self-checkoutPerpetual inventory bylocationSpace planningHandheldsOrder managementWorkforce and tasksReplenishmentData platform, scorecard
Diagram source (Mermaid)
flowchart TB
  IM["Item and price master"] -->|items, prices| POS["POS and self-checkout"]
  IM -->|case packs| PI
  SP["Space planning"] -->|shelf capacity| PI
  POS -->|sales, returns| PI["Perpetual inventory by location"]
  HH["Handhelds"] -->|scans| PI
  PI -->|on hand by location| OMS["Order management"]
  OMS -->|pick tasks| HH
  WFM["Workforce and tasks"] -->|tasks| HH
  PI -->|store orders| SC["Replenishment"]
  PI -->|sales, variances| DW["Data platform, scorecard"]
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef neutral fill:#f1f4f6,stroke:#5b7a87,color:#122029
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  class PI risk
  class POS,WFM,HH core
  class IM,SP,OMS,SC,DW neutral

Text equivalent: The item and price master sends items and prices to the POS and case packs to perpetual inventory; space planning sends shelf capacities. The POS (sales, returns) and handheld scans (receiving, counting, picking) update perpetual inventory by location. Perpetual inventory publishes on-hand stock by location to order management, which applies the promise policy and sends pick tasks to handhelds; workforce management sends tasks to the same handhelds. Perpetual inventory also generates store orders for replenishment and sends sales and variances to the data platform and scorecard. Perpetual inventory is highlighted as the riskiest component because every other flow depends on it.

Three design decisions matter more than vendor choice:

  1. Inventory by location, not by store. A store that records only “units in store” cannot separate store OOS from shelf OOS. Record at least shelf, backroom and pickup staging.
  2. One writer per fact. Prices should be changed in one system and pushed everywhere; inventory adjustments should be made through one audited path. Every “quick fix” path (a manager override screen, a spreadsheet upload) becomes a source of untraceable variance.
  3. Available-to-promise is a policy, not a copy. What the website shows should be PI minus a buffer that depends on how accurate that item’s record is, minus stock already promised. Lab 4 shows the trade-off.

Standards cover parts of this map: the ARTS Operational Data Model (133 subject areas, now maintained by the Object Management Group) and OMG’s UnifiedPOS interfaces to scanners, printers and scales.[13][5] Use them as a checklist even if you buy rather than build.

End-to-end workflow: one pickup order, happy path and exception path

Link to section “End-to-end workflow: one pickup order, happy path and exception path”

Online orders collected in store are the clearest example of RetailOps in an omnichannel world, because every step crosses a boundary between record and reality.

Figure 4. A pickup order from promise to handover, with the not-found exception
Inventory recordAssociateOrder systemCustomerATP = on hand - buffer - reservedHands over at counteralt[Found][Not found]Places pickup order1Confirmed if ATP is 1 or more2Pick task, due time3Look up locations4Shelf, backroom, staging5Scan item, stage it6Order ready7Ready message8Arrives, checks in9Customer waiting10Handover scanned11Record zero, count location12Short pick13Substitute or refund14
Diagram source (Mermaid)
sequenceDiagram
  autonumber
  participant C as Customer
  participant O as Order system
  participant A as Associate
  participant P as Inventory record
  C->>O: Places pickup order
  Note over O: ATP = on hand - buffer - reserved
  O-->>C: Confirmed if ATP is 1 or more
  O->>A: Pick task, due time
  A->>P: Look up locations
  P-->>A: Shelf, backroom, staging
  alt Found
    A->>P: Scan item, stage it
    A->>O: Order ready
    O-->>C: Ready message
    C->>O: Arrives, checks in
    O->>A: Customer waiting
    Note over A: Hands over at counter
    A->>O: Handover scanned
  else Not found
    A->>P: Record zero, count location
    A->>O: Short pick
    O-->>C: Substitute or refund
  end

Text equivalent: The customer places a pickup order. Order management computes available-to-promise as a policy: the on-hand figure from the inventory record minus a buffer and minus stock already reserved. If that is at least one, it confirms a pickup time and sends a pick task to a store associate, who looks up the item’s shelf, backroom and staging locations in the inventory record. In the found branch, the associate scans and stages the item and marks the order ready; the customer is notified, arrives and checks in, the order system tells the associate the customer is waiting, and the associate hands the order over at the counter and scans the handover. In the not-found branch, which replaces staging and handover, the associate records zero, counts the location and reports a short pick, and order management offers a substitute or refunds the line.

The exception path is where RetailOps earns its keep. A “not found” is direct evidence of phantom inventory. A well-run process counts or zeroes the record at once, so the next customer is not promised the same missing unit and replenishment resumes; a poor one cancels the line and leaves the record unchanged.

The promise itself changes behaviour. After one retailer launched buy-online-pick-up-in-store, Gallino and Moreno found that online sales fell while store sales and traffic rose, which they attribute to pickup customers buying more in the store and to shoppers who researched online and bought in the store.[14] Reliable availability shown online moves demand into the store, so the store has to be ready for it.

Inventory truth: accuracy, availability and shrink

Link to section “Inventory truth: accuracy, availability and shrink”

This part is the centre of the page: most of the decisions that make or break a store depend on whether its records describe reality.

Why records drift, and why it is self-reinforcing

Link to section “Why records drift, and why it is self-reinforcing”

Every movement of goods should update the record exactly once. In practice, errors enter at many points. Gruen and Corsten list, among others: an item scanned at the till as a similar item (one record too low, another too high), unrecorded damage or theft, store staff able to change on-hand figures, incorrect audits, product lost in the backroom, mislabelled cases from the distribution centre and poor master data for promotional items.[7] In DeHoratius and Raman’s study of nearly 370,000 records from 37 stores of one retailer, 65% of records were inaccurate. Far more of the variation lay between product categories (26.4%) than between stores (2.7%), which leaves most of it at the level of individual items. Inventory auditing practices reduced inaccuracy, while complex store environments and the distribution structure increased it.[3] That is one reason to target counts at items rather than run store-wide counting campaigns.

The dangerous error is phantom inventory, because it switches off its own detection: the record says there is stock, so the automatic order does not fire, the shelf stays empty, nothing sells, and nothing in the sales data looks wrong.

Figure 5. The phantom-stock trap: how a record error freezes replenishment
Unrecorded loss or mis-scanRecord shows 4, shelf has 0Order logic sees enoughstockNo replenishment orderedShelf stays emptyNo sales recordedRecord never decreasesDetect: no sale for anunusually long timeTargeted count correctsrecordOrder fires, shelf refilled
Diagram source (Mermaid)
flowchart TB
  A["Unrecorded loss or mis-scan"] --> B["Record shows 4, shelf has 0"]
  B --> C["Order logic sees enough stock"]
  C --> D["No replenishment ordered"]
  D --> E["Shelf stays empty"]
  E --> F["No sales recorded"]
  F --> G["Record never decreases"]
  G --> B
  E --> H["Detect: no sale for an unusually long time"]
  H --> I["Targeted count corrects record"]
  I --> J["Order fires, shelf refilled"]
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  class A,B,C,D,E,F,G risk
  class H decision
  class I,J core

Text equivalent: An unrecorded loss or mis-scan leaves the record showing 4 units while the shelf has none. The ordering logic sees enough stock and orders nothing, so the shelf stays empty, no sales are recorded and the record never decreases, which keeps the loop going. The way out is detection: an item that has not sold for an unusually long time is counted, the count corrects the record, the order fires and the shelf is refilled.

Gruen and Corsten found the effect in audit data: for one US retailer, items whose record matched the physical count had an out-of-stock rate of 4.1%, against 8.9% for items whose record did not, about 2.2 times higher.[7]

Inventory record accuracy is measured by counting a sample of records and comparing each count with the record at the same moment (after freezing or adjusting for sales during the count).

  • Exact-match IRA = records where counted = recorded ÷ records counted.
  • Tolerance IRA = records within a tolerance (for example ±1 unit, or ±5% for high-volume items) ÷ records counted.
  • Absolute variance at cost = Σ |counted − recorded| × unit cost. Net variance = Σ (counted − recorded) × unit cost.

Report exact-match and absolute figures. Net variance flatters a store: phantom and hidden errors cancel in money, yet phantom stock stops replenishment and hidden stock ties up space and cash. The audits Gruen and Corsten report show how far reality can be from assumptions: exact-match accuracy of 32% to 45% across four studies, and, in one audit of 166 items in 121 stores, 45.4% exact, 18.8% off by one unit and 25.8% off by three or more.[7] Those were individual retailers in the 2000s; measure your own.

Where to count. Counting everything continuously is too expensive, so count where errors are likely and costly: items with no sales for an improbably long time given their usual rate (Lab 2 computes this), items with a recent “not found” at pick, high-value or high-theft items, items after a planogram change, and items with frequent manual adjustments. Random counts are still needed to estimate accuracy honestly, because targeted counts are biased towards errors.

Store OOS versus shelf OOS, and how to measure availability

Link to section “Store OOS versus shelf OOS, and how to measure availability”

Gruen and Corsten distinguish three out-of-stock types from a retailer’s perspective: distribution centre, store (the store has no inventory, from ordering, forecasting or supply mistakes) and shelf (inventory is in the store but not on the shelf, usually from store processes such as shelf space, restocking frequency and monitoring).[7] Different people fix them: store OOS through ordering and record accuracy, shelf OOS through space, replenishment labour and the backroom.

There are three ways to measure availability, and each measures something different:[7]

Method What it counts Strengths Limits
Physical shelf audit Gaps observed at a moment Direct, finds shelf OOS and wrong labels Expensive; a snapshot; no lost-sales figure
POS-based estimation Items not selling when they normally would Continuous, scalable, can estimate lost sales; reported accuracy of 85% or more Weak for slow movers; needs history
Perpetual inventory Records at zero Cheap, already available Blind to phantom stock, the most harmful case

A practical programme combines them: POS-based alerts for fast movers, a daily walk for the planogram’s critical items, and counts triggered by both. The fast movers deserve most of the attention: in Gruen and Corsten’s data, high-demand items had almost six times the out-of-stock lost sales of low-demand items.[7]

Shelf capacity and delivery frequency. A frequent cause of shelf OOS is a shelf too small for a fast mover’s demand between deliveries, combined with a case pack larger than the space left. Gruen and Corsten found that most shelf space was allocated by case pack rather than demand, and recommended demand-based planograms and matching delivery schedules to shelf demand instead of holding backstock, which they found positively related to out-of-stocks.[7] They also report that in one study, better shelf discipline (no “covering holes” with neighbouring products, no hidden product, accurate shelf tags) reduced out-of-stocks by about 40%, and that a 10% change in planogram compliance went with a 1% change in out-of-stock level.[7] Treat those as one programme’s results, not a law.

“Shrink” usually means the difference between the inventory the books say you should have and what a physical count finds, at cost or at retail. It is not a standardised measure. A study for the Retail Industry Leaders Association by Adrian Beck of the University of Leicester, released in 2016, found no consensus on how to define and measure retail losses and proposed a broader concept of total retail loss with a typology of retail costs and retail losses.[15] An inventory-services firm’s summary of the ECR total-retail-loss research separates the normal costs of retailing from losses, and notes that shrinkage has no universally agreed definition and that its root causes are typically unknown.[16]

Published averages are survey-based. The US National Retail Federation’s 2023 National Retail Security Survey reported an average shrink rate of 1.6% for fiscal 2022 (up from 1.4%), from 177 retail brands answering through senior loss-prevention executives, with internal and external theft accounting for 65% of shrink; it also noted that shrink varies significantly by sector.[17] Treat such figures with care: Retail Dive reported in January 2024 that NRF had withdrawn a widely repeated estimate about organised retail crime from one of its reports, and that NRF acknowledged the difficulty of gathering agreed data.[18]

What this means for operations:

  • Classify before you act. Split known losses (recorded damage, spoilage, return fraud, cash variances) from unknown losses (the residual at count), which mix theft and process error in unknown proportions.
  • Compare like with like. Same basis, denominator, markdown treatment and period (the worked calculation shows how far they move the figure).
  • Separate stock loss from record error. Some “shrink” is phantom stock created by mis-scans; fixing the scan process reduces reported loss without catching anyone.
  • Measure new technology’s effect. Self-checkout, scan-and-go and pickup lockers change both theft and honest error; compare matched stores before and after rather than relying on vendor or advocacy figures.

A price that differs between shelf and till costs money either way: overcharges create legal and reputational risk, and undercharges leak margin. In the United States, many weights-and-measures authorities use the Examination Procedure for Price Verification in NIST Handbook 130, developed from 1993 and adopted by the National Conference on Weights and Measures in 1995, which applies to all retail stores. An inspector samples items and compares the charged price with the lowest advertised, posted or marked price. A store passes a single inspection at 98% accuracy or better: in a 100-item sample, at most two errors. Both overcharges and undercharges count as errors for lower-level enforcement, but higher levels of enforcement, such as fines or penalties, rest on overcharges alone. A ratio of overcharges to undercharges of 2 to 1 or 3 to 1 may indicate systematic problems, and the handbook applies that ratio once at least 10 errors have been found, over several inspections or in one large sample.[19] Each state decides whether and how to adopt the procedure.

In the European Union, announced price reductions are regulated: in September 2024 the Court of Justice held, in a case about a discounter’s weekly brochures, that a reduction announced as a percentage or as a promotional statement must be calculated from the lowest price the trader applied in at least the 30 days before the reduction.[20] The directive lets member states set different rules for goods liable to deteriorate or expire rapidly (most perishables), a shorter period for products on the market for less than 30 days, and a different reference for progressively increasing reductions,[21][22] so check the national transposition. For store operations that means the price history behind each shelf-edge “was/now” label must be retained and checked, not only the current price.

Operationally, price integrity rests on four controls: changes made in one system and pushed to tills and labels; labels changed on the effective day, with evidence; a weekly sample audit using the inspectors’ arithmetic; and a till rule that protects the customer when shelf and till disagree.

Practice Goal Trigger Owner Output Verification
Receiving Record exactly what arrived Each delivery Receiving lead Receipt matched to advance notice or count Sample recount of received cases
Cycle counts (targeted and random) Fix likely errors; estimate accuracy honestly Daily exception list; weekly random sample Stock controller Adjustments with reason codes; unbiased IRA Re-count sample; IRA trend
Backroom to shelf Get stock that is in the building onto the shelf Delivery, gap walk, pick shortfall Replenishment team Gaps filled; backroom by location Daily OSA audit of critical items
Planogram reset Put the space plan on the fixture Reset calendar Department lead Fixture matches POG; capacities updated in PI Photo plus compliance check
Price change Shelf, till and online show the same price Price file effective date Front end / department Labels changed same day Sample price audit
Markdown and clearance Clear seasonal stock at planned depth Season plan Department lead Marked units, updated prices Sell-through vs plan
Returns Put sellable returns back quickly; record the rest Each return Front end Restocked, returned to vendor or written off, with reason Returns reason analysis
Recall and withdrawal Remove affected product fast and provably Supplier or regulator notice Store manager Product pulled and quarantined; count reported Close-out confirmation per store
Pickup operations Fill and hand over online orders on time Order release Pickup lead Orders ready by promised time Pick-failure rate, on-time-ready rate

Receiving. Phantom and hidden stock are often born at the back door: a case recorded but not delivered, or delivered but never received. Compare delivery documents with what is unloaded for a sample every day, and treat suppliers’ shipment notices as claims to verify, with stricter checks for direct-store-delivery vendors, whose goods bypass the distribution centre’s checks.

Cycle counting. A daily targeted list (Artefact 2) fixes errors; a weekly random sample estimates accuracy. Reason codes make patterns visible: negative adjustments after deliveries point to receiving; after promotions, to mis-scans.

Backroom to shelf. The backroom should hold only what does not fit on the shelf, organised by location so that it can be found. A backroom full of partial cases is a sign of a planogram that is too small for the case pack, or of deliveries that are too large or too frequent for the shelf (see shelf capacity).

Returns. Returns are a large flow that stores must process: in a survey of 249 professionals at large US retailers (revenue above $500 million), released in December 2024, retailers estimated that 16.9% of their 2024 sales would be returned.[23] Each return creates a record decision (sellable, damaged, return to vendor, fraud review), and each wrong decision creates a record error or a loss.

Labour: the labour model and stable schedules

Link to section “Labour: the labour model and stable schedules”

Labour is the largest cost a store manager controls: the Stable Scheduling Study cites an estimate that it accounts for 85% of controllable costs in retail stores.[24] That makes it the first lever pulled when a quarter looks weak.

  • Labour drives execution, and execution drives profit. In a large retailer’s stores, Ton found that more labour went with higher profitability through conformance quality (processes done correctly), not service quality, and warned that a corporate focus on payroll can push managers to understaff.[25]
  • One ratio does not fit all stores. Fisher, Gallino and Netessine estimated each store’s revenue response to labour from random gaps between planned and actual staffing. Applied in 168 stores for six months, the method raised revenue by 4.5% and profit by nearly $7.4 million a year; stores with high potential demand, nearby competitors and experienced managers gained most.[26]
  • Stability is not the enemy of productivity. In an experiment in 28 Gap stores (19 treatment, 9 control; stores were randomly assigned, except three pretest stores that stayed in treatment), a bundle of five practices raised median sales by 7% and labour productivity by 5%. The bundle included extra staffing hours, funded outside the store budget, in 13 of the 19 treatment stores; the authors attribute the gain to stable scheduling. Only 30% of the variability in weekly payroll hours was explained by changes in traffic, so most instability was not forced by customers.[24]

These are single-chain studies, and none tested a cut. They do not prove every store is understaffed; they show that labour’s revenue effect is real and differs between stores, so budgets should be tested, not cut by a flat percentage.

Building a labour model. A defensible model has three layers:

  1. Fixed hours: opening, closing, cash, minimum safe staffing.
  2. Variable selling hours: driven by forecast traffic or transactions by hour (Lab 3 uses visitors per associate).
  3. Task hours: driven by workload, with engineered or measured time standards (cases received, labels changed, pickup orders picked, returns processed).

The model sets the budget; the schedule assigns people. Schedules should then be published early and changed rarely, both for the reasons above and because several jurisdictions require it. As of October 2026, New York City’s Fair Workweek law requires retail employers to give workers their schedules 72 hours before the first shift, bans on-call shifts, and bars cancelling a shift with less than 72 hours’ notice;[27] Oregon requires large retail, hospitality and food-service employers to post schedules at least 14 calendar days in advance and to pay extra for many changes made without that notice.[28] Rules differ by city, state and country, and thresholds and exemptions matter; check the rule that applies to each store with counsel.

When stores fulfil online orders, they take on warehouse work in a building designed for shoppers. Target is a documented example of stores used as fulfilment hubs (see Use cases).

Model How it works Store impact Main risk Fits when
Pickup in store (BOPIS) Associates pick from the sales floor; customer collects inside Pick labour, staging space, counter staffing Promises on phantom stock; slow handover Dense store network, good IRA on eligible items
Curbside / drive-up As BOPIS, handed over at the car Adds run-out labour and parking bays Peaks in short windows Customers value speed; parking available
Ship-from-store Store picks and packs parcels Packing station, carrier pickups Competes with shoppers for stock and staff Stores hold stock the DC lacks; markdown risk high
Dark store / micro-fulfilment Store-like site closed to shoppers Not a selling store Utilisation and capital cost Online volume high enough to justify it
Returns in store (BORIS) Online purchases returned at a store Return processing and resale decisions Unsellable stock in the wrong place Store network is a convenience for customers

The choice between them is a decision about where the stock and the labour already are; the decision tree in Deciding and adopting helps.

Mandatory rules and voluntary standards are mixed in retail; know which is which.

Item Type What it governs Applies
GS1 GTIN and barcodes Voluntary industry standard, near-universal in practice Item identification at the till and in receiving[4] Global
GS1 Sunrise 2027 Industry transition plan POS scanners that read 2D barcodes and extract the GTIN[11] Led by GS1 US; voluntary
GS1 EPC and RAIN RFID (Gen2) Voluntary standards Unique identifiers on passive UHF tags read without line of sight[29][10] Global
ARTS ODM and UnifiedPOS Voluntary standards (OMG) Retail data model; interfaces to POS devices[5][13] Global
PCI DSS (payment terminals) Contractual standard via card brands and acquirers Card-data security, including inspection of payment terminals[30] Merchants accepting cards
NIST Handbook 130 price verification Model procedure adopted by US states Price-accuracy inspections[19] US, by state
EU price indication rules Law Prior-price basis for announced reductions[20] EU member states; national variants for perishables[21]
Scheduling laws Law Advance notice, changes, rest between shifts[27][28] Specific cities and states

Categories first; brand names change faster than jobs to be done. The selection criteria are what last.

Tool category Job it does Selection criteria Watch-outs
POS and self-checkout Record sales, returns, payments Offline resilience, scanner support (2D ready), payment-terminal integration Each mis-scan creates two record errors
Perpetual inventory / store inventory management Running count by location, adjustments, counts Location granularity, reason codes, audit trail Override screens without approval
Computer-assisted ordering Generate store orders from PI and forecasts Handles phantom stock (zero-sales alerts), case packs, shelf capacity Manual overrides that are not measured
Workforce management (WFM) Forecast-driven labour budgets and schedules Store-level drivers, rule engine for local laws, shift swapping Schedules optimised to the minute but unstable
Task management and store communications Send tasks with time estimates; collect completion Capacity caps, evidence capture, analytics Head office flooding stores with tasks
Space planning Planograms, fixture capacity Feeds shelf capacity to PI and ordering Plans that ignore case packs
Order management (OMS) Route online orders to stores; promise availability Per-item buffers, store capacity, substitution rules Promising from raw PI
RFID readers and tags Count tagged items quickly Tagging at source vs in store; reader coverage Business case varies by category
Shelf monitoring (cameras, robots) Detect gaps, price-label errors Accuracy on your fixtures; privacy Alerts nobody acts on
Loss prevention analytics Exception reporting on transactions and adjustments Rules plus review workflow False accusations; privacy obligations

Automation helps most where the store repeats the same judgement thousands of times: ordering, counting priorities, scheduling, gap detection. It fails where it acts on a record the store has not verified.

  • Automatic ordering beats manual overrides on average. Gruen and Corsten report that store staff who adjusted computer-suggested order quantities did worse than even imperfect computer forecasts.[7] Measure overrides; do not ban them blindly, because local knowledge (a local event, a broken freezer) matters.
  • RFID speeds up counting for tagged items: GS1 notes that RAIN RFID tags can be read at very high rates and at distances well over 10 metres without line of sight, which can increase inventory accuracy.[29] Run your own pilot with a control group before a chain-wide business case.
  • Machine learning and computer vision can rank items to count, detect empty facings and forecast traffic. They need ground truth (counts, audits) to be trained and checked, and inherit every bias in the records they learn from.
  • Generative AI assistants can answer “how do I” questions from the written standards; keep them away from prices and inventory adjustments without human confirmation.

Human approval should remain for large inventory adjustments, price overrides, schedule changes inside the legal notice window, and anything that accuses a person of theft.

Reference implementation: operating artefacts

Link to section “Reference implementation: operating artefacts”

The artefacts below are for a fictional mid-size chain, “ExampleMart” (120 stores, general merchandise and grocery, pickup in every store). They are this Atlas’s templates, meant to be copied and adapted; numbers are illustrative.

A store can execute a short list well. ExampleMart’s ten, each measured on the scorecard (Template 1):

  1. Every delivery received and recorded the same day.
  2. Availability walk of critical items before opening.
  3. Targeted count list completed daily.
  4. Every “not found” at pick counted within two hours.
  5. Price changes worked on the effective date.
  6. Planogram resets done by the due date, with photo evidence and updated locations.
  7. Backroom organised by location; no unlocated cases.
  8. Pickup orders ready by the promised time.
  9. Schedule published by the policy date; changes logged with reason.
  10. Payment terminals inspected on schedule; device list current.

Example status: operating template, not executed.

SOP-INV-03  Targeted cycle counts                         Version 1.2
Purpose     Correct the inventory records most likely to be wrong.
Scope       All sales-floor and backroom locations. Excludes pharmacy.
Owner       Stock controller (R); store manager (A).
Trigger     Daily exception list at 06:00 from the inventory system:
            - silent items (P(no sale) < 1% given usual sales rate)
            - every "not found" at pick in the last 24 hours
            - items reset in the last 7 days
            - high-value items on the weekly rotation
Steps       1. Print or open the list on a handheld; count before 10:00.
            2. Count shelf, backroom location and pickup staging.
            3. Enter the count; the system freezes sales during entry.
            4. If |counted - record| > 5 units or > $200 at cost,
               a second person recounts before posting.
            5. Choose a reason code for every adjustment.
            6. Fill the shelf from any hidden stock found.
Acceptance  100% of the list counted by 14:00; recounts documented.
Rollback    Adjustments posted in error are reversed with code R99
            and a note; never by editing the count.
Records     Count files kept 2 years; weekly summary to area manager.

Example status: operating template, not executed.

OPENING HUDDLE (10 min)                     Store 042   Date ________
1. Yesterday: sales vs plan ____  conversion ____  pickups ____
2. Pickup failures yesterday ____  all counted?  Y / N
3. Today's deliveries: time ____  cases ____  receiving owner ____
4. Gaps from the availability walk: top 5 items and owners
5. Head-office tasks due today (with time estimate): ____ hours
6. Labour: scheduled hours ____  vs model ____  gaps at ____
7. One safety or customer note

Artefact 4: head-office task request (intake form)

Link to section “Artefact 4: head-office task request (intake form)”

Head office competes for store hours. ExampleMart requires every task sent to stores to arrive through this form, and the retail operations team rejects requests without a time estimate or with a due date inside five working days. The form is YAML so that the task tool can validate it.

Example status: syntax-checked (YAML), not executed.

task_request:
  id: TR-2026-0412
  title: "Move seasonal candles to front table, bays 1-2"
  requester: "Merchandising, home category"
  business_reason: "Q4 seasonal plan; planogram POG-HOME-0412 attached"
  stores: "all formats A and B (94 stores)"
  due_date: "2026-11-09"
  time_estimate_minutes_per_store: 45
  skill_required: "visual merchandising"
  evidence_required: "photo of both bays after set"
  success_measure: "sell-through of candle line vs plan at week 4"
  affects_pickup_inventory: true   # locations change: counts needed
  approved_by_retail_ops: null     # filled in by retail operations

Which items can be promised for pickup, and with what buffer, should be a written policy that the order system applies. This example sets a buffer by record-accuracy class (from count history) and by sales rate.

Example status: syntax-checked (YAML), not executed.

pickup_promise_policy:
  version: 3
  owner: "Retail operations (A), e-commerce product (C)"
  default_buffer_units: 1
  accuracy_classes:            # from the last 90 days of counts
    A: {exact_match_min: 0.90, buffer_units: 0}
    B: {exact_match_min: 0.70, buffer_units: 1}
    C: {exact_match_min: 0.00, buffer_units: 2}
  fast_mover_extra_buffer:     # high rate means the shelf changes quickly
    daily_units_above: 20
    extra_units: 1
  never_promise:
    - "items with a not-found at pick in the last 7 days and no count"
    - "items counted zero in the last 24 hours"
  review: "monthly, using pick-failure rate and promised-but-filled rate"

Four labs on synthetic data: Python 3.8 or later and a shell, standard library only, no accounts and no cost. Each lab was run on 2026-10-23 exactly as printed (Python 3.8.10, Ubuntu Linux); the expected outputs are copied from those runs.

Lab 1 (beginner): a weekly store scorecard

Link to section “Lab 1 (beginner): a weekly store scorecard”

Objective. Compute the core store KPIs from daily totals and see why denominators matter. Prerequisites. Python 3.8+. Time. 20 minutes. Risk. None.

  1. Create a folder and the data file.

Example status: verified by execution on 2026-10-23 (bash, Linux).

mkdir -p ~/retailops-labs/lab1 && cd ~/retailops-labs/lab1
cat > week.csv <<'CSV'
date,traffic,transactions,units,net_sales,cogs,labour_hours
2026-09-07,1180,342,861,21540.00,12710.00,182
2026-09-08,1095,318,790,19870.00,11720.00,176
2026-09-09,1120,331,805,20410.00,12040.00,178
2026-09-10,1210,350,884,22300.00,13160.00,184
2026-09-11,1650,446,1172,29180.00,17220.00,214
2026-09-12,2240,571,1559,38920.00,22960.00,248
2026-09-13,1890,494,1301,32470.00,19160.00,226
CSV
  1. Save the script as scorecard.py.

Example status: verified by execution on 2026-10-23 (Python 3.8.10).

"""Weekly store scorecard from daily totals (standard library only)."""
import csv

SELLING_SQFT = 12000            # sales floor only
GROSS_SQFT = 15000              # including stockroom, fitting rooms, office
AVG_INVENTORY_AT_COST = 410000  # average of 13 month-end balances, last 12 months
TRAILING_GROSS_MARGIN = 1012000 # gross margin dollars, same 12 months
SEASON_RECEIVED = 2400          # units of the autumn jacket line received
SEASON_SOLD = 1530              # units sold since the line was set

with open("week.csv", newline="") as f:
    days = list(csv.DictReader(f))

traffic = sum(int(d["traffic"]) for d in days)
txns = sum(int(d["transactions"]) for d in days)
units = sum(int(d["units"]) for d in days)
sales = sum(float(d["net_sales"]) for d in days)
cogs = sum(float(d["cogs"]) for d in days)
hours = sum(float(d["labour_hours"]) for d in days)

print(f"Week: {days[0]['date']} to {days[-1]['date']} ({len(days)} days)")
print(f"Net sales           {sales:12,.2f}")
print(f"Conversion          {100 * txns / traffic:12.1f} %  ({txns} / {traffic})")
print(f"Avg transaction     {sales / txns:12.2f}")
print(f"Units per txn       {units / txns:12.2f}")
print(f"Gross margin rate   {100 * (sales - cogs) / sales:12.1f} %")
print(f"Sales / labour hr   {sales / hours:12.2f}")
print(f"Sales / sq ft (wk)  {sales / SELLING_SQFT:12.2f}  selling area")
print(f"Sales / sq ft (wk)  {sales / GROSS_SQFT:12.2f}  gross area")
print(f"GMROI (12 months)   {TRAILING_GROSS_MARGIN / AVG_INVENTORY_AT_COST:12.2f}")
print(f"Sell-through        {100 * SEASON_SOLD / SEASON_RECEIVED:12.1f} %  jacket line")
best = max(days, key=lambda d: int(d["transactions"]) / int(d["traffic"]))
worst = min(days, key=lambda d: int(d["transactions"]) / int(d["traffic"]))
for label, d in (("Best conversion ", best), ("Worst conversion", worst)):
    rate = 100 * int(d["transactions"]) / int(d["traffic"])
    per_hr = int(d["traffic"]) / float(d["labour_hours"])
    print(f"{label}    {d['date']}  {rate:.1f} %  visitors/labour hr {per_hr:.1f}")
  1. Run python3 scorecard.py.

Expected output.

Week: 2026-09-07 to 2026-09-13 (7 days)
Net sales             184,690.00
Conversion                  27.5 %  (2852 / 10385)
Avg transaction            64.76
Units per txn               2.58
Gross margin rate           41.0 %
Sales / labour hr         131.17
Sales / sq ft (wk)         15.39  selling area
Sales / sq ft (wk)         12.31  gross area
GMROI (12 months)           2.47
Sell-through                63.8 %  jacket line
Best conversion     2026-09-09  29.6 %  visitors/labour hr 6.3
Worst conversion    2026-09-12  25.5 %  visitors/labour hr 9.0

Validation. Check two numbers by hand: conversion 2,852 ÷ 10,385 = 27.5%; GMROI 1,012,000 ÷ 410,000 = 2.47. What to notice. The busiest day converted worst while each labour hour faced the most visitors: a hypothesis for the labour model to test, not proof. Sales per square foot differs by 25% depending on which area you divide by, so state the area every time. Troubleshooting. KeyError means the CSV header was changed; ZeroDivisionError means a day with zero traffic. Teardown. rm -r ~/retailops-labs/lab1.

Lab 2 (intermediate): record accuracy and phantom-stock suspects

Link to section “Lab 2 (intermediate): record accuracy and phantom-stock suspects”

Objective. Compute exact and tolerance IRA from a cycle count, see why net variance misleads, and rank uncounted items by how surprising their silence is. Prerequisites. Lab 1 setup. Time. 30 minutes. Risk. None.

  1. Create the count results and the list of uncounted items.

Example status: verified by execution on 2026-10-23 (bash, Linux).

mkdir -p ~/retailops-labs/lab2 && cd ~/retailops-labs/lab2
cat > counts.csv <<'CSV'
sku,system_oh,counted_oh,unit_cost
100231,12,12,3.10
100232,6,0,4.25
100233,24,23,1.80
100234,0,4,6.40
100235,8,8,12.00
100236,15,9,2.20
100237,3,3,25.00
100238,40,46,0.95
100239,5,2,8.75
100240,9,9,5.50
100241,2,0,31.00
100242,18,18,2.60
CSV
cat > on_hand.csv <<'CSV'
sku,system_oh,avg_daily_units,days_since_last_sale
200101,7,2.10,4
200102,3,0.05,30
200103,11,0.90,9
200104,5,1.60,1
200105,2,0.30,12
200106,14,3.40,2
200107,6,0.70,3
CSV
  1. Save the script as ira.py.

Example status: verified by execution on 2026-10-23 (Python 3.8.10).

"""Inventory record accuracy from a cycle count, plus phantom-stock suspects."""
import csv
import math

with open("counts.csv", newline="") as f:
    rows = list(csv.DictReader(f))

n = len(rows)
exact = within_one = phantom = hidden = 0
net_value = abs_value = 0.0
for r in rows:
    diff = int(r["counted_oh"]) - int(r["system_oh"])   # + means more on the shelf
    exact += diff == 0
    within_one += abs(diff) <= 1
    phantom += diff < 0
    hidden += diff > 0
    net_value += diff * float(r["unit_cost"])
    abs_value += abs(diff) * float(r["unit_cost"])

print(f"Records counted            {n}")
print(f"Exact-match accuracy       {100 * exact / n:.1f} %")
print(f"Within +/-1 unit           {100 * within_one / n:.1f} %")
print(f"Phantom (system > shelf)   {phantom}")
print(f"Hidden  (shelf > system)   {hidden}")
print(f"Net variance at cost       {net_value:9.2f}")
print(f"Absolute variance at cost  {abs_value:9.2f}")

# Items not yet counted: how surprising is the run of days without a sale?
ALERT = 0.01
print("\nCount next (P(no sale) below 1 %):")
with open("on_hand.csv", newline="") as f:
    for r in csv.DictReader(f):
        oh = int(r["system_oh"])
        rate = float(r["avg_daily_units"])
        days = int(r["days_since_last_sale"])
        p_zero = math.exp(-rate * days)    # Poisson chance of zero sales
        if oh > 0 and p_zero < ALERT:
            print(f"  {r['sku']}  on hand {oh:>2}  {days:>2} days silent  P={p_zero:.4f}")
  1. Run python3 ira.py.

Expected output.

Records counted            12
Exact-match accuracy       41.7 %
Within +/-1 unit           50.0 %
Phantom (system > shelf)   5
Hidden  (shelf > system)   2
Net variance at cost          -97.45
Absolute variance at cost     160.05

Count next (P(no sale) below 1 %):
  200101  on hand  7   4 days silent  P=0.0002
  200103  on hand 11   9 days silent  P=0.0003
  200106  on hand 14   2 days silent  P=0.0011

Validation. 5 of 12 records match exactly (41.7%). Item 200106 normally sells 3.4 a day, so two silent days have a probability of e^(−6.8) ≈ 0.0011 if it were really on the shelf: count it. Item 200102 sells so slowly that 30 silent days are unremarkable (P ≈ 0.22). What to notice. The absolute variance ($160.05) is 64% larger than the net figure suggests, because $31.30 of hidden stock offsets $128.75 of phantom loss in the net figure. The Poisson model assumes independent sales at a steady rate; promotions, seasonality and items sold in multiples break it, so use it to rank counts, not to declare stock missing. Troubleshooting. No suspects printed: check that days_since_last_sale is in days, not weeks. Teardown. rm -r ~/retailops-labs/lab2.

Lab 3 (intermediate): hourly coverage and schedule-change notice

Link to section “Lab 3 (intermediate): hourly coverage and schedule-change notice”

Objective. Convert an hourly traffic and pickup forecast into required staff, compare it with a schedule, and flag changes made inside a notice window. Prerequisites. Python 3.8+. Time. 30 minutes. Risk. None; the notice rule is a parameter, not legal advice.

  1. Create the forecast, the shifts and the change log.

Example status: verified by execution on 2026-10-23 (bash, Linux).

mkdir -p ~/retailops-labs/lab3 && cd ~/retailops-labs/lab3
cat > forecast.csv <<'CSV'
hour,visitors,pickup_orders
9,60,4
10,110,6
11,170,5
12,240,7
13,260,6
14,230,5
15,210,6
16,250,8
17,290,9
18,240,7
19,150,4
20,90,2
CSV
cat > shifts.csv <<'CSV'
associate,start,end
A,9,17
B,9,15
C,10,18
D,12,20
E,13,21
F,15,21
G,16,21
CSV
cat > changes.csv <<'CSV'
associate,shift_date,changed_on,change
B,2026-10-17,2026-10-01,extended by 2 hours
D,2026-10-17,2026-10-12,start moved 12:00 to 14:00
G,2026-10-17,2026-10-16,shift cancelled
CSV
  1. Save the script as coverage.py.

Example status: verified by execution on 2026-10-23 (Python 3.8.10).

"""Hourly floor coverage versus need, and a schedule-change notice check."""
import csv
import math
from datetime import date

VISITORS_PER_ASSOCIATE = 60  # floor standard set by the retailer (assumption)
MINUTES_PER_PICKUP = 6       # pick, pack and stage one pickup order
MIN_STAFF = 2                # safety and opening rule
NOTICE_DAYS = 14             # set to the rule that applies where the store is

with open("forecast.csv", newline="") as f:
    hours = list(csv.DictReader(f))
with open("shifts.csv", newline="") as f:
    shifts = list(csv.DictReader(f))

print("hour need have gap")
short = over = 0
for h in hours:
    hr = int(h["hour"])
    floor = math.ceil(int(h["visitors"]) / VISITORS_PER_ASSOCIATE)
    picks = int(h["pickup_orders"]) * MINUTES_PER_PICKUP / 60
    need = max(MIN_STAFF, math.ceil(floor + picks))
    have = sum(int(s["start"]) <= hr < int(s["end"]) for s in shifts)
    gap = have - need
    short += -gap if gap < 0 else 0
    over += gap if gap > 0 else 0
    flag = "  SHORT" if gap < 0 else ("  over" if gap > 0 else "")
    print(f"{hr:>4} {need:>4} {have:>4} {gap:>+4}{flag}")
print(f"Understaffed associate-hours: {short}; overstaffed: {over}")

print(f"\nChanges made with less than {NOTICE_DAYS} days' notice:")
with open("changes.csv", newline="") as f:
    for c in csv.DictReader(f):
        notice = (date.fromisoformat(c["shift_date"])
                  - date.fromisoformat(c["changed_on"])).days
        if notice < NOTICE_DAYS:
            print(f"  {c['associate']}: {c['change']} (notice: {notice} d) -> review")
  1. Run python3 coverage.py.

Expected output.

hour need have gap
   9    2    2   +0
  10    3    3   +0
  11    4    3   -1  SHORT
  12    5    4   -1  SHORT
  13    6    5   -1  SHORT
  14    5    5   +0
  15    5    5   +0
  16    6    6   +0
  17    6    5   -1  SHORT
  18    5    4   -1  SHORT
  19    4    4   +0
  20    3    3   +0
Understaffed associate-hours: 5; overstaffed: 0

Changes made with less than 14 days' notice:
  D: start moved 12:00 to 14:00 (notice: 5 d) -> review
  G: shift cancelled (notice: 1 d) -> review

Validation. At 13:00, 260 visitors need ⌈260 ÷ 60⌉ = 5 floor staff plus 6 orders × 6 minutes = 0.6 staff, so 6 in total; associates A to E are on, so the store is one short. What to notice. The gaps sit at the lunch and after-work peaks, and the two late changes (moving D later, cancelling G) would worsen the 12:00–13:00 and 17:00–18:00 gaps and open new ones at 16:00, 19:00 and 20:00: understaffed associate-hours would rise from 5 to 12. To see it, edit shifts.csv (D starts at 14, delete G) and re-run. The fix is to reshape shifts, not to add hours everywhere. Troubleshooting. Shifts ending at 21 cover the 20:00 hour because the comparison is start ≤ hour < end; an off-by-one here is the most common bug in coverage code. Teardown. rm -r ~/retailops-labs/lab3.

Lab 4 (advanced): how big a pickup buffer?

Link to section “Lab 4 (advanced): how big a pickup buffer?”

Objective. Simulate pickup promises made from inaccurate records and find the buffer that balances failed picks against promises not made. Prerequisites. Python 3.8+. Time. 30 minutes. Risk. None.

  1. Create the folder with mkdir -p ~/retailops-labs/lab4 && cd ~/retailops-labs/lab4, then save the script as buffer.py.

Example status: verified by execution on 2026-10-23 (Python 3.8.10).

"""Pickup promises against inaccurate store records: how big a buffer?"""
import random

rng = random.Random(42)
SKUS = 2000
ORDER_PROB = 0.3   # chance a shown-available SKU receives a pickup order today

def true_on_hand(record):
    """Record error model (assumption): 60 % exact, otherwise skewed to phantom."""
    if rng.random() < 0.60:
        return record
    error = rng.choice([-3, -2, -2, -1, -1, -1, 1, 1, 2])
    return max(0, record + error)

items = []
for _ in range(SKUS):
    record = rng.choice([0, 1, 1, 2, 2, 3, 4, 5, 6, 8, 10, 12])
    items.append((record, true_on_hand(record)))
order_draws = [rng.random() for _ in range(SKUS)]   # same customers for every buffer

print("buffer shown orders failed fail% orders_lost_vs_0")
base_orders = None
for buffer in range(4):
    shown = orders = failed = 0
    for (record, actual), draw in zip(items, order_draws):
        if record - buffer >= 1:
            shown += 1
            if draw < ORDER_PROB:
                orders += 1
                failed += actual == 0
    base_orders = orders if base_orders is None else base_orders
    rate = 100 * failed / orders
    print(f"{buffer:>6} {shown:>5} {orders:>6} {failed:>6} {rate:>5.1f} "
          f"{base_orders - orders:>16}")
  1. Run python3 buffer.py.

Expected output.

buffer shown orders failed fail% orders_lost_vs_0
     0  1860    552     40   7.2                0
     1  1530    447     14   3.1              105
     2  1206    349      2   0.6              203
     3  1040    303      0   0.0              249

Validation. The seed is fixed, so the output is identical on every run with the same Python random generator. With no buffer, 40 of 552 orders (7.2%) fail at the shelf; a one-unit buffer cuts failures to 14 but stops 105 promises. What to notice. A single chain-wide buffer is a blunt tool: most of the failures come from low-record items with phantom errors. Artefact 5’s per-class buffer applies a large buffer only where records are unreliable. “Orders lost” is an upper bound: some of those customers would buy for delivery or in the store. Troubleshooting. Different numbers usually mean the error list or the seed was edited. Teardown. rm -r ~/retailops-labs/lab4.

Two cases below are documented by public sources and labelled as such; the others are illustrative scenarios invented for teaching.

1. Stores as fulfilment hubs (sourced). Context: in its annual report for fiscal 2025 (the year ended 31 January 2026), Target reported that digitally originated sales were 20.6% of merchandise sales, that its stores fulfil the majority of them, and that two-thirds of digital sales were fulfilled through same-day options (Order Pickup, Drive Up and Same-Day Delivery). Its headline figure that stores fulfilled 97.6% of merchandise sales includes ordinary in-store purchases, so it says little about online orders on its own.[31] Implications (this Atlas’s reading): store records become customer promises, pick labour is planned with selling labour, and the backroom must make room for staging. Success measures: on-time-ready rate, pick-failure rate, and store OSA not falling as online volume grows. Pitfall: treating fulfilment as an add-on task for selling staff during peaks.

2. Stable scheduling at a specialty apparel chain (sourced). Context: Gap Inc. and university researchers ran an experiment in 28 stores from November 2015 to August 2016 (25 randomly assigned, three pretest stores kept in treatment; see Labour), combining shift swapping by app, consistent shift times, core scheduling, a soft guarantee of 20 or more hours for a core group of part-time staff, and targeted additional staffing. Result reported: median sales up 7% and labour productivity up 5% in treatment stores; some managers struggled with instability that came from head office and from associates.[24] Trade-off: the soft hour guarantee reduces the slack a manager can cut. Lesson: test schedule changes against controls.

3. Grocery availability programme (illustrative scenario). Context: a 60-store grocer’s complaints about empty shelves rise while distribution-centre fill rates are 98%. Method: a four-week audit of 300 critical items separates store OOS from shelf OOS; then a daily silent-item count list (Lab 2), demand-based space for fast movers and delivery days matched to shelf capacity. Success criteria: critical-item OSA from 93% to 97% and exact-match IRA up ten points in 12 weeks. Pitfall: stopping measurement after the project, so availability drifts back.

4. RFID pilot in apparel (illustrative scenario). Method: a fashion retailer tags two categories in eight stores with eight matched controls and compares IRA, size-run OSA, count labour and sales for 12 weeks. Success criteria, set in advance: for example, exact-match IRA ≥ 95% in pilot categories and payback under two years. Pitfall: comparing pilot stores with their own past rather than with controls.

Store metrics are easy to compute and easy to compare wrongly. Each definition below names its denominator; where retailers use different conventions, pick one, write it down and never mix them in one league table.

KPI Definition / formula Data source Pitfall Review
Net sales and comparable sales Sales after returns and discounts; comparable = change for stores open long enough (Target excludes stores open less than 13 months)[31] POS, finance Comparing comp sales across retailers with different rules Weekly
Conversion Transactions ÷ visitors (people-counter traffic) POS, door counters Counter accuracy; staff and children counted Daily, by hour
Average transaction value (ATV) Net sales ÷ transactions POS Can rise when conversion falls, if mostly committed buyers remain (an inference): read it with conversion Weekly
Sales per square foot (or m²) Net sales ÷ area, annualised POS, property data Selling vs gross area changes the figure by tens of percent Quarterly
Sales per labour hour Net sales ÷ paid hours POS, payroll Rewards understaffing in the short run Weekly
Gross margin rate (Net sales − cost of goods) ÷ net sales Finance Shrink and markdown treatment differ Monthly
GMROI Gross margin $ ÷ average inventory at cost, over 12 months[32] Finance, inventory “Average inventory” from two points hides seasonality Quarterly
Sell-through Units sold ÷ units received for a line or season[33] POS, receiving Early high sell-through can mean under-buying Weekly in season
Exact-match IRA Records with count = record ÷ records counted (random sample) Count files Using targeted counts gives a pessimistic, biased figure Monthly
On-shelf availability (OSA) Planned items present on shelf ÷ planned items audited Shelf audits, cameras Audit time of day changes the result Weekly, by category
Shrink rate (Book inventory − counted inventory) ÷ sales for the period, numerator and denominator on the same basis (cost ÷ cost of sales, or retail ÷ net sales); state which Physical inventory, finance Not comparable across definitions[15] Per count, annual
Pick-failure rate Order lines not found at pick ÷ order lines picked OMS, handhelds Excluding substituted lines hides failures Daily
On-time-ready rate Pickup orders ready by promised time ÷ pickup orders OMS Promise windows widened to look good Daily
Price accuracy Correct prices ÷ items sampled (overcharges and undercharges both errors)[19] Internal price audit Sampling only promoted items Weekly
Schedule stability Shifts changed after publication ÷ shifts published WFM Counting only manager-initiated changes Weekly

Leading and lagging. Sales, margin and shrink lag. Process measures lead: targeted counts completed, “not found” picks counted within two hours, price audit accuracy, schedules published on time, deliveries received the same day. When they slip, the lagging measures usually follow weeks later.

Worked calculation (illustrative store, one quarter).

  • Shrink: book inventory at cost at quarter end $612,000; counted $598,500; net sales $2,450,000 at a 41% gross margin, so cost of sales is $1,445,500. Shrink at cost = 13,500. Keep numerator and denominator on the same basis: at cost, 13,500 ÷ 1,445,500 = 0.93%; at retail, the loss is 13,500 ÷ 0.59 ≈ 22,881, and 22,881 ÷ 2,450,000 = 0.93% too, because the margin is uniform. Dividing the loss at cost by sales at retail gives 0.55%, a mixed-basis ratio that understates the loss by about 40%. Real differences come from elsewhere. If the whole loss sat in a 55%-margin department, its retail value would be 13,500 ÷ 0.45 = 30,000, or 1.22% of sales at retail against 0.93% at cost. Against book inventory rather than sales, the same loss is 13,500 ÷ 612,000 = 2.2%. Markdowns not recorded in the books, and whether known losses are included, move the figure again. Say which basis, denominator and period you report.
  • IRA: a random sample of 400 records finds 236 exact matches: 236 ÷ 400 = 59.0%. A 95% confidence interval by the normal approximation is 59.0% ± 1.96 × √(0.59 × 0.41 ÷ 400) ≈ ±4.8 points, so a later sample showing 62% is not yet evidence of improvement.
  • OSA: an audit of 1,000 planned critical items finds 962 on the shelf: 96.2%; of the 38 gaps, 14 had stock in the backroom (shelf OOS) and 24 had none in the building (store OOS). The 14 point to replenishment labour and backroom discipline; the 24 point to ordering and records.
  • Pick failures: 11,400 lines picked, 296 not found: 2.6%. Of the 296 locations counted afterwards, 241 counted zero (phantom stock confirmed) and 55 found stock elsewhere in the store (a location problem, not an inventory problem).

Target setting. Set targets from your own baseline and best stores, not from published survey averages. Improve the worst quartile first; chain averages hide it. Avoid targets that invite gaming, such as IRA on self-selected counts or sales per labour hour alone.

Store compliance is local. The table names what typically applies; check each store’s jurisdiction.

Area Typical obligation or risk Operational control
Payment terminals Under PCI DSS v4.0.1 Requirement 9.5, merchants keep a list of card-present payment devices, inspect them periodically for tampering or substitution, and train staff;[34] the standard does not require devices to be tethered[30] Device list with location and serial number; inspection log; staff check technicians’ identity before any device work
Store network and vendors Third-party remote access can reach store systems Separate vendor access from payment systems; review vendor accounts; alert on new software on POS
Price accuracy Weights-and-measures inspections (US model procedure);[19] prior-price rules for reductions (EU)[20] Price-change SOP, weekly sample audit, price history retained
Scheduling Notice, change and rest rules in some cities and states[27][28] Rule engine in WFM; changes logged with reason and consent
Age-restricted sales Legal duties for products such as alcohol and tobacco vary by country; England’s retail manager standard lists training on them[1] Till prompts, refusal log, staff training records
Product safety and recalls Removing recalled or withdrawn products quickly Recall SOP with per-store confirmation and quarantine
Food safety (grocery) Temperature control, date codes, hygiene inspections Temperature logs, date-check routine, waste recording
Privacy CCTV, people counting, loyalty data, staff monitoring Purpose and retention per data type; see PrivacyOps
Worker safety Manual handling, violence and aggression, lone working Risk assessments, de-escalation training, incident reporting

A documented case: the 2013 Target breach. According to the US Senate Commerce Committee staff report “A ‘Kill Chain’ Analysis of the 2013 Target Data Breach”, as summarised by a law firm in March 2014, attackers probably used credentials stolen from an HVAC contractor with remote access to a vendor-facing part of Target’s network, then installed malware on point-of-sale systems that captured card data; 70 to 110 million customer records were taken, shortly after Target had been certified PCI DSS compliant.[35] Some details were unconfirmed. The lessons are about boundaries, not only compliance: vendor access paths, separating store support systems from payment systems, and an owner for alerts. Security operations in depth are on SecOps and endpoint hardening of tills on EndpointOps.

Cost drivers. The controllable costs are labour, shrink, inventory carrying cost and markdowns; rent and energy are largely fixed in the short run. GMROI rises with faster selling, less inventory or better margin, and each lever has a cost: thin inventory raises out-of-stocks; deep markdowns clear stock but cut margin.

Capacity. Plan three capacities: space (shelf, backroom, pickup staging), labour (by hour) and service points (tills, pickup counters, parking bays). Pickup demand often peaks with shopper traffic, so pick in quieter hours against promised windows.

Unit economics of a pickup order (template). Cost per order = pick minutes × loaded wage per minute + staging and handover minutes × wage + packaging + failed-pick handling (refunds, customer contact) + any substitution margin given away. Compare it with delivery from a distribution centre and with the extra in-store purchases pickup customers make, which Gallino and Moreno observed at one retailer.[14] Measure it per store; small, busy stores and large, quiet stores differ.

Returns. Returns are a capacity and cost problem as much as a customer-service one. With large US retailers estimating that 16.9% of 2024 sales would be returned, and 93% of those surveyed calling fraud and other exploitative behaviour a significant issue,[23] the store needs a fast path back to the shelf for sellable items and clear rules for the rest.

Sustainability. For food retailers, waste is material: the UN Environment Programme’s Food Waste Index Report 2024 estimated that 1.05 billion tonnes of food were wasted in 2022 across retail, food service and households, of which retail accounted for 131 million tonnes.[36] Store levers: accurate ordering of perishables, markdowns before expiry, donation where legal, and recording waste by cause. In grocery, refrigerant leaks are another material impact; the US EPA’s GreenChill partnership works with food retailers on refrigerant management.[37] Carbon accounting method is on GreenOps.

How does a retail operations team know its model works, rather than that its dashboards look green?

  • Independent audits on a sample. Area managers or an audit team re-check a random sample of each store’s standards monthly: a recount of ten counted items, a price sample, a reset photo against the planogram, a schedule against the publication rule.
  • Exception monitoring and risk indicators. Adjustments clustered just before physical inventory, items adjusted up and down repeatedly, perfect IRA with high pick failures, widened pickup windows, rising backroom stock, falling count completion, more overcharges than undercharges, more late schedule changes.
  • Store voice. Count head-office task hours sent to stores weekly; an uncontrolled task calendar is a hidden labour cut.
  • Closed loop. Every audit finding gets an owner and a due date; repeated findings across stores go to head office as a process defect.
Symptom Likely cause Diagnosis Remediation Prevention
Empty shelf, system shows stock Phantom inventory Count shelf, backroom, staging; check last sale date Correct record; order fires Silent-item count list (Lab 2)
Empty shelf, stock in backroom Shelf OOS: replenishment not done, product not located Check backroom locations and replenishment task completion Work the backroom; locate cases Backroom by location; replenishment labour in model
Empty shelf, none in building, record zero Store OOS: ordering or supply Check order history, DC fill, case pack vs shelf Expedite; review parameters Shelf capacity ≥ demand between deliveries + case pack
Shelf overflowing, backroom full Over-ordering, case pack too big, manual overrides Compare orders with sales; review overrides Stop overrides; return or transfer Demand-based space; override reporting
Till price differs from label Label not changed, wrong label, price file error Check price file, label batch, effective date Fix label; honour lower price per policy Same-day label changes; weekly price audit
Pickup orders not found Phantom stock, wrong location, items not eligible Count each not-found location Zero or correct record; adjust buffer Eligibility policy (Artefact 5)
Pickup orders late Pick labour at peak; staging full On-time-ready by hour vs staffing Move picking to quieter hours Pickup in the labour model
Shrink spike at physical inventory Receiving errors, unrecorded damage, theft, count errors Compare categories, adjustment history, receiving variances Re-count suspicious categories before booking Monthly mini-counts of high-risk categories
Conversion drops at peak Understaffing, queues, gaps Conversion and visitors per labour hour, by hour Reshape shifts Labour model by hour (Lab 3)

Worked runbook: pickup cancellations spike after a reset

Link to section “Worked runbook: pickup cancellations spike after a reset”

Detection. The daily pick-failure report flags department rates above three times the chain norm for two consecutive days.

Triage (first two hours). The pickup lead suspends pickup eligibility for the department in store 042 (a per-store, per-department switch) so no new promises are made, and informs customers with open orders.

Diagnosis. Use the tree below. It starts from the evidence collected at each “not found”.

Figure 6. Diagnosing a pickup “not found”: record, location or process
NoYesNoYesNo, elsewhereYes, at locationNot found at pickCounted location: any stockin the store?Did the record show stock?Phantom stock: correctrecord, find the sourceOrder logic promised zerostock: system defectStock at the planogramlocation?Location error: reset orbackroom not updatedPicker process: training orhandheld issueCheck receiving, scanning,damage recordsUpdate location data andcapacities
Diagram source (Mermaid)
flowchart TB
  A["Not found at pick"] --> B{"Counted location: any stock in the store?"}
  B -->|No| C{"Did the record show stock?"}
  C -->|Yes| D["Phantom stock: correct record, find the source"]
  C -->|No| E["Order logic promised zero stock: system defect"]
  B -->|Yes| F{"Stock at the planogram location?"}
  F -->|"No, elsewhere"| G["Location error: reset or backroom not updated"]
  F -->|"Yes, at location"| H["Picker process: training or handheld issue"]
  D --> I["Check receiving, scanning, damage records"]
  G --> J["Update location data and capacities"]
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  class A risk
  class B,C,F decision
  class D,E,G,H,I,J core

Text equivalent: Start from a “not found” at pick and count the location. If there is no stock anywhere in the store, check whether the record showed stock: if it did, this is phantom stock, so correct the record and investigate receiving, scanning and damage records for the source; if it did not, the order logic promised stock that the record did not show, which is a system defect. If stock exists in the store, check whether it is at the planogram location: if it is elsewhere, it is a location error from the reset or backroom, so update location data and capacities; if it is at the location, the picker process failed, which points to training or the handheld.

Of the 31 not-found locations counted, 22 had stock elsewhere in the aisle (moved in the reset, location data not updated), 6 had no stock and a positive record (phantom stock, mostly items discontinued in the reset but never written off), and 3 were picker errors.

Remediation. Update location data from the reset planogram; write off discontinued items with the reset reason code; re-count the whole aisle; re-enable pickup for the department once a sample of 20 picks succeeds.

Verification. Department pick-failure rate back under 3% for three consecutive days; no repeat not-founds on the corrected items.

Prevention (the actual fix). Make “locations and capacities updated” and “discontinued items written off” completion criteria of the reset SOP, and suspend a department’s pickup eligibility automatically after a reset until the count is done. Warn every store with the same reset scheduled.

Post-incident review. Blameless: the store followed the reset instructions it was given; the instructions were incomplete.

  • “The system says we have it.” Treating the perpetual record as fact. Instead: count where it matters and measure accuracy.
  • Fixing the number, not the process. Posting adjustments without reason codes. Instead: classify every adjustment and attack the top cause.
  • Labour cut by a flat percentage. The same cut harms stores where labour drives sales most.[26] Instead: model by store and test changes.
  • End-of-quarter hour cuts. Cutting hours in the last weeks of a quarter moves cost, not efficiency, if conformance and sales fall.[25]
  • Promising everything online. Making every SKU in every store available for pickup from raw records. Instead: an eligibility policy and buffers by accuracy.
  • Head office as an unmetered task source. Hundreds of tasks without time estimates. Instead: an intake form and a weekly hours cap.
  • Shrink league tables with mixed definitions. Comparing stores or retailers whose shrink is measured differently.[15]
  • Myth: “Out-of-stocks are a supply chain problem.” In the FMCG studies Gruen and Corsten summarise, most out-of-stocks were traced to store practices (The problem it solves).
  • Myth: “More backstock means fewer gaps.” Backroom inventory rose with out-of-stocks, not against them (shelf capacity).
  • Myth: “Technology X will fix accuracy.” RFID, cameras and AI make measurement cheaper; they do not change the process that creates errors unless the process changes too.

Every retailer with stores does retail operations; the question is how formal to make it. A dedicated function (standards, labour model, task governance, accuracy programme) pays off when:

  • You run several stores and want them to perform alike; with one store, the owner is the operating model.
  • Stores use automatic ordering or promise stock online, so record errors turn directly into lost sales or failed orders.
  • Labour is a large share of store cost and is budgeted centrally.
  • Stores serve as fulfilment nodes (pickup, ship-from-store, returns for online purchases).
  • You face inspections or rules on prices, schedules or payment devices across many sites.

Keep it light, or do not build it yet, when:

  • You run one or two stores: a written opening and closing routine, a weekly count of fast movers and a simple schedule are enough. Spend the time on the shop floor, not on a scorecard.
  • You sell online only: your operations live in fulfilment and the website (SupplyChainOps, WebOps).
  • Stores are operated by franchisees or concession partners under their own systems: write standards into the contract and audit them, rather than running their operations.
  • Records are so poor that omnichannel promises would fail: fix accuracy first; do not launch pickup to “force” it.

Hidden responsibilities. Maintaining the labour model, policing the task calendar, running random counts that look unproductive, and refusing promises the stores cannot keep.

Two decisions recur: where to start improving store operations, and which fulfilment model a store should take on. The tree below covers the first; it is this Atlas’s heuristic, not a standard.

Figure 7. Where to start: a decision tree for improving store operations
NoYesYesNoYesNoNoYesYesNoCustomers report gaps orfailed pickupsOSA and IRA measured inlast 3 months?Measure first: random countsand a shelf auditMost gaps: stock in thebuilding?Shelf OOS: replenishmentlabour, backroom, spaceRecord showed stock?Phantom stock: targetedcounts, receiving, scanningStore OOS: orderingparameters, shelf capacity,supplyHourly labour model exists?Build labour model beforeadding tasksFix space and deliverycadencePickup live on these items?Add buffers or removeeligibility until fixedCount programme andprocess fixes
Diagram source (Mermaid)
flowchart TB
  A["Customers report gaps or failed pickups"] --> B{"OSA and IRA measured in last 3 months?"}
  B -->|No| C["Measure first: random counts and a shelf audit"]
  B -->|Yes| D{"Most gaps: stock in the building?"}
  D -->|Yes| E["Shelf OOS: replenishment labour, backroom, space"]
  D -->|No| F{"Record showed stock?"}
  F -->|Yes| G["Phantom stock: targeted counts, receiving, scanning"]
  F -->|No| H["Store OOS: ordering parameters, shelf capacity, supply"]
  E --> I{"Hourly labour model exists?"}
  I -->|No| J["Build labour model before adding tasks"]
  I -->|Yes| K["Fix space and delivery cadence"]
  G --> L{"Pickup live on these items?"}
  L -->|Yes| M["Add buffers or remove eligibility until fixed"]
  L -->|No| N["Count programme and process fixes"]
  classDef decision fill:#fdf3e3,stroke:#c9800f,color:#122029
  classDef core fill:#e8f3f2,stroke:#16756f,color:#122029
  classDef risk fill:#fbeceb,stroke:#b4332b,color:#122029
  class B,D,F,I,L decision
  class C,E,G,H,J,K,N core
  class A,M risk

Text equivalent: Start when customers report gaps or failed pickups. If on-shelf availability and record accuracy have not been measured in the last three months, measure first with random counts and a shelf audit. If they have, ask whether most gaps have stock somewhere in the building. If yes, the problem is shelf out-of-stock: replenishment labour, backroom and space; if no labour model by hour exists, build one before adding tasks, otherwise fix space and delivery cadence. If most gaps have no stock in the building, ask whether the record showed stock: if yes, it is phantom stock, so run targeted counts and fix receiving and scanning, and if pickup is live on those items, add buffers or remove eligibility until fixed; if no, it is a store out-of-stock, so review ordering parameters, shelf capacity and supply.

Choosing a fulfilment model: a weighted comparison. Weights and scores below are an illustrative starting point for a general-merchandise chain with a dense store network; replace them with your own. Scores run from 1 (poor) to 5 (strong); every criterion is worded so that a higher score is more favourable.

Criterion (weight) Pickup in store Ship-from-store Micro-fulfilment / dark store
Uses existing stock and space (25%) 5 4 2
Customer speed and convenience (20%) 4 3 5
Labour and service impact on shoppers (20%) 3 2 5
Independence from store record accuracy (15%) 2 2 4
Low capital and fixed cost (20%) 5 4 1
Weighted score 3.95 3.10 3.30

Arithmetic for pickup: 0.25×5 + 0.20×4 + 0.20×3 + 0.15×2 + 0.20×5 = 1.25 + 0.80 + 0.60 + 0.30 + 1.00 = 3.95. With low record accuracy and high online volume, the weights shift and a dedicated site can win; the matrix makes that assumption explicit. To set your own weights, start from last year’s failures and costs (missed promises, pick hours, capital limits), fix the weights before scoring, and check whether the ranking flips when any weight moves ten points; if it does, measure that criterion first.

This five-level model is this Atlas’s proposal, not an industry standard. Use it to find the next step, not to grade stores.

Level Observable behaviour Evidence Exit criterion to the next level
1 Reactive Each manager runs the store their way; problems found by customers Complaints, ad hoc fixes A written list of no more than ten standards exists
2 Standardised Standards and SOPs exist; tasks arrive by email SOPs, training records Random-count IRA, OSA audit and labour vs model measured monthly
3 Measured Scorecard with stated denominators; stores compared Scorecard history Labour model by hour; targeted count list; task intake with time estimates
4 Managed Hours follow a model; counts target likely errors; pickup has an eligibility policy Model, policy, audit results Exceptions (not-founds, silent items) automatically create counts and adjust buffers
5 Self-correcting The system routes evidence to the right fix; head office fixes repeated defects Closed-loop metrics; defect log Sustain: annual review of standards, model and policy

A plan for a new head of retail operations in a chain of 20–200 stores. Adapt the cadence for larger chains, where each phase may take a quarter.

Phase Actions Dependencies Quick wins Milestone metric
Days 1–30: see reality Visit stores at peak and at opening; run a random count of 200 records in five stores; run a one-day OSA audit; count head-office tasks sent last month; read the labour budget method Store access; count tool Stop tasks without time estimates Baseline exact-match IRA, OSA and task hours
Days 31–60: fix the loop Write the ten standards; launch the silent-item count list; add reason codes; define pickup eligibility by accuracy class; publish the scorecard with denominators IT for count list and eligibility switch Count every not-found within two hours Count completion ≥ 90%; pick-failure rate measured daily
Days 61–90: model and govern Build or review the labour model by hour in three pilot stores with controls; set the schedule publication rule; set up monthly operations review and audit sampling WFM data; finance agreement Reshape shifts at peaks (Lab 3) IRA up and pick failures down vs baseline; pilot design for labour approved

Risks: stores read measurement as blame (focus on process defects); head office resists the task cap (show the hours); finance wants an immediate labour saving (agree a test-and-learn design).

Quick start: a new store manager’s first week

  • Walk the store at opening, at peak and at close; note gaps, queues and backroom state.
  • Read the store’s last four scorecards and the last physical inventory result.
  • Check that the payment-device list matches the devices on the counters.
  • Count ten fast movers yourself and compare with the record.
  • Ask each department lead for the one process that most often fails.

Daily operating readiness (before opening)

  • Tills and terminals working; float and cash procedures done.
  • Availability walk of critical items done; gaps assigned.
  • Price changes effective today worked and spot-checked.
  • Deliveries expected today have a receiving owner and time.
  • Pickup staging area clear; today’s pick windows staffed.
  • Targeted count list printed or loaded.

Monthly governance review (area or head office)

  • Random-count IRA, OSA, pick-failure and price-audit results by store, with denominators.
  • Head-office task hours sent to stores vs cap.
  • Schedules published on time; late changes and reasons.
  • Adjustment patterns flagged by exception monitoring reviewed.
  • Repeated audit findings converted into head-office defects with owners.

Security and compliance audit (per store, quarterly)

  • Terminal inspection log complete; vendor and technician access logged and verified.
  • Price-accuracy sample at or above the applicable standard; scheduling change log complete.
  • Recall close-outs confirmed; age-restricted refusals logged; CCTV notices and retention per policy.

Template 1: store scorecard (one page, weekly). Targets are examples; set your own from your baseline.

STORE SCORECARD          Store ____   Week ending ________   Format ____
Sales and customers               Actual   Plan/target   Trend (4 wk)
  Net sales                       ______   ______        ___
  Conversion (txns / visitors)    ______   ______        ___
  Avg transaction; units per txn  ______   ______        ___
Availability and accuracy
  OSA, critical items (audit)     ______   >= 97 %       ___
  Exact-match IRA (random sample) ______   +10 pts / yr  ___
  Targeted counts completed       ______   >= 95 %       ___
Omnichannel
  Pick-failure rate (lines)       ______   <= 3 %        ___
  On-time-ready rate (orders)     ______   >= 95 %       ___
Labour
  Hours vs labour model           ______   +/- 2 %       ___
  Schedule published on time      ______   100 %         ___
  Shifts changed after publish    ______   <= 5 %        ___
Integrity
  Price audit accuracy            ______   >= 98 %       ___
  Terminal inspections on time    ______   100 %         ___
Top 2 actions this week: 1) __________________ 2) __________________

Template 2: store operating standard (one page).

STANDARD  STD-__  Title: _________________________  Version __  Date ____
Why it matters (customer or business outcome): ______________________
Scope (formats, departments, exclusions): ___________________________
Owner in store (R) ________  Accountable (A) ________
Trigger / frequency: _________   Time allowed (minutes): ______
Steps (max 7):
  1. ____________________________________________
  2. ____________________________________________
Done means (acceptance criteria): ___________________________________
Evidence (photo, count file, log): _________________________________
Measure on scorecard: ____________   Audit sample: ________________
Exceptions and escalation: __________________________________________

Template 3: decision record for a store technology investment.

DECISION RECORD  DR-__   Title: ______________________   Date ________
Problem (measured baseline): ________________________________________
Options considered: A) ______  B) ______  C) do nothing / process fix
Pilot design: stores ____ vs matched controls ____, weeks ____
Success criteria set before the pilot: _____________________________
Result (pilot vs control, with uncertainty): ________________________
Process changes required to keep the benefit: _______________________
Decision: adopt / extend pilot / stop     Owner ______  Review ______

The neighbour pages and their boundaries are compared in How RetailOps relates to other Ops. The comparison below is about operating models inside retail.

Store-led versus central-led operating models.

Dimension Store-led Central-led Common hybrid
Ordering Managers order by judgement Automatic ordering, few overrides Automatic, with measured overrides for local events
Labour Managers schedule to a budget Central model generates schedules Model sets hours; manager assigns people
Standards Local habits Detailed central SOPs Ten standards centrally, local methods allowed
Strength Local knowledge, speed Consistency, scale Both, if the feedback loop works
Weakness Variation between stores Plans that ignore local reality Needs discipline on both sides

Is “RetailOps” a job title? Rarely as one word. Common titles are store manager, area or district manager and retail operations manager or director. Search for “retail operations” when looking for roles or literature.

What is the single most useful number to start with? Exact-match inventory record accuracy from a random sample, with its sample size. It tells you how far you can trust automatic ordering and online availability, and it is rarely measured honestly.

Our physical inventory shows low shrink, so our records must be fine. True? No. Shrink is a net, financial figure; phantom and hidden errors can cancel in value while many individual records are wrong. Lab 2 shows a net variance of −$97 hiding $160 of absolute error.

Should every store item be available for pickup? Only items whose records you trust, with buffers that reflect accuracy and sales rate. A failed pickup costs more goodwill than an item shown as “not available for pickup”.

Will RFID solve inventory accuracy? It makes counting tagged items much faster, which makes frequent counts affordable. Accuracy still depends on processes such as receiving, returns and write-offs. Pilot with control stores.

How do scheduling laws affect the labour model? They constrain when schedules can change. A model that needs frequent late changes breaks the rule or pays premiums; keep core schedules stable and take flexibility from voluntary swaps and standby lists where the law allows them.[28]

Established capability. POS-based out-of-stock detection, silent-item count lists, hourly workforce management and per-store pickup eligibility.

Active practice with evidence still accumulating.

  • Probabilistic inventory records: each record treated as a distribution of true stock, updated by sales, counts and not-founds, and used for ordering and promises.
  • Store-specific labour response models, as in Fisher, Gallino and Netessine’s implementation.[26]
  • Item-level RFID beyond apparel, with GS1’s Gen2v3 adding features to the air interface.[10]
  • 2D barcodes at POS (GS1 Sunrise 2027), which can carry product variants and production or expiry dates and so enable expiry-aware markdowns at the till.[11]

Speculative or vendor-led. Autonomous stores and AI agents that re-plan the store day: judge them by controlled pilots on your own fixtures, not demonstrations.

Stage What to do Uses
1-day primer Read What RetailOps is and Inventory truth; run Lab 1 Vocabulary, denominators
1-week practice Run Labs 2–4; do a 50-item random count and a shelf audit in a real store (with permission) Measurement
30-day progression Map one store’s systems against the reference architecture; write three standards with the template; draft a pickup eligibility policy Design
Advanced specialisation Labour modelling and experiments; loss measurement with the total retail loss typology; omnichannel network design with SupplyChainOps Leadership
Portfolio project An availability programme in one department with a control department, written up as a decision record Evidence of impact

Leaders short of time can read the executive recap and the judgement call.

Topic Remember
Decisions Where to start (measure, then shelf vs store OOS); which items to promise online; how labour is budgeted
Essential practices Receiving accuracy, targeted plus random counts, backroom by location, ten standards, task intake, stable schedules
Metrics Exact-match IRA (random), OSA (audit), pick-failure rate, conversion by hour, price accuracy, shrink with stated basis
Tool classes POS, perpetual inventory by location, CAO, WFM, task management, OMS with per-item buffers, handhelds
Watch-outs Phantom stock, flat labour cuts, mixed shrink definitions, head-office task floods, promises from raw records
Next actions Measure IRA and OSA honestly this month; start the silent-item count list; write the pickup eligibility policy

A judgement call: cut hours to hit the quarter?

Link to section “A judgement call: cut hours to hit the quarter?”

Situation (illustrative). It is week 10 of 13. A 150-store chain is 2% behind its profit plan. Finance proposes cutting 6% of store labour hours for the last three weeks, which would close most of the gap on paper. The head of retail operations is asked to agree.

Option A: cut 6% across all stores. Certain, immediate saving; easy to administer.

Option B: protect selling hours, cut elsewhere. Drop non-essential head-office tasks for three weeks, defer two resets, cut only where the labour model shows overstaffing, and accept a smaller saving.

Evidence and assumptions. The labour studies come from single chains: none measured this chain, and none tested a three-week cut. Assume, for the decision, that the cut would reduce availability-related work first (replenishment, counts), because selling cover is visible and gets protected.

Reasoning. Option A’s saving is certain and its cost invisible: lost sales appear on no report, and errors from skipped counts surface next quarter. Option B saves less but keeps the processes that protect availability and records. If finance insists on a fixed number, cut by store according to the model and keep matched stores uncut to measure OSA, pick failures and conversion.

Why the attractive choice can be wrong. Option A looks prudent because its benefit is measured and its cost is not. That asymmetry is the trap, not the arithmetic.

Uncertainty. If the chain is genuinely overstaffed across the board (for example after a traffic decline the model has not caught up with), Option A’s cost may be small. The way to know is the measurement, not the argument.

After this page you should be able to explain the difference between store and shelf out-of-stocks and why phantom stock is self-hiding; calculate IRA, OSA, conversion, GMROI, shrink and pick-failure rates with explicit denominators; design a count programme, a labour model by hour and a pickup eligibility policy; diagnose availability and pickup failures with evidence; and evaluate technology and labour decisions with control groups.

1. A store’s record shows 5 units of an item that normally sells 4 a day, and it has not sold for 3 days. What do you do and why?

Count it now. If 5 units were really on the shelf, three silent days would be very unlikely (Poisson e^(−12) ≈ 0.000006). Phantom stock is likeliest, and it stops automatic reordering until someone counts.

2. A count of 300 random records finds 186 exact matches and a net variance of +$40. The manager says accuracy is excellent. Is it?

No. Exact-match IRA is 186 ÷ 300 = 62%, and a small net variance only means phantom and hidden errors roughly cancel in value. Report the absolute variance and the exact-match rate.

3. An audit finds 50 gaps among 1,000 critical items; 30 have stock in the backroom. What is OSA and where do you look first?

OSA is 950 ÷ 1,000 = 95%. Most gaps (30 of 50) are shelf out-of-stocks, so look at replenishment labour, backroom organisation and shelf capacity before ordering parameters.

4. Store A reports shrink of 0.8% and store B 1.4%. Can you conclude store B has a theft problem?

Not yet. First check that both use the same basis (cost or retail, before or after markdowns, same period), then split known losses from unknown losses, and look at receiving and scanning errors that create record losses without theft.

5. Pick failures for one department jump from 2% to 12% the day after a reset. What is the likeliest cause and the fix?

Location and record changes from the reset not reflected in the inventory system (moved items, discontinued items not written off). Pause eligibility, count the aisle, update locations, write off discontinued items, and add those steps to the reset SOP.

6. Finance wants to set every store’s labour at 9% of forecast sales. What is wrong with that, and what would you propose?

A uniform ratio ignores that the revenue response to labour differs between stores (Fisher, Gallino and Netessine found it did at one chain). Propose a model with fixed, selling and task hours by store and hour, and test changes against control stores.

7. In a 100-item price audit you find 2 overcharges and 1 undercharge. Does the store pass under the NIST Handbook 130 procedure, and what else matters?

No: three errors in 100 is 97%, below the 98% required to pass a single inspection; both overcharges and undercharges count for lower-level enforcement. Also track the overcharge-to-undercharge ratio over time, since a high ratio may indicate systematic problems.

Retail operations is where a retailer’s plans meet physical reality, and reality keeps a different set of books. The shelf, the backroom and the pickup counter hold the truth; the records hold claims about it. Most of what goes wrong in stores is a gap between those two, widened by too little labour in the wrong hours and by head-office requests that nobody costed.

The disciplines that close the gap are unglamorous: receive accurately, count where errors are likely, keep the backroom findable, model labour by store and hour, publish schedules early, and promise online only what the records support. Technology makes each cheaper; it does not replace them. A useful test: when a customer is told an item is ready for pickup, how often is it really there, and does the business know?

All sources were opened on 2026-10-23. Legal and regulatory sources are for orientation only; check the official text that applies to each store before relying on them.

Further reading

Changelog

  • 2026-10-23: first version (research, ledger research/retailops-ledger.md, draft, eight diagrams, four executed labs).
  • 2026-10-23: revision after independent review r1 (shrink basis worked example corrected; DeHoratius variance figures; Target figures moved to the fiscal 2025 10-K with the in-store-purchase caveat; Stable Scheduling Study design; NIST enforcement and ratio rules; EU Article 6a national options; pickup sequence diagram redrawn; Lab 2 and Lab 3 notes; attribution, title and precision fixes; repetition cut; low-value maturity chain figure removed, now seven diagrams).
  • 2026-10-23, post-score polish (reviews/retailops-polish.md): use case 2 states the pretest stores (re-checked in the report); ATV pitfall labelled as an inference; guidance for setting matrix weights; shorter decision labels in Figure 7.

  1. Retail manager (ST0325), apprenticeship standard v1.2 — Skills England, updated 2023-05-17. Checked 2026-10-23. ↩︎ ↩︎

  2. Execution: The Missing Link in Retail Operations (Raman, DeHoratius, Ton) — California Management Review 43(3), 2001 (abstract). Checked 2026-10-23. ↩︎ ↩︎

  3. Inventory Record Inaccuracy: An Empirical Analysis (DeHoratius, Raman) — Management Science 54(4), INFORMS, 2008 (abstract via RePEc). Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  4. Global Trade Item Number (GTIN) — GS1, live page. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  5. OMG and the Retail Sector — Object Management Group, live page. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  6. Flowspace accelerates leadership in supply chain SaaS with acquisition of RetailOps — Flowspace, 2023-06-14. Checked 2026-10-23. ↩︎

  7. A Comprehensive Guide to Retail Out-of-Stock Reduction in the Fast-Moving Consumer Goods Industry (Gruen, Corsten) — GMA, FMI, NACDS and P&G (funded by P&G), 2008; Internet Archive copy, original host blocked automated access. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎

  8. 50 year scan-iversary — GS1 Australia, 2024. Checked 2026-10-23. ↩︎

  9. 50 years of transforming tomorrow — GS1 Belgium & Luxembourg, 2024. Checked 2026-10-23. ↩︎

  10. EPC UHF Gen2 Air Interface Protocol — GS1, live page. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  11. Sunrise 2027 — GS1 US, live page. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  12. Planogram — Wikipedia (tertiary source). Checked 2026-10-23. ↩︎

  13. ARTS Operational Data Model 7.3: introduction and overview — Object Management Group. Checked 2026-10-23. ↩︎ ↩︎

  14. Integration of Online and Offline Channels in Retail: The Impact of Sharing Reliable Inventory Availability Information (Gallino, Moreno) — Management Science 60(6), INFORMS, 2014 (abstract via RePEc). Checked 2026-10-23. ↩︎ ↩︎

  15. Groundbreaking RILA report: time for retailers to move beyond ‘shrink’ — Retail Industry Leaders Association, 2016-09-29. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  16. Introducing Total Retail Loss — RGIS (inventory-services vendor summary of the research), undated. Checked 2026-10-23. ↩︎

  17. Shrink accounted for over $112 billion in industry losses in 2022, according to NRF report — National Retail Federation, 2023. Checked 2026-10-23. ↩︎

  18. 7 reasons why everyone’s confused about shrink and theft (D. Howland) — Retail Dive, 2024-01-24. Checked 2026-10-23. ↩︎

  19. NIST Handbook 130 (2026), Section V: Examination Procedure for Price Verification — NIST, 2026. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎

  20. Press release No 152/24: Judgment in Case C-330/23, Aldi Süd — Court of Justice of the European Union, 2024-09-26. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  21. Directive (EU) 2019/2161, Article 2: Article 6a inserted into Directive 98/6/EC — unofficial reproduction of the Official Journal text (EUR-Lex could not be fetched automatically; the official text prevails). Checked 2026-10-23. ↩︎ ↩︎

  22. Price Indication Directive — European Commission, live page (guidance of 17 December 2021 covers perishable goods, new arrivals and progressive reductions). Checked 2026-10-23. ↩︎

  23. NRF and Happy Returns report: 2024 retail returns to total $890 billion — National Retail Federation, 2024-12-05. Checked 2026-10-23. ↩︎ ↩︎

  24. Stable Scheduling Increases Productivity and Sales: The Stable Scheduling Study (Williams, Lambert, Kesavan et al.) — WorkLife Law and partner universities, 2018. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  25. The Effect of Labor on Profitability: The Role of Quality (Z. Ton) — Harvard Business School Working Paper 09-040, 2008, revised 2009 (abstract via RePEc). Checked 2026-10-23. ↩︎ ↩︎

  26. Setting Retail Staffing Levels: A Methodology Validated with Implementation (Fisher, Gallino, Netessine) — Manufacturing & Service Operations Management 23(6), INFORMS, 2021 (abstract via RePEc). Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  27. Retail workers: Fair Workweek — NYC Department of Consumer and Worker Protection, live page. Checked 2026-10-23. ↩︎ ↩︎ ↩︎

  28. Predictive scheduling — Oregon Bureau of Labor and Industries, live page. Checked 2026-10-23. ↩︎ ↩︎ ↩︎ ↩︎

  29. RFID — GS1, live page. Checked 2026-10-23. ↩︎ ↩︎

  30. Are point-of-interaction devices required to be physically secured to meet PCI DSS Requirement 9.5? — PCI Security Standards Council FAQ, undated. Checked 2026-10-23. ↩︎ ↩︎

  31. Target Corporation Form 10-K for the fiscal year ended 31 January 2026 — US SEC EDGAR, filed 2026-03-11 (latest annual report as of 2026-10-23). Checked 2026-10-23. ↩︎ ↩︎

  32. GMROI formula: how to calculate it for retail — Shopify (vendor education page), updated 2026-07-18. Checked 2026-10-23. ↩︎

  33. Sell-through — Wikipedia (tertiary source). Checked 2026-10-23. ↩︎

  34. PCI DSS v4.0.1 Self-Assessment Questionnaire B-IP — PCI Security Standards Council, October 2024 (copy hosted by Swedbank Pay; requirements 9.5.1.1–9.5.1.3). Checked 2026-10-23. ↩︎

  35. ‘Kill Chain’ analysis of Target data breach is a chilling read — Wiggin and Dana LLP advisory summarising the US Senate Commerce Committee staff report, March 2014 (secondary source; the Senate PDF could not be fetched automatically). Checked 2026-10-23. ↩︎

  36. With 783 million people going hungry, a fifth of all food goes to waste — UN News, on the UNEP Food Waste Index Report 2024, 2024-03-27. Checked 2026-10-23. ↩︎

  37. GreenChill Program — US Environmental Protection Agency, live page. Checked 2026-10-23. ↩︎

Related Ops

SupplyChainOps

SupplyChainOps (supply chain operations) plans and runs the flow of goods, information and cash from suppliers to customers so that promised service levels are met with the least inventory, cost and disruption the business can afford.

ProcurementOps

ProcurementOps (procurement operations) runs how an organisation buys, from a request to the supplier's payment, as a fast, measured operation whose controls (approvals, segregation of duties, matching) stop error and fraud.

CXOps

CXOps (customer experience operations) is an unstandardised label. This page uses it for the system that turns customer feedback into owned, verified fixes across the whole journey: survey and signal design, closing the loop, journey governance and honest experience metrics.

WebOps

WebOps is a loose label for running websites: the path from DNS through CDN, TLS and web servers to the browser, operated by developers and marketers who share one site. No body defines it; vendors also use it as a product category.

FinTechOps

FinTechOps, as this Atlas uses the term, is the operation of money movement in a financial-technology business: every payment is recorded once in a double-entry ledger, moves over the right rail, and is reconciled against the bank and processor records every day.

AnalyticsOps

AnalyticsOps has no standard definition. On this page it means operating the layer where people consume data: versioned metric definitions, a semantic layer that serves them, and BI content that is certified, monitored and retired, so each important metric has one trusted definition.

PeopleOps

PeopleOps (people operations) runs an organisation's employee lifecycle (hiring, onboarding, moves, pay, performance and exits) as a reliable, measured operation built on one trusted system of record, clear owners and service levels.

MarketingOps

MarketingOps (marketing operations) runs marketing as a dependable system: campaigns built and checked to a standard, leads captured with consent, scored and followed up by sales under an agreed service level, and pipeline measurement people can trust.

Practise and get certified

From xOps School

Practise RetailOps and get certified

The RetailOps track on xOps School (part of the Coffee Pass) has study notes, a 25-question practice quiz with explanations, and a verifiable certificate when you score 70% or more. Sign in with Google to start.

For teams

Instructor-led training

Live batches for your team, with completion certificates and reports for L&D/HR.

Source: master.md (the editorial source of this page) · built 2026-10-23 · diagrams rendered with @mermaid-js/mermaid-cli 11.17.0 (mermaid 11.17.2)