Forecasting Architecture¶
Model¶
Chronos-Bolt-mini - Amazon's time-series foundation model (smallest variant). Zero-shot forecasting with optional fine-tuning.
Pipeline¶
raw.sales_daily (historical orders)
│
▼
forecast_all_lifecycle.py
├── Loads per-ASIN daily sales history
├── Applies lifecycle stage detection (launch, growth, mature, seasonal, decline)
├── Runs Chronos-Bolt-mini inference (365-day horizon)
├── Applies event calendar adjustments (Prime Day, holidays, etc.)
└── Writes to forecasts.predictions + forecasts.runs
│
▼
compute_po_recommendations.py
├── Reads forecast + current inventory + lead times
├── Applies MOQ viability gate (won't recommend below MOQ)
└── Writes to raw.po_recommendations
Self-Healing Calibration¶
Runs on the 1st of each month (calibrate.py):
1. Compares last month's forecast vs actual sales
2. Computes per-ASIN error metrics
3. Adjusts seasonal multipliers if systematic bias detected
4. Tags forecast runs as month_end_baseline_for for tracking
Scoring¶
score_run.py runs nightly after forecast:
- MAPE, WMAPE, bias direction per ASIN
- Stored in forecasts.scores
- Tracks accuracy trends over time
Key Config¶
- Horizon: 365 days (full year forward)
- Model size: mini (fastest, ~4GB RAM)
- Lifecycle stages: launch (<90d sales), growth, mature, seasonal, decline
- Quantiles: p10, p50, p90 for confidence bands (migration 0018)
- Per-class config: migration 0019 allows different quantile settings per product class
Dashboard Validation¶
validate_dashboard.py runs nightly (non-blocking):
- Samples 20 random ASINs
- Cross-checks 7 metrics against SoStocked export + internal Postgres
- Emails on failure but doesn't abort pipeline