Insights

The history you haven't written yet

What to instrument in a greenfield grocery launch, before the first store opens

The advantage nobody prices

A greenfield retailer has one structural advantage over every established competitor, and it is almost never discussed in a platform selection.

Its demand history has not been written yet.

Every incumbent is stuck with theirs. Years of sales records shaped by stockouts nobody logged, ranging decisions nobody documented, promotions that ran without a flag, store openings and closures that distorted clusters in ways that are now impossible to unpick. When a mature retailer finally buys a modern forecasting engine, a large part of the programme is spent working out which parts of its own past to believe. Most of that work is guesswork performed by people who were not there at the time.

A new business has none of that. For a short window, it gets to decide what its history will say.

Almost nobody uses the window, because at the moment it is open there is nothing to forecast and no forecast to improve. The team is opening stores, signing suppliers, building ranges and fighting fires. Instrumenting demand signals feels like a problem for later, and later is exactly when it becomes unfixable.

This piece is about what to do with that window, for anyone standing up a grocery or fresh business and choosing a planning platform at the same time.

Sales are not demand

The point this all rests on is simple enough to state in a sentence and is routinely ignored in practice.

A sales record is not a record of what customers wanted. It is a record of what they wanted, filtered through what you happened to have, where you happened to put it, and what you charged for it that day. Statisticians call this censored demand. Everything you did not sell because you could not sell it is invisible, and invisibility is indistinguishable from absence of demand.

In grocery the censoring is heavier than in most categories, for three reasons.

The first is frequency. Fresh lines are ordered daily or near-daily against short shelf life, so a single bad week produces several days of censored records rather than one. The distortion accumulates quickly.

The second is substitution. When a customer cannot find their first choice in a supermarket, they usually buy something else in the same aisle rather than leaving empty-handed. The basket total looks healthy. Two product-level records are now wrong in opposite directions: one understates demand, the other overstates it. Nothing in the data indicates that the two events are related.

The third is that grocery demand is strongly conditioned on availability itself. Shoppers learn where to find what they want. A line that is persistently unavailable stops being looked for, which suppresses its recorded demand further, which justifies ordering less of it. This feedback loop is slow, quiet and entirely self-confirming, and it is the mechanism behind most of the lines that quietly die in a range without anyone deciding to kill them.

Mature retailers deal with this imperfectly through lost sales estimation, which reconstructs what demand probably was during a stockout using statistical assumptions. It works, up to a point, and it is always an inference made after the fact.

A greenfield business can do something better. It can record the conditions directly, as they happen, and never need to infer them at all.

What an opening year does to a training set

An opening year is the worst possible period from which to learn, and it is the only period a new retailer has.

Four distortions do most of the damage.

Availability. Opening-year availability is poor almost by definition. Supply agreements are new, volumes are unproven, forecasts are guesses and the distribution operation is still finding its rhythm. Every hour a line is unavailable writes a false zero into the record, and the busiest trading hours are the ones most likely to be censored, because that is when stock runs out.

Ranging. Early ranges are hypotheses. Some lines are wrong for the catchment, some are right but badly placed, some are priced against the wrong competitor. The sales record cannot distinguish a line nobody wanted from a line nobody could find, and both produce the same flat series.

Store maturation. A new store does not trade normally for months. There is an opening spike, a trough, a slow climb as the local shopper base forms habits, and the whole curve varies by format and catchment. Feed that into a clustering algorithm and it will group stores by how long they have been open rather than by what kind of stores they are, which is a genuinely expensive mistake to discover in year three.

Undocumented intervention. In an opening year people intervene constantly and record almost none of it. Prices get changed to clear stock. Deliveries get diverted between stores. Someone runs an unplanned promotion to shift a surplus. Each of those events moves the numbers, and none of them leaves a trace that a model can read.

Individually these are manageable. Together they produce a training set in which the signal and the noise are the same shape.

