Inventory Overview

622
Out of Stock
640
Below Safety Stock
737
Reorder Now
2,958
Healthy
1,117
Excess Stock
9,770
Total SKUs
$199,255
Margin at Risk ($)
OOS Risk Distribution
ABC Classification
PQR Profitability
Days of Cover Distribution
Information about this Dashboard
Status Definitions
Out of Stock - Zero available units. Every day without stock is lost margin. Immediate reorder required.
Below Safety Stock - Units exist but below the minimum safety buffer. Buffer is being consumed. Order urgently.
Reorder Now - Stock has dropped to the reorder point. Order today - any delay risks a stockout before delivery arrives.
Reorder Soon - Days of cover < lead time Ã- 1.5. No emergency today, but prepare the order this buying cycle.
Healthy - Adequate stock with comfortable cover. No action needed this cycle.
Excess Stock - Over 365 days of cover. Capital is tied up. Consider reducing future orders, promotions, or return to vendor.
Column Glossary
Vel / DayAdjusted 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%).
AvailableOn-hand + in-transit stock. The total units available to commit to customers today.
Safety StockMinimum buffer held above expected demand during lead time. Calculated as Z Ã- demand std dev Ã- √(lead time). Z varies by ABC-XYZ class (85%–99% service level).
Days CoverAvailable ÷ daily velocity. How many days the current stock will last at today's demand rate.
Order QtySuggested units to reorder. Formula: CEIL(Velocity Ã- (Lead Time + Review Cycle) Ã- Buffer) − Available − Open POs. Review cycle = 7d (A) / 14d (B) / 21d (C). Buffer = 10% (Fast) / 20% (Medium) / 30% (Slow). Capped at 180 days cover.
Priority Score0–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 Ã- Estimated OOS days Ã- 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.
ABC Classification
A-Class - Top 70% of 24-month cumulative revenue. ~300–500 SKUs. Reviewed every 7 days. Service level 95–99%.
B-Class - Next 20% of revenue. ~1,000 SKUs. Reviewed every 14 days.
C-Class - Bottom 10% of revenue. ~4,500 SKUs. Reviewed every 21 days. Minimal safety stock investment.
Updated monthly (first Sunday). ~5% of SKUs reclassify each month.
Movement Profile
Fast - High daily velocity, predictable demand. 10% order buffer.
Medium - Moderate velocity. 20% order buffer.
Slow - Low velocity, variable demand. 30% order buffer for protection.
Slow / Dead - Minimal or zero velocity. Reviewed for disposal. Minimal ordering.
PQR Profitability (GM2)
P - GM2 ≥ 35%. Highest margin products. Protect stock aggressively.
Q - GM2 15–35%. Moderate profitability. Standard reorder cadence.
R - GM2 < 15%. Low margin. Lean inventory approach.
GM2 = Gross margin after direct shipping & inventory adjustments.
Priority Score - How to Read It
85–100  Order Today 60–84  This Cycle 35–59  Monitor Below 35  No Action
When two SKUs are both Out of Stock, Priority Score tells you which to reorder first - the one with more financial margin at risk and higher strategic value (ABC class).
Steps Explanation - How This System Works
Phase 1 - Data Foundation
1

Refresh Schedule

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.

2

Which SKUs Are Included

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.

Phase 2 - Demand Measurement
3

Blended Velocity

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.

4

Lead Time - 4-Tier Waterfall

The system uses the most accurate lead time available: Tier 1 = SKU-actual median (requires ≥5 historical POs), Tier 2 = category median, Tier 3 = item master default, Tier 4 = 15-day system default. 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.

Phase 3 - Stock Thresholds
5

Safety Stock & Reorder Point

Safety Stock = Z Ã- daily demand std dev Ã- √(lead time days). Z varies by ABC-XYZ class from 1.04 (CZ, 85% service level) to 2.33 (AZ, 99%). Reorder Point = (velocity Ã- 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.

Phase 4 - Status & Action
6

Status Tiers

Each SKU is assigned one of six statuses based on available qty vs thresholds: Out of Stock (zero available) → Below Safety Stock (below buffer) → Reorder Now (at or below reorder point) → Reorder Soon (days of cover < lead time Ã- 1.5) → Healthy (adequate cover) → Excess Stock (>365 days cover). Dead Stock (no velocity 180+ days) and Slow Stock are flagged separately.

7

Order Quantity - Dynamic Coverage

Formula: CEIL(Velocity Ã- (Lead Time + Review Cycle) Ã- Buffer) − Available − Open POs, capped at 180 days cover. 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. Open POs are always deducted to avoid double-ordering stock already on its way.

Phase 5 - Scoring & Prioritisation
8

ABC & Movement Classification

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.

9

Priority Score (0–100)

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, Reorder Soon=10). Margin at Risk - 30 pts (actual $ calculated from daily GM Ã- estimated OOS days Ã- 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.

Phase 6 - Protective Flags
10

Seasonal Overstock Protection

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.

11

Chronic OOS Detection

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).

