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 onlog1p(demand), then exponentiated back. Outputs land indata/forecasts/p95_per_sku.parquet.