The consequence arrives late, which is why it is so rarely prevented. In year one nobody notices, because nobody is relying on the forecast. In year three the engine finally has enough history to run properly, and it learns, with genuine statistical rigour, the business you were struggling to stop being. The forecast is confident, defensible, well-validated, and quietly anchored to your worst period.

By then nobody remembers which weeks were the bad ones.

Six things to instrument before go-live

None of these improve the forecast in year one. All of them determine whether the platform works in year three, and every one of them is cheap now and close to impossible to retrofit.

1. Treat the demand signal layer as a data model decision

The common failure is to classify availability, substitution and exception data as reporting, which means it gets specified after the core build, by a different team, against a different budget, and frequently never.

It belongs in the data model, designed before the first store opens. Practically that means the demand record for a line in a location on a day has fields for the conditions under which that number was produced, not just the number. Those fields will be empty or crude at first. That is fine. What matters is that they exist, because adding a column later is easy and backfilling three years of it is not possible at any price.

2. Capture on-shelf availability at the time of sale

End-of-day stock position is the standard thing to record and it is nearly useless for this purpose. A line that ran out at four on Saturday and was replenished Sunday morning shows a healthy closing position on both days, and the Saturday afternoon record, the most valuable trading data you have, is silently wrong.

What you want is a time-stamped availability proxy: stock on hand recalculated at a useful frequency against sales, so you can later ask whether a given hour's zero was a demand zero or a stock zero. Hourly is comfortable. Even four-hourly beats daily by a wide margin.

This is also the field most likely to be dismissed as over-engineering during a build, because at go-live nobody can point to a use for it. Its entire value is retrospective.

3. Log zero-sales-with-stock separately

A line that had stock all day and sold nothing is telling you something quite different from a line that was unavailable. It is a ranging, placement, pricing or awareness signal, and it is one of the few genuinely clean signals available in an opening year.

If it flows into the system as ordinary demand data, the model draws the obvious conclusion and reduces the forecast, which reduces the order, which reduces the facings, which reduces discovery. The line dies and the system records it as a correct decision. Nobody ever reviews it, because nothing looks wrong.

Keep the flag separate and reviewable, and look at it weekly during the first year. It is the single most actionable early signal a new retailer has.

4. Run an exception calendar from day one

This is the cheapest item on the list and the one most often skipped, because it is clerical rather than technical.

What goes in itOne structured log. Every store opening and its date. Every supply failure, with lines and duration. Every unplanned promotion or clearance. Every price change made to shift stock. Every competitor opening nearby. Every system outage. Dates, locations, affected lines.

It takes one person a few minutes a week. In three years it is the only existing record of why your history looks the way it does, and it is what makes it possible to tell a model which periods to discount rather than guessing.

Keep it in something boring and durable. A table in the data warehouse, not a spreadsheet on someone's laptop, and certainly not in the memory of the person who set it up, who will have moved on.

5. Keep raw and cleansed demand as separate series

At some point someone will cleanse the history: remove outliers, fill gaps, smooth the opening spikes. This is reasonable and necessary.

The mistake is doing it in place. Once the cleansed number has overwritten the raw one, nobody can audit the cleansing, and every future question about what actually happened has to be answered from the version that was already edited by someone working from assumptions you cannot see.

Two series, always. Raw, immutable, never touched. Cleansed, derived, documented, reproducible. The storage cost is irrelevant next to what it preserves.

6. Decide the retraining rule now

There will come a day when the system has enough history to retrain properly. Someone will have to decide which parts of the past to include.

Make that decision while you can still remember the year. Write down which periods are excluded and why, who signs it off, what evidence supports it, and on what date it gets revisited. Attach it to the exception calendar.

If you leave it, the decision still gets made, but it gets made in 2029 by an analyst with no memory of 2027, under time pressure, using whatever the data appears to show. The data will appear to show that the bad period was normal, because that is exactly what censored demand looks like from the outside.

What this changes about selection

