# Optimizing Assortment and Price with AI Elasticity Models
A mid-tier sparkling water brand walks into its quarterly review with a national grocer and learns it is losing two shelf facings (the visible front-row slots on a shelf) to the retailer's private label. The private label costs less, sells fine, and carries a fatter margin for the retailer. The brand's ask is simple: keep our space. The retailer's question is sharper: prove you earn it.
This is the everyday battleground of FMCG (fast-moving consumer goods, the packaged food, drink, and household products that sell quickly at low margin). Shelf space is finite. Every SKU (stock-keeping unit, a single product variant like "12oz lemon-lime, 6-pack") competes for it. AI elasticity models are now the tool that decides who wins.
A planogram is the visual mapmapUsing software to automate repetitive marketing tasks and campaigns, enabling personalisation at scale across channels like email, web, and social.Voir la définition complète → of what goes where on a shelf. Adding one product means removing another. So the retailer needs to answer two linked questions:
1. Assortment: Which SKUs should we stock at all?
2. Price: What everyday shelf price maximizes category profit, not just one brand's sales?
The old way was gut plus spreadsheets. The new way uses machine learning to estimate two things precisely: how demand responds to price, and how products steal sales from each other.
Price elasticity of demandPrice elasticity of demandHow sensitive demand is to a price change. High elasticity means customers react strongly to price increases.Voir la définition complète → measures how much unit sales change when price changes. If you raise price 10 percent and volume drops 20 percent, elasticity is roughly -2.0 (elastic, price-sensitive). If volume drops only 3 percent, elasticity is about -0.3 (inelastic, loyal buyers).
FMCG categories vary enormously:
The catch: elasticity is not one number. It changes by retailer, region, season, promo state, and competitor price. A single blended estimate is useless. That is why AI matters. It can estimate elasticity conditioned on dozens of variables at once.
A basic linear regression gives you one elasticity per product. Real demand is messier:
Gradient-boosted trees and, increasingly, deep learning demand models handle these interactions without you hand-coding every rule. For a solid, free primer on the economics side before the ML, see the FRED / economics elasticity overview style resources and open courseware, but the modeling ideas below are what teams actually deploy.
Cannibalization is when one of your products steals sales from another of your own products instead of from a competitor. Promote your 6-pack and your 12-pack volume may fall. That is not incremental growth. It is shuffled revenue.
Cross-price elasticityprice elasticityHow sensitive demand is to a price change. High elasticity means customers react strongly to price increases.Voir la définition complète → measures this. It captures how the price of Product B affects demand for Product A.
A cannibalization matrix maps every SKU pair. This is the single most important artifact for assortment decisions. It tells you whether dropping a slow SKU actually loses sales, or whether those buyers simply shift to your other products on the same shelf.
| | Std Cola drops price | Diet Cola drops price | Private Label drops price |
|----------------|----------------------|-----------------------|---------------------------|
| Std Cola units | +18% (own) | -6% (cannibalized) | -9% (lost to PL) |
| Diet Cola units | -5% (cannibalized) | +15% (own) | -7% (lost to PL) |
Read the off-diagonal cells. The -6% and -5% are internal theft. The -9% and -7% are true competitive losses. Retailers care about the net across the whole category, not any single row.
A workable AI elasticity system needs these inputs, most of which retailers and brands already collect:
A minimal modeling loop looks like this:
# Illustrative only: estimate demand, then simulate a price change
import lightgbm as lgb
features = ["price", "comp_price", "pl_price", "promo_flag",
"week_of_year", "store_format", "region"]
model = lgb.LGBMRegressor()
model.fit(X_train[features], y_train_units)
# Simulate: what if we cut price 5%?
X_sim = X_current.copy()
X_sim["price"] *= 0.95
predicted_units = model.predict(X_sim)
# Compare predicted_units vs baseline to get implied elasticity
# Then repeat for neighboring SKUs to capture cannibalizationYou never trust the raw prediction alone. You run counterfactual simulations: change one price, hold others fixed, read the effect on the target SKU and its neighbors. That is how you extract elasticity and cross-elasticity the model has implicitly learned.
Estimating demand is half the job. The other half is choosing the assortment and prices that maximize an objective, usually category profit, subject to real constraints:
This becomes a constrained optimization problem. The model proposes: drop the slow 500ml variant, give its two facings to the fast 1L, hold everyday price at $2.79 instead of $2.99 because the volume gain more than offsets the per-unit margin loss, and net category profit rises.
Armed with a cannibalization matrix, the brand walks back into the review. Their pitch changes from "please keep our space" to a data claim: "Your private label and our brand serve different shoppers. Cross-elasticity is low. If you cut our facings, most of our lost volume walks out of the category entirely rather than moving to your label. Here is the category profit simulation."
If the numbers hold, the retailer keeps the facings because the whole shelf earns more. If the numbers show the brand really is replaceable, the honest answer is to renegotiate on price or trade promotion instead. Either way, the decision is grounded.
Vérification des acquis
1. A product's price is raised by 10% and unit sales drop by 25%. What does this tell you about the product's price elasticity?
2. Why does the lesson argue that a single 'blended' elasticity estimate is useless for FMCG decisions?
3. When the retailer asks the brand to 'prove you earn it' regarding shelf facings, what underlying principle is being invoked?
4. Select ALL correct answers about what AI elasticity models help retailers and brands decide.
Sélectionnez toutes les réponses correctes.
5. Select ALL correct answers that reflect sound reasoning about FMCG price elasticity.
Sélectionnez toutes les réponses correctes.
Correlation is not causation. If price and sales both drop during a recession, a naive model may "learn" that low prices cause low sales. Use holdout tests, geo experiments (change price in some stores, not others), and causal methods where possible.
Elasticity drifts. Post-inflation, many shoppers became more price-sensitive on staples. Models trained on old data understate elasticity. Retrain regularly.
Endogeneity. Prices are often set in response to demand, which biases naive estimates. This is a known econometric trap. Analysts use instrumental variables or experimental price variation to correct it. If your vendor cannot explain how they handle it, be skeptical.
Per-retailer, not one-size. A model tuned on a national average will mis-price at any single chain. The value is in conditioning on retailer, region, and format.
Three shifts are live now: