Service

Promo economics audit — price the offer before you ship it

Four weeks to find out what your promos, bonuses, streaks and loyalty tiers actually cost, what they cost in a bad month, and where to put the caps. You keep the model.

Delivered as documented Python, not a slide deck
The problem

Most promo budgets are a guess with a spreadsheet around it

Not because the teams are careless. Because a promo is a contingent payout, and contingent payouts do not have a single number. They have a distribution, and nobody was asked to produce one.

×Promo budgets set by audience size times face value, then reconciled after the invoice
×Bonus terms copied from a competitor without knowing what theirs cost them
×Discount depth chosen at round numbers because 20% off feels standard
×Points and cashback carried at a flat breakage assumption nobody has revisited
×A loyalty tier that lifted qualifying spend but never got checked against the perk cost
×Streaks and leaderboards shipped as product features with no cost per retained user

Want the reasoning before the engagement?

The pillar guide covers what financial engineering is and how its three pillars price each mechanic, with sixteen worked models and the Python behind them.

Read the guide
The engagement

Five stages over four weeks

01

Week 1

Instrument

Find out what actually happened

  • Pull redemption, payout and cohort data for every live and recent offer
  • Separate incremental buyers from the ones who would have converted anyway
  • Establish the baseline conversion each promo is measured against
  • Flag the offers where the data cannot answer the question yet

Output: Offer inventory with realised cost per offer and a list of measurement gaps

02

Week 1–2

Model

Price each mechanic as the instrument it is

  • Expected value and breakeven conversion for every discount and promo
  • Wagering and completion modelling for bonuses with turnover conditions
  • Survival-curve redemption and present-value liability for points and cashback
  • Threshold and hazard-rate models for tiers, streaks and leaderboards

Output: One Python model per mechanic, parameterised to your numbers

03

Week 2

Simulate

See the tail before it arrives

  • Monte Carlo the payout distribution, not just the point estimate
  • Report P50, P90, P95 and P99 payout so reserves are sized against the tail
  • Stress the assumptions that matter most and rank them by sensitivity
  • Identify which offers are one bad cohort away from a loss

Output: Payout distribution per campaign, with the reserve number to budget against

04

Week 3

Cap

Decide the limits while it is still cheap

  • Per-user and per-campaign exposure caps derived from the distribution
  • Kill-switch thresholds sized to a defined false-trigger rate
  • Abuse and bonus-hunting detection rules based on payout outliers
  • Revised offer terms where the model says the current ones cannot work

Output: Written risk limits, trigger thresholds, and revised terms where needed

05

Week 3–4

Hand over

You keep the model, not a slide deck

  • Working session with whoever will own the model after I leave
  • Documented assumptions, so a wrong number can be found and changed
  • Rerun instructions for the next campaign cycle
  • Optional: wire the caps and triggers into the campaign system itself

Output: Full model handover, documented and rerunnable by your team

What you get

Deliverables

Offer inventory with realised cost per offer
Python model per mechanic, parameterised to your data
Expected value and breakeven table for every live offer
Monte Carlo payout distribution with P50 through P99
Reserve recommendation sized to the tail, not the mean
Per-user and per-campaign exposure caps
Kill-switch thresholds with stated false-trigger rates
Sensitivity ranking of the assumptions that move the answer
Revised offer terms where the current ones cannot clear breakeven
Documented assumptions and rerun instructions
Handover session with the owning team
Thirty days of follow-up questions

Everything runs in Python with NumPy and the standard library. No licence, no vendor, no dependency on me after handover.

Who this is for

Good fit

  • You run promos, bonuses or a rewards currency at meaningful volume
  • Someone has asked what a campaign actually cost and the answer took a week
  • You are about to launch a loyalty tier or gamification mechanic
  • Your finance team and your growth team disagree about promo cost
  • You suspect a specific offer is losing money but cannot prove it

Not a fit

  • ×You want a dashboard rather than a model
  • ×Nobody on the team can supply campaign-level payout data
  • ×The offer terms are fixed and cannot change whatever the model says

Find out what your offers cost

Four weeks, fixed scope. Bring one live offer to the first call and we can price it on the call, before anything is signed.

External Resources

Methods and references behind this service

From the blog

The models behind this service