Run a conventional evaluation and you will compare forecasting engines on three years of clean, mature, well-behaved data. Every vendor will perform well, because the demo environment was built to make them perform well, and the differences you observe will be real but irrelevant to your situation.

A greenfield evaluation should be testing different things.

Can it record the conditions, not just the number? Ask to see the data model for availability, substitution and exception handling. Not the reporting layer. The model. Some platforms treat this as first-class and some treat it as a customisation you will pay for twice.

Can it be told to ignore part of its own history? Period exclusions, event flags, masked ranges. This is the mechanism that rescues you in year three, and the quality of it varies enormously between products that look similar in a demo.

How does it behave with no history at all? Make every vendor demo a cold start. Empty system, no sales, a new store opening next month. Watch what the planner actually does on day one, where the first number comes from, and how an analogue or a manual position is entered and then superseded as real data arrives. This single request will tell you more than the rest of the evaluation combined, and most vendors will not have a prepared script for it.

How cleanly does it accept a human position? For eighteen months your planners are the model. If an override is an exception the system tolerates grudgingly, logs poorly and discards at the next run, you will spend the opening period fighting the tool.

What does year one cost at your actual scale? A licence structured for a two-hundred-store chain is not obviously wrong for a twenty-store launch, but it needs to be a deliberate decision rather than a discovery.

How much of it can your team run alone? Greenfield teams are small and fully occupied. A platform operated competently at sixty percent of its capability beats one that needs a managed service to stay upright, however the feature comparison looks.

The pattern across all of these: you are not buying a forecasting engine. For the first two years you are buying a system of record for decisions and conditions, which happens to have a forecasting engine attached that will become useful later.

The first ninety days

Instrumentation that nobody operates decays within a month. A few habits keep it alive through the period when it feels pointless.

Give the exception calendar an owner with a name. Not a team, not a process. One person whose job includes it, with a standing fifteen minutes a week, and a named deputy. The log that survives an opening year is always the one somebody specific is responsible for.

Review zero-sales-with-stock weekly from the first full trading week. This is the only item on the list that pays back immediately. It will surface placement errors, pricing mistakes and ranging misses while they are still cheap to fix, and that early usefulness is what stops the whole exercise being quietly dropped.

Write down the assumptions behind the first forecasts and keep them as data. Which analogue, whose judgement, what reasoning. When the first real numbers arrive you can then measure the assumption against the outcome, which is both the fastest available learning loop and a far better record than anyone's recollection of what they were thinking in launch week.

Set a date to check the instrumentation is actually populating. Ninety days in, look at the fields. Fields specified before go-live and never verified afterwards are frequently empty, null or filled with a default nobody noticed, and a field that has been silently empty for a year cannot be recovered.

Keep the cleansing decisions in a log, not in code comments. Every time someone smooths, excludes or adjusts a period, one line recording what and why. This becomes the evidence base for the retraining rule.

None of this is difficult. All of it competes for attention with opening stores, which is why it needs to be someone's explicit responsibility before the first store opens rather than a good intention afterwards.

The window closes quietly

The argument here is narrow, and worth stating once more plainly.

A greenfield retailer cannot buy a better forecast, because forecasting needs history and there isn't any. What it can do is decide what its history will say, and that decision is made by what gets instrumented before the first store opens rather than by which platform wins the evaluation.

The window is open for roughly eighteen months. It does not close with an event. Nothing fails, no deadline passes, nobody raises it. It closes because the opening period ends, the people who lived through it move on, and the data settles into the only version of the story that remains. By the time the forecasting engine is ready to do the job it was bought for, its view of your business is already fixed.

Incumbents would pay a great deal for the position a greenfield business occupies for free, and almost always spends without noticing.

This is the kind of work we do at Plavista: short diagnostics with fresh and grocery operators on where margin leaks and why planning decisions don't change, including greenfield setups working out what to instrument before go-live. If you are standing one up, it is a cheaper conversation now than the one in year three.

See how the diagnostic works