| Warehouse | SKUs | Units OH |
|---|---|---|
| Warehouse (MA) | 5,961 | 802,054 |
| WI-AWD | 42 | 13,306 |
| Bulk Items(MA) | 18 | 11,294 |
| Meddev | 2 | 2 |
| Vel / Day | Adjusted daily velocity - units sold per day. Blended from 90/180/365-day history weighted by demand trend, then multiplied by seasonality index and campaign uplift (capped at 50%). |
| Available | On-hand + in-transit stock. The total units available to commit to customers today. |
| Safety Stock | Minimum buffer held above expected demand during lead time. Calculated as Z x demand std dev x √(lead time). Z varies by ABC-XYZ class (85%-99% service level). |
| Days Cover | Available / daily velocity. How many days the current stock will last at today's demand rate. |
| Recommended Qty | Full target position before netting any open PO: Safety Stock + CEIL(Velocity x (Lead Time + Review Cycle) x Buffer) - Available. Review cycle = 7d (A) / 14d (B) / 21d (C). Buffer = 10% (Fast) / 20% (Medium) / 30% (Slow). Capped at 180 days cover. Only shown for Out of Stock / Below Safety Stock / Reorder Now. |
| Purchase Qty | Recommended Qty minus any Open PO already in transit, rounded up to the nearest pack size. This is the actual number of units to place a new PO for - shows "-" when the open PO already covers the full Recommended Qty. |
| Unit Price | Most recent real purchase cost per unit for this SKU, from vendor bill history (vendor_fact_sku_purchases) - the item master's own last-purchase-price field is unpopulated for every SKU in this database, so this is the practical substitute. |
| Procurement Cost | Purchase Qty x Unit Price - the cash outlay (working capital) needed to place this SKU's suggested PO. |
| Cost of Inventory (WH) | Total On Hand x Unit Price - the value of physical stock sitting in the warehouse right now, regardless of committed/uncommitted status. |
| Priority Score | 0-100 score for action SKUs. Urgency tier (40%) + Margin at Risk (30%) + ABC class (20%) + Days Cover pressure (10%). Higher score = order first. |
| MAR ($) | Margin at Risk - estimated gross margin lost if this SKU stocks out. Calculated as: Daily GM x Estimated OOS days x OOS probability. |
| Daily GM ($) | Daily gross margin contribution at current velocity. Indicates how much margin is earned (or lost) per day this SKU is in/out of stock. |
Three-tier cadence. Daily at 6:30 AM: on-hand qty, open POs, OOS risk flags - the operational heartbeat. Every Sunday 11 PM: full model rebuild - velocity, lead times, safety stock, reorder points. First Sunday of month: ABC/XYZ reclassification, seasonality index recalibration, trend direction update. Manual triggers exist for physical counts, new vendor onboarding, or significant lead time changes.
All active SKUs are in scope. Phase-out / discontinued SKUs appear in output with Order Qty = 0 ("Do not reorder - run down remaining stock"). Reactivated SKUs (seasonal items restored to catalogue) are included using pre-inactivity velocity and flagged for buyer review - their velocity is based on older data and must be verified before ordering.
Daily velocity is a weighted blend of three windows (90/180/365-day averages). Weights adapt to trend: growing SKUs (90d > 365d by 15%+) weight recent data at 60%; declining SKUs weight longer history at 50%; stable SKUs use a 50/20/30 balance. The blended result is then multiplied by a seasonality index (4-year monthly history) and an event uplift factor if a Listrek campaign is scheduled - capped at 50% to prevent over-buying.
The system uses the most accurate lead time available: Tier 1 = SKU-actual average from real Item Receipt history (requires ≥2 receipts), Tier 2 = vendor-actual average across all that vendor's SKUs (requires ≥3 receipts), Tier 3 = item master default (NetSuite), Tier 4 = 15-day system default (last resort). The source tier is recorded for every SKU. Vendors with lead time standard deviation ≥14 days are flagged Unreliable - this feeds directly into chronic OOS root cause analysis.
Safety Stock = Z x daily demand std dev x √(lead time days). Z varies by ABC-XYZ class from 1.04 (CZ, 85% service level) to 2.33 (AZ, 99%). Reorder Point = (velocity x lead time) + safety stock. Both are adjusted upward for scheduled promotional events, seasonal demand peaks, and high-volatility SKUs - ensuring the trigger point accounts for real-world demand conditions.
Each SKU is assigned one of eight statuses based on available qty vs thresholds, in priority order (first match wins): Dead Stock (zero velocity - checked first, never worth an action flag) -> Out of Stock (zero available) -> Below Safety Stock (below buffer) -> Reorder Now (at or below reorder point) -> Slow Moving (low but real demand) -> Excess Stock (>365D) -> Excess Stock (>250D) -> Healthy (everything else, adequate cover). If an open PO already covers the need, the PO Status/Purchase Qty columns show that directly - the status itself always reflects the true current stock position.
Two stages. Recommended Qty = Safety Stock + CEIL(Velocity x (Lead Time + Review Cycle) x Buffer) - Available, capped at 180 days cover - shown only for Out of Stock / Below Safety Stock / Reorder Now (every other status is 0). Review cycle adapts to ABC class: A = 7 days, B = 14 days, C = 21 days. Order buffer adapts to movement profile: Fast = 10%, Medium = 20%, Slow = 30% - because erratic SKUs need more protection against forecast error. Purchase Qty = Recommended Qty minus any Open PO already in transit, rounded up to the nearest pack size - this is the number to actually place a new PO for.
ABC classifies by 24-month cumulative revenue: A = top 70% (~300-500 SKUs), B = next 20%, C = bottom 10%. Movement Profile classifies by daily velocity: Fast, Medium, Slow, Slow/Dead. Together they determine service level targets, safety stock investment level, and how frequently each SKU is reviewed. Both are updated monthly on the first Sunday.
When multiple SKUs need attention, Priority Score tells buyers which to order first. Components: Urgency tier - 40 pts (OOS=40, Below Safety=30, Reorder Now=20). Margin at Risk - 30 pts (actual $ calculated from daily GM x estimated OOS days x OOS probability, normalised across all SKUs). ABC class - 20 pts (A=20, B=12, C=5). Days Cover pressure - 10 pts (0d=10, ≤7d=8, ≤14d=6, ≤30d=4). Score ≥85 = order today. 60-84 = this buying cycle.
For seasonal SKUs, a standard order quantity can create overstock if placed near the end of a peak season. The system compares post-order days of cover against days remaining in the current season. If cover exceeds days remaining AND fewer than 90 days remain in season, the order is flagged as Overstock Risk - buyers should reduce the quantity or defer to the next season.
A SKU with 2 or more stockout events in the last 12 months is flagged Chronic OOS. An OOS event is detected when monthly sales = 0 AND surrounding months show velocity ≥15 units/month (distinguishing true stockouts from seasonal gaps). Root cause is diagnosed automatically: Vendor Unreliable (lead time std dev ≥14 days), Thin PO History (<3 POs), Safety Stock Too Low (≤5 units), or Demand Spike (none of the above).
Full catalog - all 6,854 SKUs with attributes and status flags
| SKU | Category | Vendor | ABC | Status | Flags | Total On Hand | Cost of Inventory (WH) | Days Cover | Recommended Qty | PO Status | Purchase Qty | Unit Price | Procurement Cost | Vel/Day | Pax Size |
|---|
| Trend | SKUs |
|---|---|
| Declining | 3,183 |
| Stable | 2,102 |
| Unknown | 2,062 |
| Growing | 2,055 |
| Profile | SKUs |
|---|---|
| High seasonality | 6,617 |
| Moderate seasonality | 1,388 |
| Stable | 1,139 |
| Low seasonality | 258 |
| Tier | SKUs |
|---|---|
| Medium (0.1-1 / day) | 3,605 |
| No Velocity | 3,115 |
| Fast (1+ / day) | 1,498 |
| Slow (<0.1 / day) | 1,184 |
| Rate | SKUs |
|---|---|
| High (12x+ / yr) | 2,606 |
| Medium (4-12x / yr) | 2,068 |
| Low (<4x / yr) | 1,154 |
| Vendor | Buyer | Fill% | SKUs | OOS | Reo.Now | MAR($) | Avg LT | A-SKUs |
|---|
How every SKU is processed - from data load to purchase recommendation. Click any phase to expand and explore the details and worked examples.