The RFM+BT Model

Five dimensions in, two decisions out

The engine deals in thirteen canonical segments. Feed it a customer's signals and it returns a tier, a segment and the next best action, live in the browser.

R
Recency
Days since last purchase, read against the customer's own cadence, not an absolute. A weekly customer three days out is fine; a daily one ten days out is not.
F
Frequency
How often they purchase, as a rate over exposed time, so a consistent new customer scores like a consistent veteran.
M
Monetary
Typical spend per active occasion (the intensity), decoupled from frequency and robust to seasonal sale spikes.
B
Breadth
How many distinct products they use. Single-product customers are the biggest cross-sell pool, and the lever on complementary range take-up.
T
Tenure
How long they have been active. Tells us whether a quiet week means 'still forming' or 'starting to slip'.

Built from events you already have

No new tracking required. The model reads the purchase and account events you already capture, and turns them into the five dimensions.

RF
Purchases
When and how often they purchase
M
Spend per purchase
Intensity per active occasion
B
Products used
Breadth across the catalogue
T
Registration date
Account age and lifecycle stage

A subscription routes auto-renewing customers onto their own track, and engagement events, logins, app opens and sessions, feed the wider catalogue models. Nothing here needs a new data source.

Output 1

Value tier

How much a customer is worth right now: total spend, discounted by recency, so a big spender who has gone quiet slips down a tier. Platinum, Gold, Silver, Bronze, Dormant. It tells you how hard to lean in.

Output 2

Behavioural segment

What kind of customer they are and what to do next: Champion, Single-Product Loyalist, At-Risk, Rising, and more. A deterministic decision tree, first match wins. It tells you what to say.

The result is a map

Every customer lands on two axes: a value tier and a behavioural segment. Here is the example roster, plotted where they fall. Only about 20 of the 45 cells ever occur; the rest cannot happen.

Platinum
Gold
Silver
Bronze
Dormant
Champion
Priya
Loyal Habitual
Daniel
Single-Category Loyalist
Sofia
Rising Customer
Marcus
At-Risk
Elena
Hibernating
Tomasz
Reactivated
Grace
New / Onboarding
Aisha
Casual / Low-engagement
Ben
Customer herePossible, no example yetCannot occur

Column = value tier (tunes intensity) · row = behavioural segment (the journey). Only a subset of cells can ever occur; the rest are impossible. Tap a customer to walk their journey.