Customer Success Runbook
11 routines to copy.
1Track what people have promised me, and what I owe them
Every promise from email, texts and meetings, listed in one place with days waiting.
Details
It keeps the same list on me, and closes an item when the promised thing arrives.
Ask first
- Which sources may it read? (default your inbox, your texts, and notes from meetings if you keep them; ignore newsletters and automated mail)
- Who counts as someone you owe or who owes you? (default anyone who wrote to you personally in the last 60 days)
- When is a promise stale? (default 30 days, or 60 days if it has no date)
- Where should the list live? (default one page you open each morning)
Needs
- Read access to the sources
- One saved list with these fields for every item: title, who, direction (mine or theirs), source and link, date captured, due date if any, confidence (high or low), status (open, done or dropped) and why it closed
- A scheduler that can run every 15 minutes
- If your assistant cannot read one of these, paste it when it asks. A thinner version still works
- Any password or token is entered by you into your device's secure store, never pasted into a chat or saved in a plain file
Build
- Every 15 minutes, read messages and notes added since the last run. Pick out sentences where someone commits to do something: "I will", "I'll send", "we'll have it by", "can you send me".
- Save each as one item with every field above. Mark confidence low if the commitment is vague or the date is a guess.
- When a later message in the same thread contains the promised thing (an attachment, a link, the words "here it is"), close the item and write why. Never close an item on silence.
- Mark an item stale after the stale limit and move it to a dropped list, never delete it.
- Show the list with days waiting, oldest first, amber after seven days. This one list is the source for every other run that needs promises: the morning brief reads its Due from you section from it, and the follow-up run adds each commitment it drafts to it.
Check
- Seed three promises in a test thread; confirm all three appear with the right direction and date
- Send the promised thing; confirm the item closes and says why
- Confirm a vague promise is marked low confidence and a stale one moves to the list of dropped items
- Say whether the writing step ran for real or on sample text. Check that every figure, quote and link matches its source, and drop any that does not
In my version
- Claude Code on a 15-minute schedule, one list I open each morning; my morning brief and my follow-up run both read and write it
Built it? Tell Cassie.
I owe
Send the revised pricing sheet to Dana Whitlock (email, asked 6d ago)
Others owe me
Intro to the finance lead, from Ravi Sandhu (email, asked 9d ago, amber)
Done this week
Reference notes from Mei Tanaka, closed because her email arrived
2Draft the save plan for an account that looks like it may leave
When an account is flagged as at risk, a plan for the first call: what likely went wrong, who to speak to, what to offer from what has worked before, and what not to say.
Details
Ask first
- Where do at-risk accounts get flagged?
- Where are notes on past saves and losses? (default closed accounts and their last threads, or paste a short list)
- What may you offer? (default only things you can do yourself: time, training, a call)
Needs
- Read access to the account history and notes on past saves
- If your assistant cannot read one of these, paste it when it asks. A thinner version still works
- Any password or token is entered by you into your device's secure store, never pasted into a chat or saved in a plain file
Build
- When the churn-flags run lists an account, or the tone-shift run warns about one, read its last six months of history.
- Find the most likely cause from what changed: a person left, usage fell, tickets rose.
- Match it to a past save or loss with the same cause. Say what worked or failed.
- Write the plan. Never contact anyone.
Check
- Run it on an account that left; the cause it names is the one you later learned
- Confirm nothing is offered that you cannot deliver
- Say whether the writing step ran for real or on sample text. Check that every figure, quote and link matches its source, and drop any that does not
In my version
- Claude Code on a daily schedule, a plan in my notes
Built it? Tell Cassie.
Save planLumen
Likely causechampion left in August; the new owner never had onboarding.
Speak toSam O. (new owner), not the old contact.
Offera one-hour setup session (worked at Brightwell in June).
Do not say"we noticed your usage dropped"; it landed badly at Marlow.
3Tell me who I've lost touch with
Everyone I talk to gets a closeness level from email, texts, WhatsApp and calls.
Details
Fall below the target I set and my assistant flags it, for maximum guilt.
Ask first
- Which channels may it read? (default mail and texts; add chat apps and the call log if available)
- Who is in scope, and who is left out? (default everyone you have exchanged messages with; leave out household members and yourself)
- What target level does each person you care about get? (default none set; the list is empty until you set some)
- How many people on the list? (default 10)
- How often? (default twice a day)
- Where should it show? (default a table on a page you open daily; a weekly message if none)
Needs
- A contact list that merges each person's email address, phone number and chat handles into one record. Contacts rarely do this on their own: build the merge first, and report people who appear under two records.
- The channels above, as a log of interactions: contact, channel, timestamp, direction.
- A small table for scores and targets, and a page that shows a table.
- Connecting: "It counts when you and each person last spoke; it never reads message content or sends anything."
- If your assistant can only chat: tell it "spoke to X today" and keep a list of targets; it keeps the dates and answers "who am I overdue with?"
Build
- Read: on each run, import new messages and calls since the last import as interactions.
- Decide (level): a ladder of seven levels, inner circle, close, active, familiar, casual, fading, dormant. Score each person from interaction count and recency, weighting the last 30 days most, and map the score to a level. Label the trend warming, steady or cooling by comparing this month's score with last month's.
- Decide (below target): the person sets a target level per contact. Someone is below target when their scored level is lower than the target.
- Decide (order): sort by largest gap in levels, then oldest last contact. Keep the top 10.
- Deliver: a table on the page: rank, name, level, target, time since last contact. Refresh twice a day and after each import. Fallback: a weekly message with the same rows. Never send anything to the people listed.
- Memory: the interaction log and last import stamp; a person drops off once a new interaction lifts them to target. No model calls; this is arithmetic.
Check
- Run with today's imports: someone you spoke to today is not on the list; someone with a high target and months of silence is near the top.
- Raise a target and they appear; lower it and they go.
- Quiet run: a run with no new messages leaves the table unchanged and moves the import stamp; the first real run shows as the stamp.
In my version
- Q, my assistant, on my Mac, scores everyone twice a day from Gmail, iMessage, WhatsApp and the call log. Seven levels. Anyone below target can raise a "may need attention" alert, and I can ask Q who I'm losing touch with.
Built it? Tell Cassie.
Cassie's assistant
You: Who am I losing touch with?
Assistant: Dana Whitfield, Inner circle, target Close, last spoke 11 weeks ago. Omar Reyes, Familiar, target Active, last spoke 9 weeks ago.
4Flag churn risk early
Accounts that look like they may leave, with the reasons: usage down, a key person gone, tickets rising, no reply.
Details
A short list with one suggested step each.
Ask first
- What signs matter to you? (default logins down 30% over 30 days, a ticket open more than 7 days, no reply to two emails in 10 working days, or a named contact leaving)
- How many reasons make an account at risk? (default two)
Needs
- Read access to usage, tickets and mail, or an export you paste in
- If your assistant cannot read one of these, paste it when it asks. A thinner version still works
- Any password or token is entered by you into your device's secure store, never pasted into a chat or saved in a plain file
Build
- Each morning, check each account for the signs.
- List accounts with two or more, with each reason and its number.
- Add one suggested step. Never contact anyone.
- Send nothing on a quiet day.
Check
- Run it on an account that churned; it would have been flagged
- Confirm each reason has a figure and a date
- Say whether the writing step ran for real or on sample text. Check that every figure, quote and link matches its source, and drop any that does not
In my version
- Claude Code on a daily 8am schedule, a message when something changed
Built it? Tell Cassie.
Risk, Thu
Lumenlogins down 40% since September, champion left in August, two tickets open 12 days.
Suggesteda call with the new owner this week.
WatchBrightwell tickets up from 2 to 7.
5Warn me when a customer's wording turns
Notice when a customer's language changes over a thread, from curious to frustrated, short and formal, or mentioning a rival, and flag it before they say they are leaving.
Details
A short list with the lines that changed.
Ask first
- Which customers? (default your top twenty by value)
- What counts as a shift? (default two signs in one month: tone, reply speed, or a rival named)
Needs
- Read access to customer threads, or paste the last 30 days for each
- If your assistant cannot read one of these, paste it when it asks. A thinner version still works
- Any password or token is entered by you into your device's secure store, never pasted into a chat or saved in a plain file
Build
- Each morning, read each watched customer's threads for the last 90 days.
- Compare the last two weeks with the earlier weeks on tone, reply speed and whether a rival is named.
- Flag a customer with two or more signs. Quote the lines that changed, with dates.
- Suggest one human next step. Send nothing on a quiet day.
Check
- Run it on a customer who later left; it would have flagged them with real quotes
- Confirm a customer with a one-off short reply is not flagged
- Say whether the writing step ran for real or on sample text. Check that every figure, quote and link matches its source, and drop any that does not
In my version
- Claude Code on a daily 8am schedule, a message only when something shifted
Built it? Tell Cassie.
Tone watch, Thu
Lumen (Sam O.): in September "love the new reports"; this week "as I said before" and "we are looking at options." Replies are down from daily to weekly.
Suggesta call from you, not another email.
Brightwellno change.
6Turn the week's calls and tickets into themes
What customers actually said this week, grouped into themes with a count and one quote each: what confused them, what they asked for, what nearly made them leave.
Details
Ask first
- Which of these do you have? Pick any: your notes from calls, the messages customers send you, a support inbox or help desk. (default the ones you have, from the last seven days)
- How can I tell a customer's message from other mail? A folder, a label or a list of their email domains works. (default anyone outside your own company)
- Where should it land? (default a page in your notes)
Needs
- Read access to the sources
- A running list of themes so a theme keeps the same name week to week
- If your assistant cannot read one of these, paste it when it asks. A thinner version still works
- Any password or token is entered by you into your device's secure store, never pasted into a chat or saved in a plain file
Build
- Every Friday afternoon, collect every customer message from the last seven days.
- Group them into themes. Reuse last week's names where the theme is the same.
- For each theme: a count of messages that support it with the customers listed beside it, one real quote with its source, and a label. New means it was not in last week's list; growing means more messages than last week; fading means fewer.
- Put the strongest three at the top, ranked by messages then by number of customers. Never invent a quote. If a customer's exact words are not in your notes, mark that line as paraphrase.
- Save the theme list for next week.
Check
- Run it on last week; every quote matches a real message
- Confirm a theme from last week keeps the same name
- Confirm a paraphrase is never shown as a quote
- Say whether the writing step ran for real or on sample text. Check that every figure, quote and link matches its source, and drop any that does not
In my version
- Claude Code on a Friday afternoon schedule, a page in my notes and a link in my weekly update
Built it? Tell Cassie.
Themes, week of 12 Oct (31 conversations)
1Setup is confusing (9): "I could not find where to add my second user."
2Wants export to a spreadsheet (6): "Our finance team lives in Excel."
3Price came up (4): "Hard to justify at five seats."
New this weekSSO requested by two accounts.
7Draft a quarterly review from usage
A first draft for the customer: how they used us this quarter, results, what we fixed for them, and what is next, in a form I can edit and send myself.
Details
Ask first
- Which customers get a review? (default your top ten)
- Who edits and sends it? (default you)
Needs
- Read access to usage and tickets, or paste them in
- If your assistant cannot read one of these, paste it when it asks. A thinner version still works
- Any password or token is entered by you into your device's secure store, never pasted into a chat or saved in a plain file
Build
- Collect the quarter's usage and tickets.
- Write what they achieved with plain figures.
- List what was fixed and what is coming.
- Leave a draft for you. Never send.
Check
- Run it on last quarter; every figure matches
- Confirm nothing is promised that is not on the roadmap
- Say whether the writing step ran for real or on sample text. Check that every figure, quote and link matches its source, and drop any that does not
In my version
- Claude Code on a quarterly schedule, a draft in my documents
Built it? Tell Cassie.
Quarterly reviewBrightwell, Q3
Use41 of 50 seats active, up from 33.
Resultsweekly reports built 212, up 30%.
Fixedexport and the login outage.
Nextsingle sign-on in Q4.
8Digest the week's support escalations
The week's escalations in one page: who, what broke, how long it took, whether it is fixed, and what is still open.
Details
Ask first
- Where do escalations come in? (an inbox, a help desk)
- What counts as an escalation? (default marked urgent or open over three days)
Needs
- Read access to the support inbox or a pasted export
- If your assistant cannot read one of these, paste it when it asks. A thinner version still works
- Any password or token is entered by you into your device's secure store, never pasted into a chat or saved in a plain file
Build
- Each Friday, list escalations raised or still open.
- For each: who, what, time to fix and status.
- Group into fixed and open. Show days open for each open one.
Check
- Run it on last week; counts match your inbox
- Confirm an open item shows its age
- Say whether the writing step ran for real or on sample text. Check that every figure, quote and link matches its source, and drop any that does not
In my version
- Claude Code on a Friday schedule, a page in my notes
Built it? Tell Cassie.
Escalations, week of 12 Oct (5)
Fixed (3): login outage (Brightwell, 6h), export timeout (Lumen), wrong invoice (Marlow).
Open (2): report filter bug (Fieldstone, 4 days), data import (Northwind).
9Brief me before every external meeting
A one-page brief for each meeting with someone outside my company: who is in the room, where we left it last time, what each side owes, and what they have posted lately.
Details
Ask first
- Which meetings count? (default any event with an attendee whose email domain is not yours)
- How long before should it arrive? (default 30 minutes)
- Where should it land? (default a page in your notes, linked from the event)
- Which sources may it read about the attendees? (default your own mail and notes, plus their public profiles)
Needs
- Read access to your calendar, inbox and notes
- A way to write a page and attach its link to the event
- If your assistant cannot read one of these, paste it when it asks. A thinner version still works
- Any password or token is entered by you into your device's secure store, never pasted into a chat or saved in a plain file
Build
- Every 15 minutes, look at the next 45 minutes of your calendar for events with an outside attendee that have no brief yet. Outside means an email domain that is not yours.
- For each, find the last three threads and notes involving those people.
- Write a page: who is in the room, where you left it, what each side owes (read from your promises list if you keep one), anything new about them, one open question.
- Keep it under 150 words. If you have no history, say so and give one fact about the company.
- Never contact the attendees.
Check
- Run it on a past meeting you remember; it names the thing you promised and did not do
- Confirm no sentence states something it could not find in your mail or notes
- Confirm an internal-only meeting gets no brief
- Say whether the writing step ran for real or on sample text. Check that every figure, quote and link matches its source, and drop any that does not
In my version
- Claude Code on a 15-minute schedule, a page written into my notes thirty minutes before each external meeting
Built it? Tell Cassie.
Tue 10:30, Harbor & Vale, second call
In the roomDana Ortiz, Head of Ops; Luis Chen, IT.
Last timeDana asked about single sign-on. You said you would bring an engineer. You did not.
Since thenthey posted a job for a revenue ops lead.
Openpricing for 40 seats was never sent.
10Draft the follow-up after every call
A draft follow-up waits in my drafts within two hours: what we agreed, who does what by when, and the one question I still need answered.
Details
Nothing is sent without me.
Ask first
- Which calls count? (default any call you have notes for)
- Whose voice should the draft use? (default yours, learned from your last 20 sent emails)
- How soon after the call? (default within two hours, checked hourly on weekdays)
Needs
- Your notes from each call, or a written-up recording, and a way to find the email thread for the person
- Permission to create a draft only, never to send
- If your assistant cannot read one of these, paste it when it asks. A thinner version still works
- Any password or token is entered by you into your device's secure store, never pasted into a chat or saved in a plain file
Build
- Every hour on weekdays, find calendar events that ended in the last two hours and have notes. A call has ended when its calendar event has ended.
- Find the email thread with the attendees. If there is none, start a new draft addressed to them.
- From the notes, list what was agreed, who owns each item and by when, and one open question. If the notes say nothing was agreed, say so on the first line of the draft and do not invent next steps.
- Write a short reply in your voice as a draft on that thread. Never send it.
- Add each commitment you made in the draft to the promises list, so it is tracked from the moment you hang up.
Check
- Run it on yesterday's call; every commitment in the draft appears in your notes
- Confirm the draft is in drafts and nothing was sent
- Confirm each commitment also appears on the promises list
- Say whether the writing step ran for real or on sample text. Check that every figure, quote and link matches its source, and drop any that does not
In my version
- Claude Code on an hourly weekday schedule, a draft left on the existing thread and each commitment added to my promises list
Built it? Tell Cassie.
Thanks for today, next steps
Hi Priya, thanks for the time. As agreed: I will send the revised terms by Friday; you will confirm the start date with your team. One question: is the 12 June start fixed, or can it move a week?
Best, Rita
11Prepare each renewal
Two months before a renewal, a one-page pack: what they use, what they asked for, what went wrong, what we delivered, and the three questions to ask.
Details
Ask first
- How far ahead should it prepare? (default 60 days)
- Where do renewal dates live? (default your accounts list or the calendar; if neither, ask for the date)
Needs
- Read access to accounts, usage and tickets, or paste them in
- If your assistant cannot read one of these, paste it when it asks. A thinner version still works
- Any password or token is entered by you into your device's secure store, never pasted into a chat or saved in a plain file
Build
- Sixty days before each renewal date, collect usage, asks and problems.
- Match what they asked for to what shipped.
- Write the pack and three questions.
- Mark anything missing.
Check
- Run it on a past renewal; each fact is in the source
- Confirm the three questions follow from the facts
- Say whether the writing step ran for real or on sample text. Check that every figure, quote and link matches its source, and drop any that does not
In my version
- Claude Code on a daily schedule, a pack in my notes
Built it? Tell Cassie.
Renewal packBrightwell (renews 18 Dec)
Use41 of 50 seats active.
Asked forexport to a spreadsheet (shipped 3 Oct).
Went wronglogin outage 22 Sep.
Askwho owns the budget? Will they add seats? Anything blocking a two-year term?