Demand forecasting

The demand forecast is Rinvy's prediction of how many units of each menu item you'll sell on each upcoming day. It's generated by Claude (Anthropic's model) using several inputs at once: sales history, burn rate, current stock, the business context you've entered, your day notes, how its own recent forecasts scored, and — optionally — weather.

Once a forecast is generated, two other features can read it:

  • Order list "Sales expectations" mode converts predicted sales into ingredient-level demand and projects stockouts. See order list with sales forecasts.
  • Forecast-based prep uses predicted sales to recommend batch counts for prep lists. See forecast-based prep.

Inputs to the forecast

InputWhere it comes from
Sales historyToast auto-sync or CSV upload
Burn rateInventory deltas + prep logs + waste
Current stockLatest inventory count + intervening receipts and consumption
Business contextOperator-entered notes on the forecast page (planned events, marketing pushes, etc.)
Day notesShift notes logged for days in the sales window — demand-tagged notes are prioritized
Past forecast accuracyHow recent forecasts scored against actual sales — persistent misses get corrected
Weather (optional)OpenWeatherMap forecast for the window, based on your restaurant's weather location
Observed weather (optional)What the weather actually was on your history days — rain-vs-dry and warm-vs-cold demand comparisons computed from your kitchen's own numbers

The more history and context, the better the forecast. With less than 30 days of sales data the model leans heavily on burn rate; with several months it can spot weekly and seasonal patterns.

Generating a forecast

  1. Go to Demand forecast.

  2. Enter or update your business context in the Additional context field. This is free-form — anything the model should know: upcoming holidays, marketing campaigns, weather expectations, new menu items, recent staff changes.

  3. Tap Generate forecast. The Claude API call takes a few seconds.
  4. Review the forecast. Each menu item gets daily predictions for the upcoming window, plus a short explanation of the reasoning.

The Demand Forecast page's configuration form: Start date and End date pickers, the Additional context field with a placeholder example, an Advanced section, and the Generate forecast button

The forecast window is capped at 31 days — about a month is the most one generation can cover.

How forecasts stay current

Forecasts are cached. When the latest forecast no longer reflects the inputs it was built from, an Outdated chip appears on it — tap the chip to see exactly why. The reasons it can list:

  • Generated more than a day ago — weather forecasts move, and so does the model's view.
  • Your business context changed — you edited the business context since it was generated.
  • New sales data has come in since — the baselines the forecast reasoned from are now behind, whether the sales were synced or uploaded.
  • Your menu items changed — a new item has no prediction, and a removed one still draws ingredients.
  • The forecast window has already passed — it predicts nothing about today.

An outdated forecast still works (order list and prep lists will use it), but the reasons tell you whether regenerating will actually change anything — a forecast that's only 25 hours old is a very different situation from one whose menu changed underneath it. Refresh whenever context shifts meaningfully — a holiday weekend coming up, a heat wave on the way, a new menu item launching.

Business context — what to write

Free-form text, but specific is better than vague:

Good: "Restaurant Week starts Monday — expect 40% bump on pasta dishes." ✅ Good: "Pre-Easter weekend; we usually see 25% lift on brunch items." ✅ Good: "New sushi roll launching Friday; expect strong opening then taper." ❌ Vague: "Busy week ahead." ❌ Vague: "Pretty normal."

The model treats context as a strong signal — useful when correct, misleading when wrong. Keep it factual.

Weather

If you set a weather location for the restaurant (under Kitchen Settings), Rinvy pulls the OpenWeatherMap forecast for the window and includes it in the prompt. The model uses it to adjust predictions — patio dishes go up on warm days, soups go up on cold days, drinks shift seasonally.

Weather is optional. Without it, the forecast still works; it just won't reflect weather effects.

Reading the forecast

For each menu item you'll see:

  • An average daily prediction for the forecast window. "Daily" means per operating day — closed days get no predicted sales, so the average never counts them.
  • A per-day breakdown — expand an item to see its predicted portions for each date in the window. Each item keeps its own weekly pattern (a Saturday peak stays a Saturday peak), and this per-day shape is what the order list and prep lists read when they apply the forecast.
  • A confidence indicator (high/medium/low).
  • A short reasoning paragraph from the model — what data and logic drove the number.

Read the reasoning, not just the number. If the model says "predicting 40 burgers Friday because last 3 Fridays averaged 38 with a slight upward trend" — that's defensible. If it says "predicting 80 burgers because Restaurant Week" but you didn't enter that context, something's off.

How accurate was the last forecast?

Once a forecast's window has passed and your sales data covers it, Rinvy scores each item's prediction against what actually sold. The forecast page then shows a Last forecast vs. actual card: total predicted vs. sold for the window, a per-item list with over/under chips ("Over by 12%", "Under by 4%", "On target"), and a short history of how recent forecasts scored.

Accuracy scores also feed back into the next generation. If recent forecasts persistently over- or under-predicted an item (including on specific weekdays), the next forecast is told about the miss and corrects for it.

Common mistakes

Treating forecasts as deterministic

A forecast is a prediction with uncertainty. Use it as a starting point and adjust for what you know specifically about the day. The model doesn't know your aunt is in town or that the line cook called out.

Generating a forecast and ignoring the Outdated chip

An outdated forecast can be hours behind reality. Tap the chip — it lists exactly what changed — and refresh before relying on the numbers for ordering or prep.

Not uploading enough sales history

Less than 30 days of sales means the forecast falls back hard on burn rate. The forecast page will still show numbers, but they're not really "forecasts" — they're extrapolated averages. Get to at least 30, ideally 90+ days.

Vague business context

"Busy week" doesn't help the model. Specific details about events, weather expectations, and menu changes do. Treat business context like you're briefing a new manager.

Related