It is Monday morning and the purchasing director of a chain with 25 locations reviews the weekly forecast. The system tells him to expect 180,000 euros in revenue this week and around 12,000 covers. An interesting figure for finance. But when he sits down to decide how many kilos of hake, how many cases of ribeye or how many liters of cream base to order, that figure is absolutely useless.
The most common mistake: predicting the wrong figure
Most HORECA chains that attempt to incorporate demand forecasting make the same mistake: they predict at an aggregate level. Total revenue, number of covers, expected average ticket. These are useful metrics for the board and the financial controller, but they are completely useless for the purchasing department.
The reason is simple. Knowing that a location will serve 200 covers on Saturday says nothing about what those 200 diners will order. And procurement needs depend entirely on the dish mix, not on the total volume of customers.
The dish mix changes everything
Imagine two consecutive Saturdays with exactly 200 covers at the same restaurant. On the first, 60% of customers order fish and 40% meat. On the second, the proportion is reversed. Revenue may be similar, but ingredient requirements are radically different: kilos of hake, sea bass and prawns in one case; kilos of ribeye, tenderloin and T-bone in the other. The suppliers are different, the delivery lead times are different, the shelf lives are different.
Multiply this problem by 15, 25 or 50 locations, each with its own menu and its own consumption pattern, and aggregate forecasting becomes a guessing exercise that always ends the same way: overstock of what does not sell and stockouts of what does.
Why aggregate forecasting fails for purchasing
When a HORECA group tries to use revenue forecasting to make purchasing decisions, the process breaks at several points. The purchasing director receives an overall number and has to decompose it manually: estimate what percentage will be fish, what percentage meat, how many desserts will be served. That estimate is based on experience or very rough historical averages that do not capture real variability.
The result is predictable. Orders are placed with excessive safety margins to avoid stockouts, which generates overstock. Perishable ingredients go to waste. Waste grows. And when there is an event, a promotion or a menu change, the entire manual system breaks down because nobody recalculates the proportions.
Each location has its own pattern
Furthermore, the dish mix is not uniform across locations. A restaurant in a business district sells more set menus during the week and more a la carte on weekends. A location in a tourist area has a completely different mix from one in a shopping center. Applying the same proportion to all locations guarantees that the order will be wrong for most of them.
The necessary granularity: dish x location x day
For a demand forecast to be truly useful for purchasing, it needs to operate at the lowest possible level: how many units of each dish will be sold at each location, each day. This is what the industry calls SKU-level forecasting.
Only with this granularity is it possible to execute the process the Purchasing department actually needs: explode each dish into its ingredients according to the recipe costing, aggregate the needs of all dishes by ingredient, deduct available stock and generate a purchase order by supplier that reflects exactly what will be needed.
Without SKU-level forecasting, this pipeline is impossible to automate. With SKU-level forecasting, it becomes a calculation that can run daily without manual intervention.
The data challenge
Predicting at dish level is significantly harder than predicting at aggregate level. It requires clean POS data with sales history by dish, by day and by location. It requires enough temporal depth for models to capture seasonality and day-of-week patterns. And it requires solving several problems that do not exist in aggregate forecasting.
New dishes, for example, have no history. Seasonal dishes appear and disappear from the menu. Promotions temporarily alter demand for certain dishes at the expense of others. And low-rotation dishes have so few daily sales that any conventional statistical model produces unreliable predictions.
This data challenge is precisely what explains why most chains stick with aggregate forecasting: it is easier, but it does not solve the purchasing problem.
How Controliza solves SKU-level forecasting
Controliza's Forecast engine is designed from its architecture to operate at the dish, location and day level. It is not a disaggregation layer on top of a total forecast; it is a model that is born granular.
ML models trained by dish and location
Controliza trains specific machine learning models for each dish-location combination. Each model captures the patterns unique to that item at that location: seasonality, day-of-week effect, impact of holidays and events, and trend evolution. A risotto at the Barcelona location has a different pattern from the same risotto in Valencia, and the system treats them as two different entities.
Differentiated treatment by volume
High-rotation dishes, such as a set menu or a signature dish, generate enough data for predictive models to achieve high accuracy. Low-rotation dishes, such as certain desserts or special starters, need a different statistical approach. Controliza automatically detects the volume of each item and applies the most appropriate model: advanced time series for high volume, intermittent demand models for low volume.
Handling new dishes and menu changes
When a new dish without history is introduced, Controliza uses data from similar dishes in the same category to generate an initial forecast. As real data accumulates, the model adapts progressively. Menu changes are managed automatically: if a dish disappears, its demand is redistributed among the available alternatives.
From forecast to order: the complete pipeline
The true power of SKU-level forecasting materializes when it connects with the Purchasing module. The pipeline Controliza executes every day is as follows:
1. Dish-level forecast. The forecast engine generates the expected demand for each dish at each location for the coming days, covering the necessary horizon based on each supplier's delivery lead times.
2. Recipe explosion. Each dish is broken down into its ingredients according to the current recipe costing. If the system predicts 80 servings of mushroom risotto, it automatically calculates the grams of rice, the units of mushrooms, the liters of broth and the remaining ingredients needed.
3. Aggregation by ingredient. The needs of all dishes are consolidated by ingredient. The rice for the risotto is added to the rice for the paella and the rice for the side dish. The result is the total need for each ingredient by location.
4. Stock deduction. The system subtracts available stock at each location, considering current inventory, upcoming expiry dates and confirmed orders in transit.
5. Order by supplier. Net needs are grouped by supplier according to current contracts and a suggested order is generated that the manager can approve with a single click or, if the chain authorizes it, is sent automatically.
This cycle, which would take hours per location if done manually, is completed automatically every day for all locations in the group. And it all starts with one data point: how many units of each dish are going to be sold.
The Kitchen module uses the same dish-level forecast to generate the production plan by shift, defrosting lists and mise en place, closing the loop from forecast to service.
Does your demand forecast reach dish level?
Discover how Controliza's Forecast engine generates SKU-level prediction by location and day, and connects it directly to automated Purchasing orders. Request a personalized demo and see the impact on your chain.
Measurable impact
HORECA groups that have moved from aggregate forecasting to SKU-level forecasting with Controliza report consistent improvements in the first months of operation:
Data measured in active Controliza clients.
In chains with more than 20 locations, the savings in waste and the reduction in stockouts alone pay for the platform cost within the first few months. But the most significant impact is qualitative: purchasing teams stop operating blindly and start making decisions based on granular data, not intuition.