Click any KPI card above to drill into that status

OUT OF STOCK  622

Zero stock · sorted by margin at risk  Â·  622 total  Â·  showing top 150

Search: Category: Class: ABC: Vendor: Loading... Top 150 shown
# SKU Category Class ABC Priority Vel/Day Available Days Cover Order QtyMAR ($) Vendor Recommendation

Below Safety Stock  640

Stock below safety threshold · sorted by margin at risk  Â·  640 total  Â·  showing top 150

Search: Category: Class: ABC: Vendor: Loading... Top 150 shown
# SKU Category Class ABC Priority Vel/Day Available Days Cover Order QtyMAR ($) Vendor Recommendation

Reorder Now  737

Approaching reorder point · sorted by margin at risk  Â·  737 total  Â·  showing top 150

Search: Category: Class: ABC: Vendor: Loading... Top 150 shown
# SKU Category Class ABC Priority Vel/Day Available Days Cover Order QtyMAR ($) Vendor Recommendation

Healthy  2,958

Adequate stock · sorted by 24-month revenue  Â·  2,958 total  Â·  showing top 100

Search: Category: Class: ABC: Vendor: Loading... Top 100 shown
# SKU Category Class ABC Vel/Day Available Safety StockDays Cover Vendor

Excess Stock  1,117

Over 365 days cover · sorted by available qty  Â·  1,117 total  Â·  showing top 100

Search: Category: Class: ABC: Vendor: Loading... Top 100 shown
# SKU Category Class ABC Vel/Day Available Safety StockDays Cover Vendor

Demand Analysis

Days of Cover Distribution
Velocity Tiers
TierSKUs
Fast (1+ / day)181
Medium (0.1-1 / day)471
Slow (<0.1 / day)5,439
Slow / Dead1,218
No profile2,461

Vendor Performance

Fill Rate - Bottom 20 Vendors
Vendor Table
VendorFill %POsOpen

Decision Flowchart

How every SKU is processed - from data load to purchase recommendation. Scroll down to explore all phases.

