Example readout · invented company
Which customers will upgrade? An example propensity model readout
A propensity model scores each customer’s chance of doing one thing in a set window, here moving up a plan in the next 90 days. It works if, on a quarter it never saw, the customers it scores highest move up far more often than the rest, and its scores add up to the upgrades that happen. Below is the readout for an invented company: on the test quarter, the fifth of customers the model scored highest held 62% of the upgrades, and today’s list is 805 customers with about 117 upgrades expected by 29 December 2026.
The example · invented company
Propensity-to-upgrade readout, scored on 30 September 2026
The company is an invented subscription software company on three plans at flat monthly prices, Starter at €29, Growth at €99 and Scale at €299; each month about 2% of Starter customers and 1% of Growth customers move up a plan. On 30 September 2026 it had 4,492 paying customers, 4,025 of them on Starter or Growth, the two plans a customer can move up from. Its customers on three dates are synthetic, drawn customer by customer when this page is built, and every figure about the company in the readout is computed from them. To choose how far down the list to call and see the upgrades it catches, and what they add a month, run the who-to-call demo and pick the customers about to upgrade.
Upgrades in the top fifth
62%
120 of the 193 test customers who moved up by 28 September 2026 were in the fifth the model scored highest. Invented company.
Top tenth against the average
4.5 times
22.0% of the top tenth moved up, against 4.9% of all 3,955 test customers. Invented company.
Today’s list
805
Customers in the top two tenths of the scores of 30 September 2026. Invented company.
Upgrades expected from the list
117
By 29 December 2026: the sum of the list’s scores, 62% of the 189 the scores expect across all 4,025 customers. Invented company.
Recommendation. We recommend putting the model live and calling the top two tenths of each quarter’s scores, starting with today’s 805 customers, with a random part of the list left uncalled to measure what the calls add. On a quarter the model never saw, its top fifth held 62% of the customers who moved up, and its scores added up to 185 upgrades where 193 happened. The recommendation holds for customers, plans and prices like those in the history; the triggers for a refit are under “Re-checking each quarter”.
How the model was built
The model is a logistic regression on six features: the plan, tenure, seats on the account, days with a login, days at the plan’s limit and support tickets. It learned from the 3,880 customers on Starter or Growth on 31 March 2026, and from whether each moved up by 29 June 2026: 180 did, 30 for each feature tried. How many past cases a model needs is on churn prediction, where the cases are leavers; here they are upgrades.
It was then tested on the 3,955 customers of 30 June 2026, whose upgrades by 28 September 2026 it never saw. Its ranking and its scores below are judged on that quarter alone.
How well it ranks customers
The test customers are ranked by score and split into ten equal groups, tenths. Customers in the top tenth moved up at 22.0%, 4.5 times the average of 4.9%. In each of the bottom five tenths, no more than 2.5% did.
Moving up a plan within 90 days, by tenth of the model’s scores (1 is the highest), customers of 30 June 2026
The same data as a table
| Tenth of scores | Customers | Moved up | Predicted rate | Actual rate | Lift | Share of upgrades, this tenth and above |
|---|---|---|---|---|---|---|
| 1 (highest) | 396 | 87 | 21.4% | 22.0% | 4.5 | 45% |
| 2 | 395 | 33 | 7.4% | 8.4% | 1.7 | 62% |
| 3 | 396 | 17 | 5.0% | 4.3% | 0.9 | 71% |
| 4 | 395 | 15 | 3.6% | 3.8% | 0.8 | 79% |
| 5 | 396 | 6 | 2.7% | 1.5% | 0.3 | 82% |
| 6 | 395 | 10 | 2.2% | 2.5% | 0.5 | 87% |
| 7 | 396 | 9 | 1.7% | 2.3% | 0.5 | 92% |
| 8 | 395 | 10 | 1.3% | 2.5% | 0.5 | 97% |
| 9 | 396 | 4 | 1.0% | 1.0% | 0.2 | 99% |
| 10 (lowest) | 395 | 2 | 0.6% | 0.5% | 0.1 | 100% |
| All | 3,955 | 193 | 4.7% | 4.9% | 1.0 |
How many upgrades the list catches
Calling the top fifth of scores reaches 62% of the customers who moved up, 120 of 193; a list in random order reaches about 20%. The model’s list stays above the random one until both have called everyone.
Share of upgrades caught, by share of customers called, top scores first, customers of 30 June 2026
The same data as a table
| Customers called | The model’s list | Ranked by the true rule | Random order |
|---|---|---|---|
| Top 10% | 45% | 48% | 10% |
| Top 20% | 62% | 64% | 20% |
| Top 30% | 71% | 72% | 30% |
| Top 40% | 79% | 78% | 40% |
| Top 50% | 82% | 83% | 50% |
| Top 60% | 87% | 89% | 60% |
| Top 70% | 92% | 93% | 70% |
| Top 80% | 97% | 97% | 80% |
| Top 90% | 99% | 99% | 90% |
| Top 100% | 100% | 100% | 100% |
Are the scores right?
Each score is the model’s probability that the customer moves up within 90 days. In every tenth, the predicted rate is within 1.3 percentage points of the share that moved up, and across the test quarter the model expected 185 upgrades where 193 happened, within one standard deviation of the count if the scores are right. So the scores read as probabilities: a list’s scores add up to the upgrades to expect from it.
One tenth ran outside the range the scores give at two standard deviations: 10 upgrades against 5 expected in the eighth. The other nine fell inside it. It is worth watching at the next quarterly re-check; on its own it meets none of the refit triggers below.
What moves the score
Each row compares two values of one feature for a typical customer, the other features held at that customer’s values: on Starter, with 5 seats on the account and 15 months since joining; in the last 30 days, a login on 18 days and 1 day at the plan’s usage limit; in the last 90, 1 support ticket.
| Feature | Compared | Moving up within 90 days | Times as likely |
|---|---|---|---|
| Seats on the account | 20 against 3 | 8.0% against 2.1% | 3.9 |
| Days at the plan’s limit | 5 days against none | 8.6% against 2.3% | 3.8 |
| Plan | Starter against Growth | 3.0% against 1.0% | 2.9 |
| Tenure | 3 months against 3 years | 5.7% against 2.1% | 2.7 |
| Days with a login | 25 days against 10 days | 4.0% against 2.1% | 1.9 |
| Support tickets | three against none | 3.1% against 2.9% | 1.1 |
The largest effect is seats on the account: 20 against 3, 3.9 times as likely to move up. Days at the plan’s limit, the signal a sales team’s usage rule reads, make moving up 3.8 times as likely at five days a month as at none. Support tickets carry little: three tickets against none come out 1.1 times as likely, within chance of no effect at all. They still count among the features tried. The effects are associations in the history, not proof of cause: whether lifting a customer’s limit or logins makes them move up is a question for a test, not for this model.
Today’s list
Ranked on the data of 30 September 2026, the top two tenths are 805 customers. Their scores add up to about 117 upgrades by 29 December 2026, more than half of the 189 the scores expect across all 4,025 customers on Starter and Growth.
Those 117 are upgrades the scores expect whether or not anyone calls. A score ranks customers; it does not show that a call causes an upgrade, and some of the list would move up on their own. We recommend leaving a random part of the list uncalled and comparing its upgrades with the called customers’ at the end of the quarter. Without that comparison, what the calls add stays unknown.
What the model is good for, and what it is not
The model is good for two things:
- choosing whom to contact first each quarter, by the chance of moving up in the next 90 days;
- the number of upgrades to expect from a list, from the sum of its scores.
It is not built for these:
- why a given customer moves up: the scores rank customers, and the effects are associations;
- what a call, an offer or a discount adds: that needs the uncalled comparison under “Today’s list”;
- customers on Scale, who have no plan to move up to, and new plans or prices the history does not hold;
- windows other than 90 days: the model was fitted and tested on that window only.
Re-checking each quarter
A propensity model drifts: customers, plans and the product change, and scores fitted on one quarter’s customers read later ones less well. In this invented history nothing changed between the three dates, so the test quarter shows no drift; on real data, each quarter’s scores are checked against who moved up, as the test quarter was here.
We recommend refitting the model when any of these happens:
- The 3,220 customers not on today’s list fall outside the upgrades their scores expect. By 29 December 2026 the scores expect 72 of them to move up: a count below 55 or above 89 is more than chance would explain, at two standard deviations. They are the check because no call reaches them.
- The uncalled part of the list moves up at no more than twice the rate of the customers not on the list. On the test quarter, the top fifth of scores moved up at 15.2% and the rest at 2.3%.
- The business changes in a way the history does not hold: a new plan, a price change, or a change in how logins or the plan’s limits are counted.
- A year has passed since the last fit.
How close the fit came to the true rule
Because the customers are synthetic, the rule that decided who moved up is known, and the fit can be held against it. On your data no such rule exists, and the test quarter is the check. Ranked by the true probabilities, the top fifth of test customers held 64% of the upgrades; ranked by the model’s scores, 62%, close to the best ranking these six features give. For 9 in 10 test customers, the model’s probability was within 1.6 percentage points of the true one. Each coefficient the fit found, the weight it gives one feature, sits within two standard errors of the rule’s own. In the table of what moves the score, the widest gap is seats on the account, 3.9 times as likely by the model against 2.7 by the rule.
Checks and sign-off
Sign-off. Putting a model live is a decision you act on, so it carries the analytics director’s sign-off. The quarterly re-scoring after that is a routine refresh: it carries its checks and no new signature. This readout is an example on an invented company and is never signed.
What carries a sign-off
The decision the readout supports
The analytics director signs every output you will act on, such as a model going live. This decision is an example on the invented company and is never signed, so its stamp stays at “Sign-off pending”.
Decision · example
Put the model live, and call the top two tenths each quarter?
Score the customers on Starter and Growth at the end of each quarter and call the top two tenths, 805 customers this quarter, with a random part of the list left uncalled to measure what the calls add. Their scores expect about 117 upgrades by 29 December 2026. Not priced here: what the calls cost, and how many of those upgrades a call adds.
How propensity models choose whom to offer whatOn your data
What you receive with a propensity model
The same readout, on your own customers instead of an invented company’s. A churn model is built the same way, with leaving as the outcome: see the churn model readout.
What it reads. Billing and plan history per customer, with the date of each plan change; product usage, such as logins and use against the plan’s limits; and support tickets, where you record them. Where the data goes is on data handling.
How it is built. AI agents rebuild your customers as they stood on past dates, fit the model and draft the readout. Scripts check its numbers and claims against the data. A model going live is something you act on, so a panel of three reviewer agents and a judge reviews it before the analytics director signs it. Each check can send the work back to be fixed; two fix rounds that fail the same way stop the work, and the director decides. The review is described on how it works.
What arrives. A readout like this one: a memo of up to two pages, with its tables as an appendix. Then the scored customer list each quarter, as a file or a recurring report, and the method note listing the checks that ran. The model and its readout are one sprint, from €12k, fixed before work starts; the quarterly re-scoring runs on an async retainer, from €8k a month.
Not covered. Calling your customers or running the sales programme, and installing anything on your systems. The model ranks whom to call; what a call adds is measured by your own comparison.
Start here
Want this readout on your own customers?
Up to thirty minutes on your upgrade question, then a fixed proposal.