Help Center

Documentation and standard operating procedures
SKU cohorts — how they're defined

Every SKU is bucketed once a week from panel_raw by demand intensity and how long we've been seeing it. Thresholds live in config/settings.yaml → segmentation.

Cohort Rule What it means for buyers
hero demand_per_week ≥ 7 AND history_days ≥ 180 Top sellers. Forecasts are the most reliable here — never run them out of stock.
midtail demand_per_week ≥ 3 AND history_days ≥ 90 (and not hero) Steady mid-volume SKUs. Forecasts are decent; treat as the workhorse of the catalog.
longtail everything that's not hero / midtail / new Sparse, lumpy demand. Forecasts are wide; use p95 (not p50) to size orders.
new history_days ≤ 30 Cold-start SKU — not enough history for the model. Borrow signal from similar items.
Stock status — when is a SKU "low" or "critical"?

Cover in weeks = current on-hand ÷ weekly p95 demand. For 1P SKUs, on-hand is read from Stock.parquet (warehouse history); for 3P SKUs, from the offer snapshot.

Status Rule Where it appears
OOS on-hand = 0 1P Orders, Inventory Health "Out of stock" bucket
CRITICAL weeks of cover < 1 1P Orders top of the reorder list
LOW weeks of cover < 2 1P Orders & "Low stock" bucket on the dashboard
Healthy cover between 2 and 12 weeks Default bucket — no action needed
Overstocked cover > 12 weeks (with demand > 0) Dashboard "Overstock SKUs" counter
Vendor channels — 1P vs 3P
Channel Definition Stock source on this site
1P Offer's type_produit starts with "1P" (Marjane's own inventory) Stock.parquet (latest warehouse on-hand, summed across 1P sellerids)
3P Everything else — marketplace sellers Offer snapshot (stock_total, seller-declared)
Forecast quantiles — what p50 and p95 mean
p50 (median)
Half the weeks demand will be below this number, half above. Good for "expected" planning.
p95 (upper bound)
Demand should exceed this value only 1 week in 20. The platform uses p95 for sizing reorders because stocking out is much more expensive than carrying a little extra cover.
Production predictor
forecast_p95.py — an LGBM quantile regressor trained on log1p(demand), then exponentiated back. Outputs land in data/forecasts/p95_per_sku.parquet.