⚡ Demo mode — paste your Firebase config to go live.
🔒 Your session expires in 2:00
Factories
Select a supplier

Choose from the list to edit details and per-SKU settings.

Forecast Weights

How much each signal contributes to predicted daily demand. Must sum to 100%.

Historical / Seasonal Avg sales in the next 2 months from prior years × auto YoY growth
%
Recent Trend Trailing 3-month daily average
%
Short-term Momentum Last 30-day run rate vs prior 30 days — detects spikes & drops
%
Total: 100% ✓

YoY growth is calculated automatically from your invoice history (last 12 months vs prior 12 months, capped at ±50%). No manual input needed.

Safety Stock — Service Level

Safety stock is calculated statistically: Z × σ × √lead time, where σ is the standard deviation of daily sales over the last 6 months. Higher service levels buffer more aggressively during volatile/peak periods automatically.

Applied globally. Per-category overrides coming in a future update.

The statistical model automatically buffers up before peak season — high-volatility months produce a larger σ, which raises safety stock without any manual peak month configuration.

📐 How the math works Tap to expand — all formulas explained
1 · Unified Daily Forecast

The core output — how many units per day this SKU is expected to sell. Three signals are blended using your configured weights, then normalised so they always sum to 100% even if a signal is unavailable.

Forecast = (H × Whist) + (T × Wtrend) + (M × Wmom)
H — Historical/Seasonal: avg daily sales in the next 2 calendar months, measured across all prior years, multiplied by the auto YoY growth rate
T — Recent Trend: total units sold in the last 3 full months ÷ 91 days
M — Momentum: last month's daily rate × (last month ÷ prior month) — amplifies acceleration, dampens deceleration, capped at 0.3× – 3×
W — Your configured weights (default 50 / 30 / 20). Redistributed proportionally if a signal lacks enough data.
2 · Automatic YoY Growth Rate

Baked into the Historical signal. No manual entry needed — calculated fresh from your actual invoice history on every page load.

Growth = (Saleslast 12 mo − Salesprior 12 mo) ÷ Salesprior 12 mo
Capped at ±50% to prevent anomalies from distorting the forecast. Applied as a multiplier to the historical daily average.
3 · Statistical Safety Stock

Replaces the old fixed multiplier. Measures how unpredictable demand actually is for each SKU and buffers accordingly. High-volatility months (peak season) automatically produce larger safety stock — no manual peak month config needed.

Safety Stock = Z × σd × √Lead Time
Z — Service level factor: 1.65 (95%) · 2.05 (98%) · 2.33 (99%)
σd — Standard deviation of daily sales over the last 6 months. High in peak season, low in slow season — safety stock scales automatically.
√Lead Time — Volatility compounds non-linearly over time. Square root prevents overstock on long lead-time items.
Fallback when fewer than 3 months of data: 25% × Forecast × Lead Time
4 · Reorder Point (ROP)

The stock level that triggers a warning. When Net Available drops to or below ROP, the item goes critical.

ROP = (Forecast × Lead Time) + Safety Stock
Forecast — Unified daily forecast from step 1 above
Lead Time — Per-SKU override → product group → supplier default → 45 days
5 · Net Available & Status

What you actually have to sell, and whether it's enough.

Net Available = On Hand + Incoming POs − Committed
Committed — Open sales orders + weighted estimates (High=90%, Med=50%, Low=20%)
Critical — Net Available ≤ ROP
Warning — Net Available ≤ ROP × 1.5
Runway — Net Available ÷ Forecast (days of stock remaining)