RFM · 11 segments · k-means · marketing playbook · 10.5× ROI

49.5% of revenue
rides on 609 customers.
Now what?

Two years of UK e-commerce — 805,549 transactions, £17.7M of revenue (UCI Online Retail II). I scored every customer on Recency, Frequency, Monetary and priced the next quarter's marketing.

of revenue from 609 Champions
average recency: 8 days
Revenue
£17.7 M
across 5,878 customers
Top 5%
52%
of total revenue
At Risk
£943 k
historical, not buying
Blended ROI
10.5×
on the playbook
The shape of the book

This is not a long-tail story.
It's "the long tail is the floor; the head is the building."

Top 5% of customers = 52% of revenue. Add the next 6% and you're at 66%. Add the next 9% and you're at 77%. Champions alone — 609 customers averaging 8 days since their last order — account for £8.8M, or 49.5% of the book.

Below the top 11%, every additional segment matters less than the marginal cost of keeping one Champion happy. The playbook prices their attention the highest.

And the at-risk pile? 188 customers in At Risk + Can't Lose Them. People who were buying and just stopped. £943k of historical revenue, the right moment to intervene.

The 11 segments

Each cell sized by revenue. Champions glow.

Rule-based segmentation matching the Klaviyo / Mailchimp / Putler canon. k-means confirms the same Champions cluster — meaning the labels aren't arbitrary.

Champions
609 customers · recency 8d
£8.78 M · 49.5%
Loyal
715 · recency 30d
£3.47M · 19.5%
Lost
1,892 · recency 225d
£2.98M · 16.8%
At Risk
177 · recency 289d
£845k · 4.8%
Hibernating
1,424 · recency 430d
£783k · 4.4%
Potential Loyalist
356 · recency 10d
£486k · 2.7%
Need Attention
157 · recency 108d
£155k · 0.9%
Can't Lose Them
11 · recency 470d
£98k · 0.6%
About to Sleep
317 · recency 110d
£102k · 0.6%
Promising
143 · recency 38d
£32k · 0.2%
New Customers
77 · recency 11d
£19k · 0.1%
The math
$13.7k cost.
$144.7k projected.
10.5× blended.

VIP · Champions, Can't Lose Them · $6-22/customer · ROI 23.8× on Champions alone.

Retain · Loyal, Potential Loyalist, At Risk · $2.50-18/customer.

Reactivate · Hibernating, About to Sleep · $0.80-5/customer.

Don't spend · Lost, Promising. A coupon to a 1-year-stale customer is theatre.

Under the hood

What's inside the repo.

The stack

Built with.

Python 3.12pandasscikit-learnk-means + silhouetteDuckDBSQL paritymatplotlib + seaborn