Static copy. This is the app with its data saved at build time, so it opens at once. Charts keep their hover, and each filter works one change at a time. Uploads and parameter edits need the full app, which can take about a minute to wake.
Generated data.
Every figure here comes from seed/generate_workbook.py โ
a seven-node fulfillment network, 420 SKUs, 18 months of weekly shipments,
seeded so it is identical on every run.
Inventory overview
What the network holds, what it costs to hold it, and how fast it moves. Every number below is at cost, on the snapshot date, across all seven nodes.
Inventory at cost$10.94M420 SKUs across 1,524 stocked locations
Inventory turns4.23on $46.23M annualised COGS
Days inventory outstanding86median location holds 51 days
Fill rate98.8%units shipped over units requested
Stocked out now11661 lines at or below the reorder point
Carrying cost$2.63M24% of value, per year
Excess and dead$2.93M$610k a year to keep holding it
GMROI1.81margin dollars per dollar of stock
Forecast accuracy67.7%bias -10.1% on the median SKU
Record accuracy96.1%2,600 counts, $72k net shrink
Open actions1,170$303k of contribution at risk
Inventory value and days on hand
Value is rolled backwards from the closing snapshot through the shipments that
produced it, so the level is exact only at the right-hand edge. Days inventory
outstanding is on cost of goods sold, not revenue.
Cost of carrying it
Four components, not one blended rate โ they respond to different levers.
Obsolescence risk is charged against slow and dead stock only.
Where the value sits
ABC concentration
Share of SKUs against share of annual consumption value. The gap between the two
bars in each class is the whole argument for differentiated stock policy.
Load a workbook
Nine sheets: Item Master, Supplier Master, Network Nodes, Demand History, Inventory
Snapshot, Purchase Orders, Cycle Counts, Inventory Adjustments, Planning Parameters.
The generated sample is the shape of a real WMS and ERP export; upload one of your
own and it goes through the same pipeline with no demo branch anywhere in it.
Uploads need the full app. The static copy shows the generated sample.
No runs recorded yet. Each workbook you process adds a row, so a weekly planning cycle builds its own trend.