Skip to content

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