AI & Data

What AI Demand Forecasting Really Does for a Cafe

Mark, founder of Parly·July 24, 2026·6 min read

The morning our forecast was wrong by 14x

Our forecast said we would go through 0.70 bottles of whole milk a day. We go through closer to ten. The real rate was 9.716 bottles, and the number on the screen was 0.70, and it had been sitting there for days looking like a settled fact (our own operating record, migration 00125). A fourteen-fold miss on one of the two things a coffee bar cannot open without.

Here is what makes that number worth a whole article. No model, however good, would have caught it. The math was not off by a rounding error a better algorithm could tighten up. The forecast was reading from a map with a hole punched in it. A set of Square modifiers had been deleted, so a chunk of whole-milk sales stopped decrementing anything at all. The sales were fine. The counts were honest. The middle layer, the part that turns "iced latte, whole milk" into "one pour of whole milk left the shelf," had quietly gone dark for those tickets.

That is the honest answer to whether AI demand forecasting is real for a cafe. The forecast is real. The model is the least important part of whether it is right.

AI forecasting is arithmetic you do not have time to do by hand

Strip the word "AI" off it and look at what the forecast actually computes. Every ticket in your Square carries the drink, the size, and the modifiers. A recipe maps each drink to what it uses: a 16 oz oat latte might be 20g of beans, 12 oz of oat milk, a cup, a lid (an example, run it on your own pours). Multiply sales by recipes across every item and every modifier and you get ingredient-level consumption. Split that by day of week, add a waste buffer, and project it forward to your next delivery. That is the entire engine. The mechanism laid out step by step is not mysterious once you see it move.

Forty-seven iced matcha lattes with oat becomes 94g of matcha, 564 oz of oat milk, 47 cups (straight recipe math). No human runs that across 60 items every morning before the milk cutoff. A system runs it in seconds.

But notice what it is not. It is not divination. It cannot see a street fair two doors down this Saturday. It cannot invent data it was never fed. It does exactly the arithmetic you would do yourself if you had four uninterrupted hours every morning, which you do not. Calling that "AI" is a marketing decision. Calling it useful is just true.

Accuracy is almost all plumbing, very little model

If the arithmetic is simple, why do forecasts drift? Almost never because the model is dumb. They drift because of what feeds the model. Call it the plumbing: the recipes, the modifier mappings, and honest counts. Get the plumbing right and a plain day-of-week average is startlingly accurate. Get it wrong and the fanciest model on the market computes a clean, confident, fourteen-fold-wrong number, exactly as ours did.

Weigh the two honestly and almost all of it is recipe and modifier hygiene, very little is the model. The model layer smooths noise and explains a trend. It does not rescue a broken recipe. Three things do almost all the work:

  • Modifiers wired to the recipe. In a cafe the swap is the whole game. An oat-to-whole swap moves both the milk and the money, and a forecast blind to the modifier never sees it. This is the same leak that hides the modifier nobody is paying for on the sales side.
  • Recipes that match the actual pour. If the recipe says 10 oz of milk and the pitcher pours 12, every forecast underestimates, forever, quietly.
  • Honest counts on a cadence. The forecast checks itself against what you physically count. Skip counts and it has nothing to correct against.

None of that is a model problem. It is bookkeeping. The reason our 14x miss is the most useful thing I can tell you about forecasting is that it was pure plumbing, and the mismatch it created is the exact gap counting is supposed to surface.

What a vendor means when it says "up to 97 percent"

Now put that next to how this gets sold. Nory advertises "demand forecast accuracy, up to 97%" on its site, with per-customer figures pushed to 99 percent and no published methodology anywhere (nory.ai, accessed 2026-07-24). Restaurant365 launched R365 AI advertising "5% Lower Food Costs," its marquee number labeled early access (restaurant365.com, accessed 2026-07-23). These are vendor claims, self-reported, unaudited.

Read "up to 97 percent" the way you would read it on anything else you buy. "Up to" means the best customer they can point to. And 97 percent of what? Accuracy against total revenue, or against item-level usage on the ingredient you actually run out of? Those are wildly different numbers. A forecast can be 97 percent accurate on the day's dollars and still miss one milk SKU by fourteen times, because that one bottle is a rounding error against a $3,200 Saturday. The revenue was fine. The milk was the problem. A percentage with no denominator and no method is not a measurement, it is a billboard.

I am not saying the number is a lie. I am saying it cannot be checked, and a number you cannot check is worth exactly nothing when you are the one at the reach-in Sunday afternoon with no whole milk. The vendors selling percentages never mention that accuracy is mostly plumbing you control, not model they own. That silence is the tell.

How to check whether your own forecast is real

You do not audit a forecast by trusting the vendor's percentage or by buying a pricier one. You audit it against a shelf. It takes one count.

  1. Pick your highest-volume ingredient. For most cafes that is oat milk or your busiest whole milk. The item that hurts most when the number is wrong.
  2. Read what the forecast says you used since your last count. Not item sales, the computed depletion, swaps included. That is the number on probation.
  3. Count the real thing. A recent full count at my shop was 58 items in about 8.5 minutes from a phone (our own record), so this is cheap. Write down what is physically there.
  4. Compare the two. If they agree inside your waste buffer, your plumbing is sound and the forecast is real for that item. If they split by more than the buffer, you found something.
  5. When they split, open the recipe, not the model. Is every modifier wired? Did a recipe change last week? Was a Square modifier deleted? That is where a fourteen-fold miss lives, and it is the first place to look, not the last. Chasing a "better forecast" while a modifier is unmapped is buying a faster car with no wheels.

This is the same discipline whether you run a spreadsheet or a tool: the count is ground truth, the computed number is a claim, and you check the map between them before you trust either. Ordering is the decision that costs you most when you get it wrong, which is exactly why the forecast behind it has to earn its trust one item at a time.

So do the one count. Take your busiest milk this week, read what the forecast says it burned, and go count it. If the two numbers are strangers, the fix is in the recipe map, not in a better model or a bigger accuracy percentage.