Yum! Brands (acq. Kvantum) · Apr 2021 – May 2022 · Delhi
Setting menu prices with evidence, in three countries
Menu prices barely move, so the elasticity signal has to be reconstructed before it can be modelled. SKU-level demand models for Pizza Hut and KFC across Canada, Brazil and the UK, feeding a pricing simulator, reporting into the Chief Analytics Officer.
Role
Lead DS, pricing
Scope
2 brands · 3 markets
Stakeholder
Chief Analytics Officer
The stakes
In QSR a price change is a physical event. It goes onto menu boards in thousands of restaurants, franchisees have opinions, and you cannot quietly roll it back next Tuesday. The cost of being wrong is measured in months, so the analysis has to survive interrogation by people who have run these businesses for twenty years and do not need a model to have a hunch.
The deeper problem is that the data refuses to cooperate. A menu item sells at the same price, in every store, for months at a time - and you cannot estimate price elasticity from a price that never changes. Almost all of the real price variation is hidden one level up, inside combos, deals and limited-time offers. Before any model could exist, that variation had to be dug out and allocated down to the individual items underneath.
Three markets made it harder in an interesting way. Canada, Brazil and the UK differ in inflation regime, competitive intensity, delivery mix and promotional culture, so everything below was fitted per market - an elasticity estimated on pooled data is a number that describes nowhere.
The system, in three stages
1 · Reconstruct the price signal
allocate combo, deal and offer prices down to individual items; market-basket and co-occurrence analysis to map what sells together
2 · Fit SKU-level demand
own-price plus complement and substitute effects, inside store clusters, with macro controls - a wide neural network per SKU
3 · Simulate & aggregate
per-SKU price changes → sales impact, rolled up to category and size combos for the recommendation
The simulator was the deliverable. It is what the CAO's team actually opened.
Three decisions, and what I turned down
01
Mine the price variation out of combos and offers
Shelf prices are frozen, but every deal is a different implied price for the items inside it. I pulled deal transactions apart - by channel, day and daypart - and allocated their prices down to the component SKUs, which turned a flat price history into a usable elasticity signal. Heavy, unglamorous data engineering, and the single step everything else depended on.
Rejected: fitting on listed menu prices. The models converge happily - on noise, because the price column barely moves.
02
Model each SKU, with its complements and substitutes
Raise the price of a core item and people trade into a bundle; discount a bundle and you cannibalise the item that carried the margin. So every SKU's demand model included the prices of its complements and substitutes, found through market-basket clustering. Models were fitted at SKU level to capture size and category dynamics, inside store clusters that held demographics constant, with elasticities tracked over time rather than assumed fixed.
Rejected: category-level average elasticities. Easier to fit and to present, and they answer a question nobody asks - no one prices "pizza", they price a large pepperoni.
03
Deliver a simulator, not a report
The per-SKU networks fed a simulator: change any individual price and see the modelled sales impact, aggregated up to the category and size combos where pricing decisions actually get made. Handing over the ability to ask questions beat handing over answers, and it meant the model got stress-tested by people with more category intuition than me. That is how it earned trust.
Rejected: a quarterly deck of optimal prices. It arrives, it is admired, and it is obsolete the moment a competitor moves.
What came of it
3 markets
Pricing, promotion evaluation and LTO calendar planning for Pizza Hut and KFC in Canada, Brazil and the UK.
CAO-level
Worked directly with the Chief Analytics Officer; the simulator became the shared surface for pricing debates.
This is where I learned the habit I still use in AI work: build the thing stakeholders can poke at, and let them argue with the model.