Inventory Forecasting for Quick Commerce Dark Stores

A brand will show us a beautiful quick commerce forecast. One number per SKU, citywide, sometimes nationwide, accurate to within a few percent at the aggregate. And then half the dark stores in that same city are stocked out by 9pm while the other half are sitting on dead inventory the platform is about to charge them to hold. The forecast was not wrong. It was just answering a question nobody on a ten-minute delivery promise actually asks.

Quick commerce does not fulfil from a warehouse. It fulfils from a dark store that serves a two-to-three kilometre radius, and demand inside that radius has almost nothing to do with the national average. The forecasting model that works for Amazon, where stock pools centrally and any unit can serve any customer, breaks the moment your inventory is scattered across hundreds of tiny independent nodes that cannot share stock with each other. And there are a lot more of those nodes now. India crossed roughly 6,000 operational dark stores entering 2026, and the leading platforms are still building, so the grid you have to forecast against is denser and finer-grained every quarter.

Why the aggregate forecast lies to you

The core problem is pooling. On a marketplace, a thousand units in one warehouse can absorb demand from anywhere in the country, so the variance you forecast against is smoothed across the whole map. In quick commerce there is no pool. Each dark store holds its own stock, sells only to its own radius, and cannot lend a unit to the store three kilometres away that just sold out. You are not forecasting one demand curve. You are forecasting hundreds of them, each small, each noisy, each local.

And local demand is genuinely different store to store. A dark store in a young-professional pocket of Bengaluru sells protein bars, cold brew, and condoms at volumes a store in a family neighbourhood across the same city will never touch. Demand is shaped by who lives in the radius, what the nearest competing stores carry, the weather that afternoon, and whether there is a cricket match on. Aggregate it all together and the signal that should drive each store’s order is averaged into mush.

You are not forecasting a product. You are forecasting a product in a postcode, and the postcode matters more than the product.

This is the same trap that ruins assortment decisions, which is why we treat what each dark store carries as a per-store exercise rather than a catalogue you push everywhere. The forecast and the assortment are the same decision viewed from two angles. Once you accept that the right range differs by store, you have already accepted that the right quantity does too.

Fill rate is the number that actually pays you

Marketplace operators obsess over availability. Quick commerce operators should obsess over fill rate, and the distinction is not pedantic. Fill rate is the share of demand inside a given store’s radius that you could actually serve from that store’s shelf at the moment the order came in. It is a local number by definition. A national availability figure of 95 percent can hide a dozen dark stores running at 60 percent fill on your hero SKU, and those are precisely the stores quietly bleeding you.

The bleed is worse than the lost sale. When your product is out of stock in a dark store, the platform’s app does not show an empty shelf. It shows your competitor, or it drops your item from the listings that radius sees entirely. A few days dark in one store and you lose placement in that store’s slate, which means you lose it even after you restock. Stockouts in quick commerce are hyperlocal ranking events, and the damage compounds exactly the way it does on marketplaces. We have made the broader case that the real cost of a stockout is the ranking you cannot see on the invoice, and on a per-store grid that cost simply multiplies by the number of stores you let go dark.

How to forecast when every store is its own market

You cannot run a clean statistical model on a SKU that sells four units a day in one store. The numbers are too small. So the practical approach is to stop pretending each store is a standalone forecasting problem and start clustering stores that behave alike.

  • Cluster stores by demand pattern, not geography. Two stores in different cities can sell the same mix because the same kind of people live in their radius. Group stores by what actually sells, then forecast the cluster and apply it down to the store. This borrows signal across thin data without flattening real local difference.
  • Anchor to local history, adjust for local events. Last month in this store is a far better base than this month nationally. Layer on what is specific to that radius: a festival, a heatwave, a nearby office reopening, a competitor store going live next door.
  • Forecast at the SKU-store-day grain for hero items, coarser for the long tail. You do not need daily store-level precision on the slow movers. Spend the modelling effort on the handful of SKUs per store that drive fill rate and revenue.
  • Treat new stores as cluster members from day one. A store with no history is not a blank slate. It is most like the existing stores serving similar radii, so seed its forecast from its cluster and correct as real data arrives.

The point of all of this is not statistical elegance. It is to get the order quantity for each store close enough that fill rate holds without burying that store in stock it cannot move before it expires or racks up holding fees. The tighter your replenishment cycle, the more forgiving the forecast can be, which is why forecasting and replenishment cadence have to be designed together rather than handed off between teams.

Spiky demand, multiplied by hundreds of stores

Quick commerce inherits all the spike problems of Indian marketplaces and then makes them local. A platform sale, a long weekend, a sudden downpour that pushes everyone to order in rather than step out. The spike is real, but it does not land evenly. It hits the stores serving the right radius and barely touches the others.

The discipline of separating steady-state baseline from event-driven demand, which we laid out for forecasting marketplace demand when it is spiky, carries straight over. What changes is that you now run that separation per cluster, because a Friday-night spike in alcohol-adjacent snacking shows up in one set of stores and a Sunday grocery top-up spike shows up in another. One national event forecast smears these into a single bump that is wrong everywhere it lands.

