A markdown engine has two layers that are usually conflated: the optimizer that searches, and the abstraction the business has to read, audit, and extend.
Modern MIP solvers (Gurobi, Hexaly) handle the search part well, even at SKU scale, with discretized response curves and branch-and-bound. The optimizer is rarely the bottleneck.
What breaks in production is the layer above it: a model where week, event, phase, discount level and stock are treated as loose, independent variables that no one outside the data team can read or modify safely.
Collapse every weekly choice into a single object, a markdown state, and the entire problem becomes tractable.
About the author

Cyril Noirot
Lead Data Scientist
Freelance data scientist. I design and ship decision systems — forecasting, pricing, marketing measurement, optimization.