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