Four churn signals computed from data you already generate — your meetings database and team chat — rolled into one RED / YELLOW / GREEN verdict per account, with the single sharpest reason and one recommended action. Scheduled daily. Renewals stop being surprises.
Churn announces itself in a termination email. The working team seemed happy, the calendar looked busy enough — and the quiet 60-day drift that preceded the exit was invisible, because nobody was measuring it.
Every morning, a board: one RED / YELLOW / GREEN verdict per account, the single sharpest reason behind it, and one recommended action for the week. The drift becomes visible while it is still recoverable.
No new tooling, no survey. Every signal is computed from the meetings database plus the account's channel in your team chat — the exhaust your engagements already produce.
Days since the last meeting with this account. The bluntest signal, and still routinely missed: on an active retainer, 45+ days of silence is RED on its own.
Meetings in the last 30 days vs the 30 days before. A meaningful drop — 8→2, 5→1 — is the leading churn indicator. Weight it heavily even when recency looks fine: engagements rarely end abruptly, they cool.
The tell from a real cool-down: working sessions quietly become "just send me the materials async".
Is the person who signs the renewal actually in the room? Track buyer attendance separately from team attendance — and track when you yourself last attended. The buyer absent 45+ days while team-level contact continues is a top renewal risk (the retention rule below exists because of it).
The team-chat overlay: tone in the account's channel over the last two weeks, unanswered asks, open escalations, silence.
Sentiment is a layer on top of the structural signals, not a replacement — on a real board, the riskiest accounts said nothing negative in their last call. The risk was structural, not verbal.
The output contract is deliberately narrow. A wall of metrics gets skimmed; a verdict with the single sharpest reason and one concrete move gets acted on. If everything is the reason, nothing is.
| Verdict | Any one of these triggers it |
|---|---|
| RED | 45+ days without contact · economic buyer absent 45+ days while team-level contact continues · negative sentiment or an open escalation · cadence collapsed (3+ meetings a month → zero) |
| YELLOW | cadence declining month over month · buyer proximity thinning · renewal inside 60 days with no recent buyer touch |
| GREEN | recent contact · buyer present · stable or rising cadence · neutral-to-positive comms |
Each account returns one compact record: verdict · score_0_100 · recency_days · cadence_trend (e.g. prev30=8 → last30=2, declining) · buyer_proximity · comms_signal · reason — the single sharpest one — and recommended_action, one concrete move for this week.
"Assess ONE account and return a verdict. Compute contact recency, the 30-vs-30 cadence trend, economic-buyer proximity, and channel sentiment. A cadence drop is the leading churn indicator — weight it heavily even when recency looks fine. Return GREEN / YELLOW / RED with the single sharpest reason and one recommended action. Read-only: never message a client, never post anywhere."
One query against the live meetings database — never a stale local mirror. Per account: total meetings, last contact, days since, last-30 vs prior-30 meeting counts, and how often you were in the room in the last 45 days (an owner-present flag on every meeting makes this a one-liner).
A hand-maintained roster file lists the accounts that are actually active. A client can go quiet and still be active; an ended engagement is not "at risk" — it's ended, and the system never cold-scans it. Recency feeds the signals; the roster decides the scope.
Each active account gets its own agent run: it reads that account's recent meetings and channel, computes the four signals, and returns the verdict record. If renewal risk is the thing that matters, every account deserves its own focused pass — not a shared skim.
Guardrail — read-only: it briefs you, you actThe board is a table — account · verdict · recency · cadence · buyer proximity · reason · action — written RED first, with a dormant line for 120+-day accounts and a "revive or archive?" prompt.
The brief leads with REDs and YELLOWs, one line each: the account, the one reason, the one action. GREENs get a single line so you know they were checked — and the sharpest cadence drop is flagged even when recency looks fine. Scheduled daily, it's waiting before your first call.
The same signal model renders at two scales: a per-account board when you run a handful of retainer clients, and a scored ranking when you have hundreds of customers.
Header stats: active · ended · total calls · largest engagement. Then one card per account: status badge, a metrics row (calls, last contact, tenure), current theme tags pulled from the enriched transcripts, the last call's decisions, one verbatim customer quote, and a plain-language trajectory line — "deep execution mode, this is what healthy looks like" vs "watch: longest gap of the engagement".
It closes with a patterns-across-the-cohort block — which is where the rules on this page came from.
A score 0–100 per account: a revenue-cohort base plus modifiers for meeting cadence, end-customer traction, scheduled cancellations, and tenure — banded healthy / watch / at-risk / critical.
Risk is dollar-weighted: the headline stat is revenue at risk, and the at-risk list is sorted "save these first". Separate views for already-churned (root-cause and win-back) and power users (the reference and expansion pool).
This rule has a price tag. A long, high-volume engagement — the largest on the board — didn't renew. The working team loved the work; sessions were full of tactical detail; the delivered value was real. But the decision maker drifted out of the room, and by renewal time he was asking what was even happening. Perceived value collapsed while delivered value was strong — and at a premium retainer price, any perceived-value gap gets amplified.
The healthy-cohort signature is the same rule stated in the positive: the buyer in every call.
Copy the bootstrap promptThe button below puts it on your clipboard.
Paste it into Claude CodeIn the project where your meetings data lives. Any meetings/CRM stack works — the loop only needs per-meeting dates, attendees and a channel to read. Cookbook 01 is that foundation.
Answer its questionsIt builds the per-account scout first, then the RED-first board and the scheduled morning brief.
No download needed — this cookbook is the signal model + the loop you build on your own stack.