Each of the four segments has its own diminishing-returns response curve — sending more notifications to the same segment keeps adding conversions, but at a shrinking rate as the responsive members are used up:
C_i(x) = P_i · a_i · (1 − e^(−b_i · x))
P_i = segment population
a_i = conversion ceiling (max fraction that will ever convert)
b_i = responsiveness rate (how fast the curve saturates)
x = notification-budget units spent on segment i
The marginal return of the next unit spent on segment i is the derivative — this is the curve plotted in the bottom panel:
C_i'(x) = P_i · a_i · b_i · e^(−b_i · x)
- Equal split — the naive strategy: budget ÷ 4, spent identically on every segment regardless of how responsive it is. Plotted on the marginal-return curves, the four dots land at wildly different heights — proof that budget is not equalized where it earns the most.
- Greedy marginal — a water-filling allocator: each unit of budget is handed, one increment at a time, to whichever segment currently has the highest marginal return C_i'(x). Because every C_i is concave, this greedy rule is provably optimal for a fixed total budget. Watch the dashed "waterline" — once budget is exhausted, every segment still receiving spend sits at (almost) the same marginal height.
- Fatigue sensitivity — scales every b_i together, modelling a userbase that saturates faster (more easily fatigued) or slower; it steepens or flattens every curve in the bottom panel at once.
- The four segments — New, Active, At-Risk and Dormant — mirror the notification categories used in real push strategy (transactional/promotional/re-engagement/personalized): new users respond fast but have a low ceiling, at-risk win-back users respond slowly but can convert well if pushed enough, and dormant users barely respond at all no matter the spend.