MAWSIMDemand-aware promo planning

Plan

Plan

Budget across five channels and three dayparts. Fifteen cells, a concave objective, and an optimum you can check rather than trust.

Budget12.0k AEDdrag to re-solve
Incremental visits1,765147.1 per 1,000 AED
Allocated12.0k AEDsums exactly to budget
Marginal spread2.2e-30 = equal marginal return, the KKT optimum

Each cell’s response saturates, so the total is concave and a greedy marginal allocation reaches the exact optimum — not an approximation of one. The check is the marginal spread above: at the optimum every funded cell returns the same amount for the next dirham.

assumed elasticitiesnot fitted

Affinities and saturation rates are structural assumptions scaled by the forecast, not fitted elasticities. No promotion has run. Every response the allocator returns carries assumed=true, and an allocator presented as optimal on invented elasticities would be the most confident wrong thing in this application.

Where the money goes

channelmorningmiddayeveningtotal
Instagram—2752,2252,500
Google——1,5251,525
Delivery aggregator—7501,9002,650
Near-store OOH1,0252501,5252,800
SMS / CRM6253251,5752,525
total1,6501,6008,75012.0k

Cell shading is the thermal ramp by daypart — morning at the cool end, evening at the warm end — so the table reads as a heat map without introducing a colour that competes with it.

Diminishing returns

The curve the slider moves along. Concavity is not decoration: it is why there is a right answer at all, and why the second ten thousand dirhams buys less than the first.

01,0002,0002k4k6k8k12k16k24k32k
Incremental visits
Total response against budget · incremental visits