Live Demo— sample dataSign up

Restock PredictorBeta

Per-product velocity from the last 180 days, days-of-stock projections, and a suggested PO quantity for each item that needs reordering.

Order now

0

Within ~7d of stockout

Plan a PO

0

Within ~30d

Healthy

0

>30 days of cover

No data

0

Insufficient 180d sales

Analysing 180 days of sales…

How this works

1. We pull 180 days of sales

Every order with status completed, processing, or on-hold from the last 180 days, line by line. Refunded and cancelled orders are ignored. Cached for 5 minutes per org — the Refresh button forces a fresh pull.

2. We compute velocity

Units sold per day at four windows — 7d, 30d, 90d, 180d. We project off the 30-day rate when ≥10 units sold in that window. Otherwise the 90-day rate, then the 180-day as a last fallback for slow-moving SKUs. The 7-day rate is shown for trend context but is too noisy for projection.

3. We project days of stock

current_stock ÷ velocity. That gives the days left column. Multiply forward and you get the stockout date.

4. We work backwards from lead time

stockout_date − lead_time. Default lead time is 7 days; suppliers with longer ones should be adjusted at PO time. That gives Reorder by.

5. We size the order

velocity × (lead_time + 14d cycle) × 1.2, rounded up. That covers you through the next supply cycle plus a 20% safety buffer.

6. We badge urgency

Order now ≤7d left · Plan a PO ≤30d · Healthy beyond · No data when 180-day sales are too thin to project from (those rows are hidden from the table).

Variable products — each variation is predicted independently using its own stock, SKU and order lines (matched by variation_id). Variations show a small "Variation" chip in the row.

Outlier capping — a single line's qty is capped at 3× the product's 180-day median order qty before being summed into velocity. Stops one wholesale order from inflating the rate; rows where this kicked in show a small "outliers capped" note.

Incoming pipeline — any qty already on order from suppliers (open POs with status draft / sent / partial that haven't been fully received) is subtracted from the suggested qty. Surfaces as "+N incoming" under the order quantity.

Confidence dots next to each SKU — high (≥30 units in 30d), medium (≥20 in 90d), low (≥10 in 180d) and below. Treat low-confidence rows as starting points, not gospel.