Every minute, a Rabbit dark store somewhere in Egypt is making a quiet bet: that the next person to open the app in its neighbourhood will want exactly what is on its shelves, right now. Demand forecasting in quick commerce is the discipline of predicting what each individual dark store will sell, broken down to the hour, so that fast-moving items are always in stock without overstocking perishables that end up as waste. Get it right and a customer’s basket is full and delivered in minutes; get it wrong and you either disappoint shoppers with out-of-stocks or quietly throw away food. This is the data-science problem that sits underneath the speed.
Key takeaways
- Quick commerce lives or dies on granular forecasting: predictions must be made per store and per hour, not as a national average, because a dark store only holds a few thousand items and cannot hide a bad guess.
- The hardest signals are the local and human ones: paydays, weather, school schedules, Ramadan and other holidays, and one-off neighbourhood events all bend demand in ways simple history cannot capture.
- New stores and new products create a cold-start problem, where there is little or no history to learn from, and the forecast has to borrow intelligence from similar stores and similar items.
- Forecasts are not the end product. They feed replenishment and assortment decisions, and the whole system improves as a closed loop that gets sharper with every order.
Why forecasting at the neighbourhood and hour is so hard
A traditional supermarket forecasts demand for a whole city or region and absorbs error across enormous inventory and long shelf lives. A dark store cannot. It is a small, purpose-built fulfilment node serving a tight delivery radius, stocking a deliberately limited range so that pickers can assemble an order in seconds. That constraint is the whole point of the dark-store model, but it also removes the buffer that hides forecasting mistakes elsewhere in retail.
Granularity changes the nature of the error
When you forecast at the level of an entire chain, the law of large numbers is your friend: a few customers buying more here and fewer there cancel out. At the level of one store in one hour, that smoothing disappears. A single delivery van running late, a local football match, or a sudden afternoon heatwave can swing demand for a category sharply. The model has to predict not just how much will sell in a day but when within that day, because replenishment windows and picker capacity are themselves hourly.
Two failure modes, both expensive
- Under-forecasting means out-of-stocks. In quick commerce, an unavailable item is not a minor inconvenience: it breaks the core promise that the customer can get what they came for, fast, and it teaches them to check elsewhere next time.
- Over-forecasting means waste. Fresh produce, dairy, and prepared foods have short lives, so an over-optimistic forecast turns directly into spoilage. That is bad economics and bad for the planet, which is why accurate prediction is inseparable from reducing food waste.
Good forecasting is the act of walking the narrow line between these two costs, store by store, hour by hour.
The signals a demand model learns from
A useful way to think about a forecasting system is as a model that takes a rich set of features and outputs an expected quantity for each item, store, and time window. The art is in choosing and engineering the signals. At the foundation sit time-series methods that capture the rhythm of demand, layered with machine-learning models that can absorb many features at once and learn non-linear interactions between them.
The patterns that repeat
- History. The strongest baseline is what this store sold for this item at this time last week, last month, and last year. Recent trend and longer seasonality both matter.
- Day-of-week and time-of-day. Demand has a weekly heartbeat and a daily one. A weekday morning and a weekend evening are almost different businesses, and the model must treat them as such.
- Seasonality. Beverages and frozen goods climb through Egypt’s long, hot summers; comfort categories shift with the cooler months. These are slow, predictable waves the model can lean on.
The human calendar
The signals that separate a mediocre forecast from a good one are the cultural and economic ones. Demand is shaped by how people in a specific neighbourhood actually live.
- Paydays. Basket sizes and category mixes shift around the end of the month and salary cycles. A model blind to this will consistently under-forecast in some weeks and over-forecast in others.
- Holidays and Ramadan. Ramadan reshapes Egyptian shopping more than any other period: dramatically different timing, with demand compressing around iftar and suhoor, and a transformed category mix toward dates, juices, and staples. Eid, national holidays, and school calendars each carry their own signature. These cannot be treated as ordinary days with a multiplier; they are distinct regimes the model has to recognise.
- Weather. Heat, sandstorms, and rare rain all change both what people order and whether they leave home to shop in person at all, which is precisely when a delivery service sees a surge.
- Local events. A match, a wedding season, a festival, or a road closure can move a single neighbourhood while the rest of the city stays flat.
Encoding these signals well, and letting the model learn how they interact with each store’s particular character, is where forecasting earns its keep. It is also one strand of how Rabbit uses AI across the stack.
The cold-start problem: new stores and new products
Every signal above assumes history. The hardest moments are when there is none. When Rabbit opens a dark store in a new neighbourhood, or lists a product it has never sold, the model has nothing local to learn from, yet it still has to order stock for opening day.
Borrowing intelligence from neighbours
The general approach is to forecast by analogy. A new store can be matched to existing stores with similar characteristics, such as comparable population density, demographics, and surrounding retail, and its early forecast can be seeded from theirs. A new product can be mapped to its category and to similar items already selling, so the model starts with a sensible prior rather than a blank slate. As real orders arrive, the forecast quickly shifts away from these borrowed assumptions toward what the store and product are actually doing.
Designing for fast convergence
What separates a robust cold-start system is how quickly it stops being wrong. That means weighting early local data heavily, being willing to revise aggressively in the first weeks, and accepting wider uncertainty up front rather than pretending to a precision the data cannot yet support. The trade-off is deliberate: a slightly conservative opening assortment that avoids large waste, tightened rapidly as evidence comes in.
From forecast to shelf: replenishment and assortment
A forecast that nobody acts on is just a chart. The output only matters because it drives two concrete decisions that determine what a customer sees.
Replenishment
The hourly forecast feeds ordering and restocking: how much of each item to send to each store, and when, so shelves are full ahead of demand rather than chasing it. Because lead times, supplier minimums, and shelf life all vary by product, the forecast has to be translated into order quantities that respect those constraints. A good system also reasons about uncertainty, holding a little more safety stock for items where being out is costly and being lean where waste is the bigger risk.
Assortment
Over a longer horizon, aggregated forecasts inform which products a given store should carry at all. A dark store’s limited range means every slot is contested, so demand prediction guides which items earn their place in each neighbourhood and which should be dropped or swapped. Two stores a few kilometres apart can rationally stock different ranges because their forecasts say so.
The loop that gets smarter
The most important property of a forecasting system is not its accuracy on any single day but how it improves over time. Every order is a labelled example: the model predicted a quantity, reality delivered another, and the gap is signal. Out-of-stock events are trickier, because a sell-out censors true demand, the store might have sold more if it had more, so the system has to estimate lost sales rather than treating an empty shelf as zero appetite.
What good looks like
- High availability with low waste. The twin goal is shoppers almost always finding what they want while perishable write-offs stay small. Progress on both at once, not one at the expense of the other, is the real scoreboard.
- Calibrated uncertainty. A mature system knows when it is unsure and orders accordingly, rather than treating every forecast as equally confident.
- Fast adaptation. When a new pattern appears, a viral product, a changed habit, a new competitor, the loop detects and absorbs it quickly instead of clinging to last year’s behaviour.
This is why demand forecasting is not a project that finishes. It is a compounding asset: the more Rabbit operates, the more local rhythm it learns, and the harder that accumulated understanding becomes to replicate.
Frequently asked questions
What is demand forecasting in quick commerce?
Demand forecasting in quick commerce is the use of historical data and machine-learning models to predict how much of each product an individual dark store will sell within short time windows, often down to the hour. Unlike traditional retail forecasting, which works at the level of a chain or region, quick-commerce forecasting must be highly granular because each dark store is small, holds a limited range, and is expected to deliver in minutes, leaving no room to absorb a bad prediction.
Why does forecasting have to be done by neighbourhood and hour?
Because demand is intensely local and time-sensitive. Two neighbourhoods can have completely different shopping habits, and within a single day, demand rises and falls in patterns tied to work, meals, weather, and events. Forecasting at a coarse level would average away exactly the variation that determines whether a specific store has the right stock at the right moment, leading to both out-of-stocks and waste.
How does a forecasting model handle Ramadan and other special periods?
Special periods like Ramadan are treated as distinct demand regimes rather than ordinary days. The model learns from how shopping behaviour changed during previous occurrences, capturing shifts in timing, basket composition, and category mix, and combines that with calendar features so it can anticipate the change in advance. Because these periods differ sharply from normal weeks, recognising them explicitly is essential to keeping availability high and waste low when it matters most.
Forecasting demand to the neighbourhood and hour is how Rabbit keeps shelves full, prices fair, and waste low while delivering groceries in minutes. Discover how Rabbit works.
