The Markin ROI Report for Enterprise Growth TeamsRead now
MARKIN
Field notes
Guides11 min read

Next best action model: propensity, uplift and ranking

How a next best action model is built: propensity, uplift meta-learners and a ranking function that scores expected incremental margin per action.

Marc Sanchez
  • #Next Best Action
  • #Decisioning
  • #Guides
Next best action model: propensity, uplift and ranking

A next best action model is the scoring function that decides, for one customer at one moment, which eligible action carries the highest expected incremental value. It is not a single algorithm. It is a stack: a propensity layer that estimates what is likely, an uplift layer that estimates what an action changes, and a ranking layer that converts both into money and picks a winner.

Most teams build the first layer, skip the second, and let the third become a spreadsheet of business rules. That is why so many programs report impressive AUC and flat revenue. This guide covers the model families that work in production, the objective function that should sit on top of them, and how to know the model is right rather than merely accurate.

What the model has to output

The output is not a score per customer. It is a matrix: for every customer, one expected value per eligible action, including the null action of doing nothing. The decision is the argmax of that row, subject to constraints.

Writing the objective this way forces three things into the open that a propensity model hides: the candidate set has to be enumerated, every action needs a margin, and doing nothing has to be allowed to win. In a mature program the null action wins a large share of decisions, and that share is a feature, not a defect.

The three model layers

1. Propensity: gradient-boosted trees

On tabular customer data, gradient-boosted trees (XGBoost, LightGBM, CatBoost) remain the production default. They handle mixed types and missingness, train in minutes, and reach most of their quality ceiling with little tuning. Sequence models earn their cost only where event ordering carries more signal than event counts, typically long behavioural traces in streaming and gaming.

2. Uplift: meta-learners

Propensity answers who is likely to convert, churn or upgrade. It does not answer whether the action changes anything. That is a causal question, and the practical defaults are meta-learners: T-learner (separate models on treated and control), X-learner (more stable under treatment imbalance) and R-learner (Neyman-orthogonal, more robust to nuisance error). Each wraps the same boosted-tree workhorse in a causal frame, so the engineering cost of adding uplift on top of an existing propensity pipeline is modest.

The failure mode to watch for is propensity relabelled as uplift. If the top of the ranked list is dominated by customers who were going to convert anyway, the program is paying for behaviour it already had.

3. Ranking under constraints

The ranking layer applies eligibility, consent, frequency caps, quiet hours, budget and cannibalisation rules, then takes the argmax. Constraints belong here rather than inside the model: they change weekly, they are auditable, and they should never be laundered into learned weights.

Contextual bandits and when they help

Contextual bandits allocate traffic across actions while learning, which is useful when the candidate set changes constantly and rewards arrive quickly. They are weaker when the reward horizon is long, as it is with subscription margin, and when you need a clean causal readout for finance. A common production compromise: bandits for creative and offer variants inside an action, uplift models for which action to choose, and a preserved holdout on top of both.

Validating the model

  1. 1Offline: Qini and uplift curves. AUC validates propensity, not decisioning. Use the Qini coefficient and uplift-at-k curves on a held-out randomised sample to check that the top deciles really do carry the treatment effect.
  2. 2Feature freezing. Compute every feature as of decision time. Any leakage from after the decision inflates offline metrics by a wide margin and produces a model that quietly fails in production.
  3. 3Online: a preserved holdout. Randomly withhold 5 to 15 percent of eligible customers per decision and read treated minus holdout on incremental margin. This is the only number that survives a CFO review.
  4. 4Decay monitoring. Uplift decays faster than propensity, because the base adapts to the treatment. Retrain on a fixed cadence and keep a permanent randomised slice to re-estimate effects.

A realistic build sequence

Weeks 1 to 4: enumerate the candidate action set and attach a margin to each, then ship a propensity baseline with a holdout. Weeks 5 to 10: add a T-learner or X-learner on the two or three highest-volume actions, and switch ranking from propensity to expected incremental margin. Weeks 11 onward: extend the candidate set, add constraints, and let the null action compete. Most of the lift arrives in the second phase, when the objective changes rather than when the algorithm does.

For how the models sit inside the wider operating loop, see the guide to next best action, and for the retention-specific version of the same stack, see customer churn prediction.


Markin builds and retrains the propensity, uplift and ranking layers against your base, and reads every decision against a preserved holdout. Explore Next best action to see it live.

Frequently asked

Questions readers ask about this.

What is a next best action model?
A next best action model is the scoring stack that estimates, for one customer at one moment, the expected incremental value of every eligible action, including doing nothing, and ranks them. It combines a propensity layer, an uplift layer and a constrained ranking layer.
Which algorithms are used for next best action?
Gradient-boosted trees (XGBoost, LightGBM, CatBoost) for propensity on tabular data; uplift meta-learners such as the T-learner, X-learner and R-learner for causal effect; and a constrained argmax ranking layer for the final decision. Contextual bandits are useful for variant-level allocation inside an action.
What is the difference between a propensity model and an uplift model?
Propensity estimates how likely an outcome is for a customer. Uplift estimates how much a specific action changes that outcome. Ranking by propensity spends budget on customers who would have converted anyway; ranking by uplift spends it where the action makes a difference.
How do you validate a next best action model?
Offline, with Qini coefficients and uplift-at-k curves on a randomised held-out sample, with all features frozen at decision time. Online, with a preserved holdout of 5 to 15 percent of eligible customers, reading treated-minus-holdout incremental margin per decision.
How often should uplift models be retrained?
More often than propensity models. Treatment effects decay as the base adapts to the treatment, so keep a permanent randomised slice to re-estimate effects and retrain on a fixed cadence rather than only when accuracy drops.

See it in the product

This runs in Markin today.

The same loops this note describes run 24/7 against your customer base. Watch the workspace decide, experiment and execute 1:1.