The customers

13 customers, one per state

Each one is an example of a state the model produces, not an audience of one. Open a customer to see their signature and walk the journey they enter, message by message. Or score one yourself further down, and watch the model decide.

Score one yourself

Change the inputs, watch the decision change

Load any of the customers above, or move the controls yourself. The tier and the segment recompute as you go, and the rule that fired is named, so you can see exactly why the model landed where it did.

Load a customer:

Inputs

R · Recency5

Recency, how recently they purchased (5 = today, 1 = long ago)

F · Frequency5

Frequency, activity rate, exposure-normalised

M · Monetary5

Monetary, typical spend per active occasion (intensity)

B · Breadth4

Breadth, distinct products used

12-month gross spend£1,900

Drives the value tier (× recency decay)

Tenure
Flags
Lifecycle state

Model output

RFMBT
Value tier
Platinum
£1,900 × 1.00 = £1,900
Behavioural segment
Champion

Top value, broad and loyal across the range.

What we do

Recognise, protect and keep first-to-know. Low pressure, high value.

Moves KPI:Spend per active
What crosses into Braze
value_tier = Platinum
behavioural_segment = champion
matched_rule = 10
lapse_risk = false
subscription_flag = false
cross_sell_target = none
in_holdout = assigned upstream

Seven attributes, and nothing else. The plan, the definitions, the holdout assignment logic and the lift stay upstream.

Decision tree, first match wins
On a subscription, so recency and frequency are pinned by the standing orderSubscriber
Registered, never purchasedProspect
First 90 days, so there is too little history to readOnboarding
Came back after a long silenceReactivated
Gone quiet against their own rhythm, and was worth keepingAt-Risk
Silent a long time, and was valuable onceHibernating
One lifetime purchase, then nothingOne-and-done
Only purchased around a seasonal sale, quiet in betweenDeal-Driven
Still newish, but the purchase rate is climbingRising Customer
Established, top tier, and broad across productsChampion
11Established and frequent, but has never tried complementary rangeSingle-Category Loyalist
12Established and frequent, steady spend, a product or twoLoyal Habitual
13Nothing else fired, so keep them warm at low costCasual / Low-engagement

Rule 10 fired. That number is persisted alongside the segment, so a change of state is explainable after the fact rather than an argument. It is also what makes the tree testable: the same inputs give the same rule on any future date.

A teaching version of the same logic, running in your browser. In production it runs in your warehouse over your own data, but the rules are the ones you see here.

Same people, every model

One cast, read through every lens

This roster is not specific to RFM. Every other model in the catalogue re-reads the same customers: churn scores their lapse risk, pLTV their forward value, engagement their appetite. That is what makes one shared view of the customer worth building once.

That is RFM working on sample data. The service page has the rest: what it needs from you, how long it takes to build, what it pairs with, and how the lift gets proven.