Supply Chain Inventory Conservation

Domain: Supply Chain Management & Logistics Application: Automated inventory reconciliation, shrinkage detection, multi-echelon optimization Framework Fit: 9/10 (Clean conservation, similar to healthcare template) Urgency: MEDIUM (Ongoing business problem, large TAM) Status: Conceptual (healthcare template 90% reusable)


1. The Problem: Inventory Reconciliation Gaps

Current State

Industry Challenge: - Inventory shrinkage: $100B annual losses in U.S. retail (NRF, 2024) - Manual reconciliation: Physical counts quarterly/annually (labor-intensive, error-prone) - Multi-location complexity: Warehouses, stores, in-transit goods (hard to track) - SKU proliferation: 10K-100K+ SKUs per retailer (reconciliation scales poorly)

Root Causes of Shrinkage: - Theft (external + internal): 60-70% - Administrative errors: 15-20% (receiving errors, pricing mistakes) - Vendor fraud: 5-10% - Damage/spoilage: 5-10%

Gap: No automated way to: 1. Reconcile inventory across locations in real-time 2. Classify shrinkage by root cause (theft vs. error vs. damage) 3. Detect anomalies before physical count (flag high-risk SKUs/locations) 4. Validate multi-echelon conservation (warehouse → store transfers reconcile)


2. Conservation Principle

Inventory Balance Equation

Single-Location Conservation:

Inventory_end = Inventory_start + Production + Purchases + Inbound_Transfers
                - Sales - Outbound_Transfers - Shrinkage

Source Terms:
  Production:        Manufactured goods (if manufacturer)
  Purchases:         Vendor deliveries
  Inbound_Transfers: From other warehouses
Sink Terms:
  Sales:             Customer purchases
  Outbound_Transfers: To stores/warehouses
  Shrinkage:         Theft, damage, errors

Multi-Location Network:

Total_Inventory = Σ(Warehouse_i) + Σ(Store_j) + In_Transit

Conservation:
d(Total)/dt = Production + Purchases - Sales - Shrinkage

Internal transfers cancel:
Σ(Outbound_i) = Σ(Inbound_i) (net zero across network)

3. Mathematical Mapping

Stock Variables

Accounting → Supply Chain: - Equity (E_t) → Inventory Stock (units or $ value by SKU, location) - Assets (A_t) → Total Inventory (all locations + in-transit) - Liabilities (L_t) → Customer Orders (committed but not yet fulfilled)

State Vector:

x_t = [Inventory_SKU1_WH1, Inventory_SKU1_WH2, ..., Inventory_SKU_N_Store_M]^T

Dimensions: S SKUs × L locations = S×L state variables

Incidence Matrix (Distribution Network)

Network Structure:

Nodes: Warehouses, stores, suppliers, customers
Edges: Transfer routes (warehouse → store, supplier → warehouse)

Example 3-location network:
         Transfer1  Transfer2  Transfer3
WH1     [  -1         0          -1     ]  (ships to Store1, Store2)
Store1  [  +1         0           0     ]  (receives from WH1)
Store2  [   0        -1          +1     ]  (receives from WH1, ships to WH2)
WH2     [   0        +1           0     ]  (receives from Store2)

Kirchhoff: Σ(columns) = 0 for internal transfers

Source Terms Taxonomy

Category Source Term Sign Example Data Source
Inbound Production + Factory output ERP (SAP, Oracle)
Inbound Vendor Purchases + Supplier deliveries Purchase orders, ASNs
Inbound Returns (Customer) + Product returns RMA system
Outbound Sales - Customer purchases POS systems
Outbound Damage/Spoilage - Unsellable goods QA inspections
Outbound Theft (External) - Shoplifting Loss prevention
Outbound Theft (Internal) - Employee theft Internal audit
Outbound Administrative Error - Miscounts, data entry Cycle counts
Boundary Flux Warehouse Opening + New distribution center Facility startups
Boundary Flux Store Closure - Location shutdown Facility closures
Measurement Physical Count Adj ± Reconcile to cycle count Annual/quarterly counts

