97% fill rate — rightuntil the coupling takes the line down.
A storeroom’s fill rate averages a $12 fuse with a 26-week-lead gearbox coupling. Availability isn’t the risk — the gap between a spare’s replenishment lead time and the downtime you can tolerate on the asset it protects is. This watchtower reads your export and gives two independent reads per spare: coverage as the headline, exposure severity alongside — so an out-of-stock fuse and an out-of-stock coupling are never the same alarm.
Fill rate is an average. A single point of failure is not.
fill rate treats a $12 fuse and a 26-week-lead coupling as equal line items. The average looks healthy right up until the coupling stocks out.
is a real lead time on a critical casting or drive component — far longer than the hours of downtime the asset it protects can absorb.
with zero on hand, no substitute, and a lead longer than tolerable downtime is a single point of failure hiding in a healthy storeroom.
Every inventory tool optimizes carrying cost — it wants to trim stock, and it treats every SKU as a cash line. But an MRO storeroom isn’t a warehouse of sellable goods; it’s insurance against downtime. The right question isn’t “how much cash is tied up here” — it’s “which spare, if it stocks out, takes the line down with no way to recover in time.” That’s a comparison between two numbers you already have: a spare’s lead time and the downtime its asset can tolerate.
Read a spare twice. Watch coverage and severity disagree.
Live watchtower · evaluated 2026-06-30
Action: Buy now — serves a crit-A asset, nothing on hand or order, no substitute, and the 182-day lead is 179 days past tolerable downtime
Crit-A asset, nothing on hand or order, no substitute, lead time past tolerable downtime — one failure downs the line with no recovery path. Any leg clearing releases it.
Grades a spare’s stockout risk, never a person or a named supplier. Deterministic and offline — your storeroom data, no benchmark.
The worked spare is a criticality-A coupling with nothing on hand, no substitute, and a 182-day lead against three days of tolerable downtime — UNPROTECTED and SINGLE-FAILURE RISK. Qualify a substitute and the gate releases: coverage stays UNPROTECTED (you still have none), but severity drops to HIGH. That’s the point of two reads — being out of stock and being at risk are different facts.
One command reads your storeroom export and names the spare to buy first.
$ python3 spares_watchtower.py sample_spares.csv --as-of 2026-06-30 ====================================================================== CRITICAL-SPARES STOCKOUT WATCHTOWER - RedHub AI (CSW-089) Evaluation date: 2026-06-30 ====================================================================== Spare: Main drive gearbox coupling [serves crit-A asset] On hand / on order / substitute : 0 / 0 / no Lead time / tolerable downtime : 182d / 3d (margin +179d) COVERAGE : UNPROTECTED EXPOSURE SEVERITY : SINGLE-FAILURE RISK <- single-failure risk Action : Buy now - serves a crit-A asset, nothing on hand or order, no substitute, and the 182-day lead is 179 days past tolerable downtime Spare: Main drive gearbox coupling (sub qualified) [serves crit-A asset] On hand / on order / substitute : 0 / 0 / yes Lead time / tolerable downtime : 182d / 3d (margin +179d) COVERAGE : UNPROTECTED EXPOSURE SEVERITY : HIGH Action : Order - no effective supply for this spare Spare: VFD control board [serves crit-A asset] On hand / on order / substitute : 0 / 1 / no Lead time / tolerable downtime : 120d / 5d (margin +115d) COVERAGE : ORDER NOW EXPOSURE SEVERITY : HIGH Action : On order, but the lead time exceeds tolerable downtime - expedite or qualify a substitute Spare: Hydraulic pump seal kit [serves crit-B asset] On hand / on order / substitute : 2 / 0 / no Lead time / tolerable downtime : 21d / 7d (margin +14d) COVERAGE : STOCKED EXPOSURE SEVERITY : HIGH Spare: Conveyor motor bearing [serves crit-B asset] On hand / on order / substitute : 0 / 0 / no Lead time / tolerable downtime : 35d / 10d (margin +25d) COVERAGE : UNPROTECTED EXPOSURE SEVERITY : HIGH Action : Order - no effective supply for this spare Spare: Control panel fuse 10A [serves crit-C asset] On hand / on order / substitute : 0 / 0 / yes Lead time / tolerable downtime : 3d / 1d (margin +2d) COVERAGE : UNPROTECTED EXPOSURE SEVERITY : LOW Action : Order - no effective supply for this spare Spare: PLC backup battery [serves crit-A asset] On hand / on order / substitute : 1 / 0 / no Lead time / tolerable downtime : 10d / 14d (margin -4d) COVERAGE : STOCKED EXPOSURE SEVERITY : HIGH ---------------------------------------------------------------------- STOREROOM VERDICT : SINGLE-FAILURE RISK Buy first : Main drive gearbox coupling [crit A] - SINGLE-FAILURE RISK (margin +179d) ---------------------------------------------------------------------- Grades a spare's stockout risk, never a person or a named supplier. Deterministic and offline - your storeroom data, no benchmark. Not procurement, financial, or engineering advice.
Stdlib-only Python. Both spares are out of stock — identical coverage, opposite severity, because the coupling downs the line and the fuse has a substitute and a three-day lead. The workbook reproduces these exact reads, and the demo above computes the identical output — verified byte-for-byte on the shipped sample.
Three rules keep the storeroom honest.
Two reads, never one score
Coverage answers whether you have supply; severity answers what a stockout costs. A single blended number would hide the stocked-but-fragile spare and the out-of-stock commodity that don't need the same response.
Risk is lead time vs tolerance
A spare with zero on hand is fine if you can get one before the asset's downtime matters. The comparison that drives every verdict is the spare's lead time against the downtime its asset can absorb.
Single-failure is dispositive
A crit-A spare with no supply, no substitute, and a lead past tolerable downtime is forced to the worst state — one failure, no recovery path. It releases the moment any single leg clears.
A stockout-risk watchtower, not an inventory optimizer or a supplier scorecard.
- A deterministic, offline watchtower you run on a storeroom export you already have.
- Two independent reads per spare: coverage, and what a stockout would cost.
- A named buy-first spare — the single point of failure to close before any other.
- Not an inventory optimizer — it sizes downtime risk, not carrying cost or EOQ.
- It grades a spare’s stockout risk, never a person or a named supplier.
- Not a CMMS or a purchasing system — it reads your export and connects to nothing. Not procurement, financial, or engineering advice.
Anyone who owns a storeroom or the downtime it’s insuring against.
- Maintenance and reliability managers who own the MRO storeroom
- Storeroom and MRO planners deciding what to stock and what to expedite
- Plant managers exposed to unplanned downtime from a missing spare
- Reliability engineers building a critical-spares list from scratch
- Optimizing carrying cost or reorder quantity — that's an inventory tool's job
- Ranking or grading suppliers — it scores a spare's risk, not a vendor
- Sellable or finished-goods inventory — this is the MRO spares lane
- Replacing your CMMS — it reads the export your CMMS already produces
The plant reliability desk.
The Supplier-Concentration Risk Gate
$99The external single-point-of-failure — one supplier you can't replace — beside this internal one, the spare you can't get in time.
ViewPM Deferral & Pencil-Whip Tripwire
$89Catches the deferred and pencil-whipped PMs that drive the unplanned failures your critical spares have to cover.
ViewManufacturing & Distribution Ops Pack
$89Seven Claude skills for the make-and-move surface, plus a runnable inventory auditor for sellable stock.
ViewThe honest answers.
Find the single point of failure
before it finds you.
One purchase, lifetime access, 12 months of updates. $89, once.
Sold by RedHub AI LLC · Secured by Stripe · redhub.ai