flowchart TD
  classDef proc fill:#e0f4f7,stroke:#228899,stroke-width:2px,color:#1a1a2e
  classDef dec fill:#fff8e1,stroke:#f9a825,stroke-width:2px,color:#5d4037
  classDef term fill:#e8f5e9,stroke:#43a047,stroke-width:3px,color:#1a1a2e
  classDef stop fill:#ffebee,stroke:#e53935,stroke-width:2px,color:#c62828
  classDef flag fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#bf360c
  classDef s_oos fill:#ffebee,stroke:#e53935,stroke-width:2px,color:#c62828
  classDef s_ss fill:#fce4ec,stroke:#ef5350,stroke-width:2px,color:#880e4f
  classDef s_rn fill:#fff3e0,stroke:#fb8c00,stroke-width:2px,color:#bf360c
  classDef s_rs fill:#fffde7,stroke:#f9a825,stroke-width:2px,color:#f57f17
  classDef s_hlt fill:#e8f5e9,stroke:#43a047,stroke-width:2px,color:#1b5e20
  classDef s_exc fill:#e3f2fd,stroke:#1e88e5,stroke-width:2px,color:#0d47a1
  START(["START - SKU enters system"]):::term
  P1["PHASE 1 - DATA INPUT / Daily 6:30AM: on-hand + POs + flags / Sunday 11PM: full rebuild / 1st Sunday: ABC reclassification"]:::proc
  D2A{"Inactive or Discontinued?"}:::dec
  STOP1(["STOP - Excluded from all output"]):::stop
  D2B{"Phase-Out SKU?"}:::dec
  PO_FLAG["Order Qty = 0 - Do not reorder, run down stock"]:::flag
  D2C{"Reactivated SKU?"}:::dec
  RFLAG["Flag: Buyer Review - use pre-inactivity velocity, verify before ordering"]:::flag
  P3["PHASE 3 - DEMAND VELOCITY / Blend 90d-180d-365d by trend: Growing 60-15-25, Declining 25-25-50, Stable 50-20-30 / x Seasonality x Event Uplift max 50pct"]:::proc
  P4["PHASE 4 - LEAD TIME (4-TIER) / Tier1: SKU actual 5+ POs / Tier2: Category median / Tier3: Item master / Tier4: 15-day default"]:::proc
  D4{"Vendor std dev >= 14 days?"}:::dec
  VFLAG["Flag: Vendor Unreliable - feeds chronic OOS root cause"]:::flag
  P5["PHASE 5 - SAFETY STOCK and REORDER POINT / SS = Z x Std Dev x sqrt(LT) - Z from 1.04 CZ to 2.33 AZ / ROP = Vel x LT + SS"]:::proc
  D5{"Promo event within lead time window?"}:::dec
  ROPUP["Increase ROP for scheduled promotional event"]:::flag
  PH6["PHASE 6 - STATUS ASSIGNMENT"]:::proc
  D6A{"Available = 0?"}:::dec
  S_OOS(["OUT OF STOCK - Order immediately"]):::s_oos
  D6B{"Available below Safety Stock?"}:::dec
  S_SS(["BELOW SAFETY STOCK - Order urgently"]):::s_ss
  D6C{"Available below Reorder Point?"}:::dec
  S_RN(["REORDER NOW - Order today"]):::s_rn
  D6D{"Days Cover below Lead Time x 1.5?"}:::dec
  S_RS(["REORDER SOON - Prepare this cycle"]):::s_rs
  D6E{"Days Cover above 365?"}:::dec
  S_EX(["EXCESS STOCK - Reduce future orders"]):::s_exc
  S_OK(["HEALTHY - No action needed"]):::s_hlt
  PH7["PHASE 7 - ORDER QUANTITY / OQ = CEIL(Vel x (LT + RC) x Buffer) - Avail - OpenPO / RC: A=7d B=14d C=21d / Buffer: Fast=10pct Med=20pct Slow=30pct / Cap 180d"]:::proc
  D7A{"Phase-Out or Healthy or Excess?"}:::dec
  OQ0["Order Qty = 0"]:::proc
  D7B{"OQ zero or negative and Critical status?"}:::dec
  OQMOQ["Order Qty = 1 x MOQ - forced minimum order"]:::flag
  PH8["PHASE 8 - PRIORITY SCORE 0-100 / Urgency 40pts: OOS=40 SS=30 RN=20 RS=10 / MAR$ 30pts: mar-31559 x 30 / ABC 20pts: A=20 B=12 C=5 / DaysCover 10pts"]:::proc
  D9A{"Seasonal SKU?"}:::dec
  D9B{"Cover exceeds days left AND under 90 days remain?"}:::dec
  OSFLAG["Flag: Overstock Risk - reduce qty or defer to next season"]:::flag
  D10{"2+ OOS events in past 12 months?"}:::dec
  CHFLAG["Flag: Chronic OOS / Root cause: Vendor Unreliable - Insufficient PO History - Safety Stock Too Low - Demand Spike"]:::flag
  PH11["PHASE 11 - FINAL OUTPUT / Priority Score + Dynamic OQ + MAR$ + Recommendation / SKU sorted into dashboard tab by status"]:::proc
  DONE(["END - SKU in dashboard reorder queue"]):::term
  START --> P1 --> D2A
  D2A -- YES --> STOP1
  D2A -- NO --> D2B
  D2B -- YES --> PO_FLAG --> P3
  D2B -- NO --> D2C
  D2C -- YES --> RFLAG --> P3
  D2C -- NO --> P3
  P3 --> P4 --> D4
  D4 -- YES --> VFLAG --> P5
  D4 -- NO --> P5
  P5 --> D5
  D5 -- YES --> ROPUP --> PH6
  D5 -- NO --> PH6
  PH6 --> D6A
  D6A -- YES --> S_OOS --> PH7
  D6A -- NO --> D6B
  D6B -- YES --> S_SS --> PH7
  D6B -- NO --> D6C
  D6C -- YES --> S_RN --> PH7
  D6C -- NO --> D6D
  D6D -- YES --> S_RS --> PH7
  D6D -- NO --> D6E
  D6E -- YES --> S_EX --> PH7
  D6E -- NO --> S_OK --> PH7
  PH7 --> D7A
  D7A -- YES --> OQ0 --> PH8
  D7A -- NO --> D7B
  D7B -- YES --> OQMOQ --> PH8
  D7B -- NO --> PH8
  PH8 --> D9A
  D9A -- YES --> D9B
  D9B -- YES --> OSFLAG --> D10
  D9B -- NO --> D10
  D9A -- NO --> D10
  D10 -- YES --> CHFLAG --> PH11
  D10 -- NO --> PH11
  PH11 --> DONE
Yellow = Decision point  |  Teal = Process step  |  Green = Start/End  |  Orange = Flag/Alert  |  Red = Status

Stock Position

Demand & Trend

Replenishment