4. Use Cases

Use Case 1: Automated Inventory Reconciliation

Problem: Quarterly physical counts vs. perpetual system (book-to-physical variance)

Current Approach: - Count all SKUs physically (labor-intensive, store closed) - Compare to book inventory (ERP system) - Adjust for variance (write-off shrinkage) - Time: 8-24 hours per location, 4× per year

Framework Application:

def validate_inventory_conservation(location, period):
    # Opening balance
    inventory_start = erp.get_inventory(location, period.start)

    # Source terms
    production = erp.get_production(location, period)
    purchases = erp.get_vendor_deliveries(location, period)
    inbound = erp.get_inbound_transfers(location, period)
    returns = erp.get_customer_returns(location, period)

    # Sink terms
    sales = pos.get_sales(location, period)
    outbound = erp.get_outbound_transfers(location, period)
    damage = qa.get_damaged_goods(location, period)

    # Expected closing
    expected_end = (inventory_start + production + purchases + inbound + returns
                    - sales - outbound - damage)

    # Actual closing (ERP book balance)
    actual_end = erp.get_inventory(location, period.end)

    # Residual = shrinkage (theft + errors)
    shrinkage = expected_end - actual_end

    # Pass/fail (±2% tolerance typical for retail)
    pass_recon = abs(shrinkage) < 0.02 * inventory_start

    return {
        'shrinkage': shrinkage,
        'shrinkage_pct': shrinkage / inventory_start,
        'pass': pass_recon
    }

Output:

Location: Warehouse 5, SKU: Electronics_12345
Period: 2025-Q1

✓ Opening inventory: 1,000 units
✓ Production: 0 (not a manufacturer)
✓ Vendor purchases: 500 units (3 POs)
✓ Inbound transfers: 200 units (from WH1)
✓ Customer returns: 50 units
- Sales: 800 units (POS data)
- Outbound transfers: 300 units (to Store 10, Store 15)
- Damage: 20 units (QA rejected)

Expected closing: 1,000 + 500 + 200 + 50 - 800 - 300 - 20 = 630 units
Actual (book): 610 units

⚠ Shrinkage detected: 20 units (3.2% of opening - above 2% threshold)

Likely causes:
1. Theft (10-15 units estimated)
2. Receiving error (5 units - PO vs. actual delivered mismatch)
3. Data entry error (counted twice in outbound transfer?)

Value: - Continuous monitoring (weekly/monthly vs. quarterly physical counts) - Early detection (flag high-shrinkage SKUs before losses accumulate) - Root cause attribution (classify shrinkage by source term)


Use Case 2: Multi-Echelon Network Validation

Problem: Goods transfer between warehouses/stores - conservation across network?

Framework Application: Reynolds Transport for warehouse transfers

Scenario:

Warehouse 1 ships 100 units to Store 5
Expected:
  WH1 inventory: -100 units (outbound)
  In-transit:    +100 units (goods on truck)
  Store 5:       +100 units (once delivered)

Conservation:
ΔInventory_total = ΔWH1 + ΔIn_Transit + ΔStore5
                 = -100 + 100 + 0 = 0 ✓ (before delivery)
                 = -100 + 0 + 100 = 0 ✓ (after delivery)

If conservation violated:
- Missing shipment (truck lost/stolen)
- Receiving error (Store 5 received 90, not 100)
- Data entry error (WH1 recorded -100 but actually shipped -80)

Boundary Flux (Analogous to M&A):

Warehouse Opening:
Before: 5 warehouses, total inventory 10,000 units
Open WH6 with 2,000 units initial stock

ΔInventory_total = ΔInventory_existing + Inventory_WH6_initial
                 = 0 + 2,000 = 2,000 (boundary flux)

Validate: New inventory came from:
- Vendor purchase (source term)
- Transfer from other warehouses (internal flow, should cancel)
- Or unexplained? (fraud risk)

Use Case 3: Shrinkage Classification & Attribution

Problem: Shrinkage detected ($20 units lost) but don’t know if theft, error, or damage

