Runway projection

Paste your sales export. See what runs out first, and when to order it.

Three inputs — what sold, what's on hand, how long a reorder takes — and every component gets a run-out date and an order-by date, sorted by what needs a decision first. No signup, and nothing here is shared until you say so.

Step 1

Paste your sales-by-variant export

A monthly sales-by-variant-by-month export — SKU, month, units sold. Column order and naming don't matter much; common Shopify header names are recognized automatically.

How to get this export in about 2 minutes
In Shopify admin, go to Analytics → Reports → Sales by product variant, group by month, and export the CSV for the last 3-12 months. Paste the rows below — the header row is fine to include.

Step 2

Confirm what's on hand

Prefilled from the SKUs in your export. Edit any number, or paste an inventory snapshot below to fill the whole column at once. If your snapshot carries a weekly velocity column (warehouse reports usually include one), it fills in demand for SKUs your sales export doesn't cover — you can even skip the sales paste entirely. Your sales data wins whenever a SKU has both.

Read a sales export above, or paste an inventory snapshot below, to start this table.

Step 3

Set lead times

How many days from placing a PO to having stock in hand, per SKU. Use a preset or type your own.

Lead-time rows appear here once you have SKUs in the counts table above.

Step 4 · optional

Add kits and order constraints

If you sell kits, paste what goes into each one — components then inherit demand from kit sell-through, even the ones that never sell on their own. Add MOQs and shelf life and each row also gets a suggested order quantity: enough to cover ~90 days of demand, raised to the MOQ, and capped so nothing you order would expire before it can sell (stock is assumed to need selling through 6 months before its expiry date).

Nothing pasted here goes anywhere but your browser and a short-lived, unauthenticated session used only to restore this page if you refresh it. One exception, and only when you use it: asking the results assistant a question sends the parsed rows behind your table to Anthropic's AI to generate the answer — never your raw pastes, never stored by ShelfKit, never used to train models.