The situation
A business-spend platform in the fintech sector, several years past product-market fit, with a revenue model that runs on transaction volume rather than seats. Growth was healthy on the metrics the company watched. The lifecycle picture underneath them was not, and nobody could say so with evidence because the measurement layer disagreed with the business model in three separate places.
The first disagreement was the important one. Churn fired when a subscription was removed. But in a consumption business the revenue is earned on what flows through the platform, so an account still holding a plan and spending nothing is churned in every sense that matters to the P&L — and was invisible in the churn number. A material share of every customer who had ever transacted was no longer transacting, and none of it showed up.
The second was attribution. Channel source was stamped on the record at deal close rather than at signup. That produces a field that looks near-complete among customers and near-empty among everyone else, which is the exact shape that makes paid-versus-organic comparisons unreadable. It is also the one defect that cannot be repaired later: every week without capture is attribution history that no longer exists.
The third was activation. Self-serve accounts took roughly twice as long to reach first transaction as sales-assisted ones, on the larger population, and nothing was managed against that gap.
What we designed
One headline metric per lifecycle stage, with a named owner. Acquisition, onboarding, activation, adoption, expansion, retention — one owned number each, defined precisely enough that two people cannot compute it differently, with diagnostic metrics underneath rather than beside. The discipline is the ownership, not the dashboard.
Retention redefined on spend-activity rather than billing status. This was the Monday-morning change with no engineering dependency, and it was also the politically hard one, because it makes a reported number worse overnight. We shipped it with a written bridge from the old number to the new and the framing pre-sold: we are now measuring what was already true. A metric change that surprises the board reads as a regression rather than a correction.
A signal layer underneath the stage metrics. Stage metrics tell you where you are; signals tell you what to do next, and lifecycle programmes fire on signals. Three families: progression (verification submitted, approved or stalled with a reason; bank connected; first transaction), health (volume trend against the account’s own trailing baseline, not a global threshold; days since last activity against the account’s own cadence), and expansion (a tier boundary crossed, a second product applied for, headcount outgrowing provisioned seats).
Four data layers, in build order. Capture — stamp first and last touch immutably at signup. Contracts — a versioned metrics dictionary with a named owner per definition. Validation — automated tests on CRM writes, each one written against a defect we had found in the live extract. Access — one modelled warehouse layer joining CRM to product events, with self-serve BI on top, so a channel-to-retention question does not require a data ticket.
One architectural rule for the stack: segment logic lives in the warehouse; engagement tools execute, they do not decide. The moment “active customer” is defined separately inside the engagement platform, a CRM list and a sales report, there are three numbers and no answer.
An attribution window designed to survive the funding gate. The win event in this business is the first transaction, which lands a long way after signup and much further out at the ninetieth percentile. Any window shorter than the funding journey systematically under-credits whichever channel brings in slower-funding customers — here, that would have flattered the sales-assisted path and all but erased self-serve. The sequence was capture first, incrementality tests second, a modelled view last. Sequencing the model earlier is how attribution projects fail.
Tiering set by revenue concentration, not by segment convention. Volume in this business is heavily concentrated in a small head of accounts. So automation goes to the tail in order that people can go to the head: named ownership at the top with marketing supplying signals rather than sends, automated journeys with human escalation in the body, fully behaviour-triggered in the tail, and a dedicated activation programme for the large population of signups that had never transacted at all.
Where AI belongs in it, and where it does not
Classifying verification stall reasons and support threads, so “stuck” becomes “stuck on this”. Per-account anomaly baselines, because a drop that matters for a large account is invisible in aggregate and nobody hand-tunes thousands of baselines. Content assembly for the tail, where the trigger is the same and the framing is industry-specific at a volume nobody would staff.
Not verification decisioning, credit, or customer financial data. In a regulated fintech that is a compliance conversation before it is a marketing one, and consent state belongs in the segment layer as a first-class field rather than a suppression list bolted on afterwards.
The end state
Every new business carries a source stamped at signup and it is never rewritten. Time to first transaction is a single number the whole company can see and one person owns. Retention is measured on whether money is moving. The expansion and reactivation motions run on triggers rather than on whoever remembers to look at a dashboard.
Status
Delivered inside the last twelve months; the system is in flight. We are not publishing outcome figures, because the outcome data is not in yet and we do not publish numbers we cannot stand behind. What is above is the architecture that was agreed and built, not a claim about what it has since produced. No client figures, datasets or identifying details appear on this page.