Framework Source Term Attribution:

def classify_shrinkage(shrinkage_amount, location_data):
    # Collect evidence from auxiliary data sources
    theft_incidents = security.get_incidents(location, period)
    damaged_reports = qa.get_damage_reports(location, period)
    receiving_errors = audit.get_po_variances(location, period)
    cycle_count_diffs = audit.get_count_discrepancies(location, period)

    # Attribute shrinkage to source terms
    theft_estimated = theft_incidents.sum()
    damage_confirmed = damaged_reports.sum()
    error_documented = receiving_errors.sum() + cycle_count_diffs.sum()

    residual = shrinkage_amount - theft_estimated - damage_confirmed - error_documented

    return {
        'total_shrinkage': shrinkage_amount,
        'attributed': {
            'theft': theft_estimated,
            'damage': damage_confirmed,
            'errors': error_documented,
            'unexplained': residual
        }
    }

Output:

Shrinkage: 20 units ($1,200 value)

Attribution:
- Theft (documented incidents): 8 units ($480)
- Damage (QA reports): 5 units ($300)
- Receiving errors (PO variances): 4 units ($240)
- Unexplained: 3 units ($180) ← FLAG FOR INVESTIGATION

Recommended actions:
1. Review security footage for unexplained 3 units
2. Audit receiving process (4 units error rate high)
3. Increase theft deterrence (8 units theft above norm)

5. Data Sources & Tools

ERP Systems (Primary Source)

SAP: Inventory Management (MM module), Warehouse Management (WM/EWM) Oracle NetSuite: Inventory tracking, multi-location Microsoft Dynamics 365: Supply Chain Management Infor: WMS (Warehouse Management System)

Data Access: SQL queries, REST APIs, ODBC connections


Point-of-Sale (POS) Systems

Square, Shopify POS, NCR, Oracle Retail: Sales transactions Data: SKU-level sales, timestamp, location Use: Validate sales (sink term) against inventory depletion


Warehouse Management Systems (WMS)

Manhattan Associates, Blue Yonder, HighJump: Location tracking, transfers Data: Bin-level inventory, pick/pack/ship events Use: Validate inbound/outbound transfers (internal flows)


IoT & RFID

RFID Tags: Real-time inventory tracking (Walmart, Macy’s use) Sensors: Temperature (spoilage), motion (theft detection) Use: Continuous validation (not just periodic counts)


6. Implementation Plan

Prototype: 2-3 weeks - Parse ERP data (SAP, Oracle) - Single-location validator (adapt healthcare episode validator) - Shrinkage detection

Production: 6-8 weeks - Multi-location network validation - Reynolds Transport for warehouse openings/closures - Real-time RFID integration

Code Reuse: 90% (healthcare template directly applicable)


7. Market Opportunity

Target Customers: - Retailers: Walmart, Target, Amazon (100K+ SKUs, global distribution) - Manufacturers: P&G, Unilever (complex supply chains) - 3PLs: DHL, FedEx warehousing (client inventory management)

Pricing: $100K-500K per enterprise

TAM: $50M+ (thousands of mid-large enterprises)


8. Why This Fits

Conservation Structure: - Inventory is strictly conserved (goods can’t teleport) - Source terms explicit (production, purchases) - Data quality good (ERP systems mature) - Regulatory requirements (ASC 330, IAS 2 inventory standards)

Similarity to Healthcare: - Healthcare: Patient episodes (admission → discharge) - Supply Chain: Goods flow (receive → sell) - Both: Discrete entities moving through network

Framework Advantage: - Automated reconciliation (vs. quarterly physical counts) - Shrinkage attribution (classify by root cause) - Multi-echelon validation (network-wide conservation)

Strategic Value: - Proves business value (not just academic/regulatory) - Large market ($50M+ TAM, many potential customers) - Low technical risk (ERP data mature, healthcare template proven)


Next Steps: Prototype with SAP or Oracle ERP data, validate single warehouse, expand to network

Document Status: Ready for implementation

Accounting Conservation Framework | Home