The mix is also shifting under you. Non-grocery categories like electronics, beauty, and small appliances have been growing faster than food on the major platforms, which means the spiky, considered-purchase demand patterns you used to ignore now sit inside your hero set in more stores than before. A cluster that was once pure grocery may now need a different forecast shape entirely.

Sequence stores so forecasting is even possible

None of this works if you are trying to forecast a thousand dark stores you launched all at once with no history and no operational depth in any of them. Forecasting quality is downstream of how deliberately you expanded. Brands that go deep in a few high-density cities before they go wide build the per-store history and the cluster patterns that make hyperlocal forecasting tractable. Brands that sprint across the map forecast everything badly at once.

This is why we are unromantic about which cities to launch quick commerce in first. Concentration is not just a marketing or unit-economics call. It is what gives your forecasting model enough local signal to keep fill rates high instead of guessing blind across a footprint too thin to learn from.

What changed recently

The biggest shift for brands is that the platform increasingly owns the forecast. Blinkit moved to an inventory-led, first-party model from September 2025, buying stock from brands, holding it under its own GSTIN, and selling as the legal seller. By the third quarter of FY26 it reported that roughly 90 percent of net order value came from its own inventory, a transition Blinkit itself framed as a route to better availability and fill rates, per Medianama. When the platform owns replenishment, your forecast does not stop mattering. It becomes the input you use to push allocation, argue stock cover, and contest the platform’s own demand planning store by store rather than accepting a citywide number.

The grid you forecast against is also getting bigger and faster. Blinkit has said it is targeting 3,000 dark stores by March 2027 while staying profitable, as reported by Business Standard, and Flipkart Minutes is moving to double its network toward roughly 1,500 stores by the end of 2026, leaning hard into tier-2 and tier-3 towns. More stores in newer, less-understood radii means more nodes with thin history, which is exactly where cluster-seeding earns its keep. Storyboard18 reports non-grocery categories growing well faster than food across the major platforms, which is the assortment-mix change feeding straight back into how your forecast clusters need to be drawn.

Make the dark store the unit of planning

The brands that win quick commerce stop thinking in national SKUs and start thinking in store-SKUs. Every forecast, every order, every fill-rate target is set at the store level and rolled up only for reporting, never for deciding. They cluster stores so thin data becomes usable, they protect fill rate on the items that matter per radius, and they accept that a perfect national number is worthless if it leaves individual stores dark. In an inventory-led world where the platform is doing its own forecasting, the brand with the sharper per-store view is the one that wins the allocation argument.

This is the operational core of what our Operations & Logistics Management team builds for quick commerce brands, working alongside Marketplace Performance and Data & Analytics because the per-store demand signal and the platform fill-rate penalties are two halves of the same problem. Forecast the postcode, not the country. Hold fill rate store by store. The aggregate will take care of itself once the stores do.

Why availability, not ads, is your real growth lever

Brands obsess over campaigns and ignore the quiet number that caps everything: in-stock rate. On networks that punish absence within hours, every gap in availability is rank lost, sales lost, and momentum handed to a competitor. The platform algorithm decides what a shopper sees, and the first thing it checks is whether you can actually fulfil the order from the dark store nearest them.

The maths nobody runs

Take the GMV you lose to stockouts in your top cities and compare it to the incremental return on your next campaign. For most brands, fixing availability is the higher-return investment, and it is sitting there unspent.

Forecasting and replenishment discipline are not glamorous. They are also, repeatedly, the thing that moves more revenue than the next clever creative ever will. An ad that drives a shopper to a sold-out SKU does not just waste spend, it trains the algorithm to show you less.

Availability is a ranking input, not just an ops metric

This is the part most brand teams miss. On quick commerce, in-stock rate is not a back-office number, it is a ranking signal. Go out of stock at a store and the platform quietly de-ranks the SKU there, so even after you replenish you climb back slowly. That is why a brand with steady 95-plus availability across fewer stores usually out-earns a brand with louder ads and patchy fill. We have argued the same logic in availability score vs ad spend and in quick commerce inventory forecasting.

What changed recently

The structural shift of the last year makes availability harder, and more decisive. The networks are getting denser and the operators are reorganising specifically to defend fill rates.

  • The dark-store footprint roughly doubled. Blinkit crossed 1,000 stores in late 2024 and pulled its 2,000-store target forward to December 2025, a full year early, per Inc42. More stores means more shelves to keep stocked, and your forecasting has to spread thinner without thinning out.
  • Expansion is moving into smaller cities. Zomato has said a large share of new Blinkit stores will open in smaller cities over the next year, even as the top eight cities still drive roughly 80 percent of business, according to Inc42. Thinner, less predictable demand in these markets is exactly where naive replenishment breaks and stockouts spike.
  • Even the marketplace-model players are moving to inventory-led. On its Q2 FY26 earnings call, Swiggy said an inventory-led model for Instamart is an eventuality it expects, precisely because owning stock buys tighter cost control, faster replenishment and higher fill rates, as reported by Inc42. When the platforms themselves restructure around fill rate, treating availability as a side metric is a strategic mistake.

None of this changes the core claim, it sharpens it. Demand is rarely the ceiling. The brands that win the next phase of quick commerce will be the ones that treat in-stock rate as the growth lever it actually is, and budget for it before the next campaign. If you are still deciding where to fight, start with which platform to launch first.

Book a meeting