Skip to main content
DoneThat

AI Adoption GuideRetailPlan

Promotion Calendar Optimizer

Optimization model builds a promotion calendar that balances supplier funding, margin, expected lift, cannibalization, and operational capacity across categories.

Retail processPlanBuyPriceStockSellFulfillReturnClear

By Don, DoneThat’s AI coach · updated

What this use case covers

A promotion calendar optimizer helps a promo planner turn scattered inputs into a coherent schedule of featured weeks by category, brand, and mechanism. The model searches for a calendar that respects supplier funding windows, protects margin floors, accounts for expected lift and cross-SKU cannibalization, and stays inside operational capacity for space, labor, and supply.

This page is for planners who already run seasonal and weekly promo calendars and want a structured proposal before merchandising commits the lock. It is not a substitute for category strategy, vendor negotiation, or in-store execution. The optimizer proposes; people decide.

Inputs the optimizer needs

The model only runs when the required planning inputs are present and usable. At minimum it needs supplier funding by period (amounts, eligible mechanisms, and timing constraints), margin targets or floors by category or brand, and operational capacity limits for the weeks under review. Capacity usually includes fixture and display slots, store labor for set and tear-down, distribution throughput, and any hard blackout weeks (resets, holidays, or compliance freezes).

Lift and cannibalization signals come from historical promo performance and the demand plan. Without a credible base demand and lift view by store and SKU, the calendar can overstate incremental sales and understate substitution within the aisle. Assortment context matters as well: which SKUs are in the planogram, which are promo-eligible, and which are excluded by brand or regulatory rules.

If funding, margin, or capacity inputs are missing, incomplete, or contradictory in a way the planner cannot resolve, the optimizer returns empty output. It does not invent funding pools, soften margin floors, or assume infinite display capacity. Empty output is the correct failure mode: it forces the planner to fix the planning data before any calendar is treated as a candidate.

How the optimization runs

The optimizer treats the calendar as a constrained assignment problem over weeks and promo slots. Candidate promotions (brand or SKU set, mechanism, depth, and funding source) compete for limited weeks and limited operational capacity. The objective typically blends expected incremental margin and volume after cannibalization, subject to funding drawdown rules and category margin guardrails.

Cannibalization is modeled as expected diversion from non-promoted substitutes and adjacent categories, not as a flat “lift haircut.” That distinction matters when two strong brands in the same category both want featured weeks: stacking them can look good on funding utilization and still destroy net incremental contribution. Capacity constraints prevent the planner from approving more feature and display activity than stores and DCs can execute in the same week.

Related assortment and site decisions shape the feasible set. Localized assortment changes alter which SKUs can carry the promo; new or closing stores change the store set over which lift and capacity are evaluated. Those links should stay explicit so the calendar does not optimize against an outdated assortment or footprint.

Human-in-the-loop: propose, then lock

The model produces a proposed calendar: which weeks, which categories and brands, which mechanisms, and how funding and capacity are consumed. Merchandising still locks the weeks. Planners and category managers review funding conflicts, brand equity commitments, competitive timing, and execution risk that the objective function does not fully capture.

A useful review loop separates “model feasible” from “commercially locked.” Feasible means constraints are satisfied and the score is competitive among alternatives. Locked means a named owner accepted the week, mechanism, and funding draw for that slot. Until lock, the proposal can be regenerated when funding letters change, capacity is revised, or a vendor commitment moves.

Do not treat the first proposal as the calendar of record. Treat it as a ranked starting point with transparent constraint slack: unused funding, spare capacity weeks, and margin headroom. Those signals tell merchandising where negotiation or reallocation is still possible without breaking the plan.

Reading the output and acting on it

A complete run should return a week-by-week schedule with promo assignments, funding draw by supplier, expected lift and cannibalization-adjusted contribution, margin vs. floor, and capacity utilization by constraint type. It should also surface rejected candidates and the binding constraint that excluded them (funding window, margin floor, capacity, or mutual exclusivity with another promo).

Use the rejection list in vendor and internal meetings. It turns “we cannot feature that week” into a specific trade-off: move funding timing, accept a shallower depth, free a display slot, or drop a conflicting promo. When the optimizer returns empty output, diagnose which of funding, margin, or capacity failed first, repair that input, and re-run. Do not manually paste a calendar and call it optimized.

After lock, feed the calendar into demand and supply planning so forecast lift, inventory builds, and labor schedules match the committed weeks. Re-open the optimizer only when a material input changes (funding revision, capacity shock, or assortment cut) and re-lock deliberately rather than drifting the live calendar week by week without a new proposal.

When not to use this model

Skip the optimizer when the planning window is too short for meaningful trade-offs (a single fixed week already committed), when funding and margin rules are still under negotiation with no provisional numbers, or when capacity is unknown because resets and labor plans are unsettled. In those cases, empty or deferred output is healthier than a polished schedule built on placeholders.

Also avoid using the calendar score as a vendor scorecard in isolation. Incremental lift and funding utilization can look strong while brand strategy, exclusivity contracts, or store experience goals require a different week. Keep those qualitative constraints in the lock step, and keep the model honest about what it can and cannot decide.

Is this worth automating for you?

Whether this pays back depends on how much time it takes your team today. Most teams estimate that from memory, and the estimate is usually wrong in one direction or the other. This one is rated high effort to implement, so the baseline matters more than usual.

DoneThat reconstructs where the time actually went, with no timers to forget, so you can measure the baseline before committing to a project and check the gain afterward.

Measure the baseline first