Who should actually get the discount? Causal uplift meta-learners with Qini evaluation and a policy simulator that prices the model's decisions in dollars — built on a randomized-campaign simulator with known ground-truth effects, so every claim is testable.
A blanket promo pays the offer cost for every customer — including loyal ones who would have bought anyway (pure margin giveaway) and lost causes who won't respond either way. Uplift models estimate the causal effect of the offer per customer, so you only treat the persuadables.
The repo ships a randomized-campaign simulator that returns each customer's true treatment effect — price-sensitive and lapsed customers respond strongly, very frequent buyers show slight cannibalization. Because ground truth is known, the test suite asserts randomization balance, effect recovery, and learner ranking quality instead of taking them on faith.
All charts are the actual output of uplift-pricing on the seeded 20,000-customer campaign (60/40 train/holdout, offer cost $3.00, 30% margin).
Rank customers by predicted uplift, treat the top-x%, measure incremental outcome vs the randomized control. The further above the random-targeting diagonal, the better the ranking.
Profit of treating the top-x% by model score, priced against ground truth. The curve peaks where marginal uplift × margin = offer cost — treat ~55% of customers, earn 2.9× the blanket campaign.
Qini coefficient and correlation with the simulator's true per-customer effect, per meta-learner.
fit / predict_uplift interface, built on scikit-learn's HistGradientBoosting — swap in any regressor.