How to Find Expansion Opportunities in Accounts with AI: The Signals, the Score, the Alert and the Play
How AI finds expansion opportunities in accounts: six signals, a score that explains itself, weekly lists, instant alerts, the play — and why a CSM sends.
Written by Max Zeshut
Founder at Agentmelt
TL;DR: AI finds expansion opportunities in accounts by reading the signals that precede an upsell — seat utilisation above 80–90%, usage growing three months running, adoption spreading to new teams, an approaching plan limit, an admin on the pricing page, support questions about a higher tier — combining them into a score that explains itself, and putting five to ten accounts in front of each CSM every Monday with the signal that put them there and the play to run. High-value signals trigger an alert the same hour. What the AI does not do is send the upsell email: the CSM reads why the account is on the list, edits the opener, and decides when. A first version runs from a free template if you have someone who enjoys the tools; installed for you it is live within two working days of access.
Buildable version: the expansion opportunity detection workflow — what arrives, what happens, who sends, a free template, and the price to have it run for you.
Why expansion is found late
Upsell conversations mostly happen when the customer asks — usually at renewal, when your leverage is lowest — because a CSM managing 40–80 accounts cannot watch usage for all of them. The playbook exists on paper; it is executed for the accounts someone happened to look at. The fix is not a bigger dashboard. It is a process that does the looking, every week, for every account, and hands over a short list.
Step 1 — Pick the signals
Across SaaS businesses the same handful of signals precede expansion. Start with these; drop the ones your data cannot support.
| Signal | What it says | Where it lives | Strength |
|---|---|---|---|
| Seat utilisation above 80–90% of the purchased amount | They are about to run out of what they bought | Your product's admin data or the billing system | Strong |
| Usage growing month over month for three months | The product is becoming a habit, not a trial | Product analytics (Amplitude, Mixpanel, Pendo) | Strong |
| Adoption spreading to new teams or departments | The next buyer inside the account already exists | Analytics, grouped by team or domain | Strong |
| Hitting or approaching a plan limit — storage, projects, usage | A concrete reason to upgrade, with a date | Product data or billing events | Strong, time-bound |
| An admin visiting the pricing page | They are already thinking about it | Web analytics tied to the CRM contact | Medium, time-bound |
| Support questions about features on a higher tier | They want something they do not have | Help desk tickets, classified | Medium |
| A funding round, a hiring spike | Budget and headcount are arriving | Firmographic data, news | Weak — useful for timing only |
Two signals are missing on purpose: NPS and "logged in recently". Both correlate with health, not with expansion, and mixing them in is how an expansion score turns into a health score with a different name. If you want the difference in one line: health asks will they stay, expansion asks are they growing. Keep them as two scores; the customer health scoring workflow is the other one.
Step 2 — Get the data into one place
The score needs three feeds: product usage per account (the analytics tool), the commercial record (the CRM — plan, seats bought, renewal date, owner) and the engagement signals (web analytics for the pricing page, the help desk for tier questions). If you do not have product analytics, seat counts and plan limits from the billing system plus support tickets are enough to start; the score is narrower, not useless.
The workflow pulls all three on a weekly schedule and keeps a per-account row with the raw numbers, so every score can be traced back to what produced it.
Step 3 — Build a score that explains itself
The score is a weighted sum of the signals, and the weights should come from your own history: which signals were present in the accounts that expanded in the last four quarters, and absent in the ones that did not? If you have no history yet, start with equal weights on the strong signals, half on the medium ones, a quarter on the weak, and let the outcome tracking in Step 7 correct you.
Three rules keep the score honest:
- Every account shows its signals. "Score 84" is useless; "at 92% of seat limit, three new departments active in the last month" is a conversation opener.
- Exclude the accounts where an upsell would be tone-deaf. An open escalation, a churn-risk flag, a renewal inside 30 days — those are routed to a different play or left alone, whatever the score says.
- Weights are versioned and owned by RevOps, reviewed quarterly against outcomes, not embedded in a prompt.
Step 4 — Match each account to a play
A score without a next action is a report. Each band and signal combination maps to a play the team already has: seat-limit accounts get the "add seats before you hit the wall" conversation; new-department adoption gets an introduction to the wider rollout; tier-feature questions get a walkthrough of the feature with the upgrade as the ending. The agent drafts the opener for the play — in the CSM's voice, referencing the actual signal — and attaches it to the account row.
Step 5 — The weekly list and the instant alert
Two rhythms, because signals have two speeds:
- Every Monday, each CSM opens a list of five to ten accounts ranked by readiness, each with its signals and its drafted opener. Not fifty — the point is that the list is finished by lunchtime.
- Instantly, for the time-bound signals: an account hits a plan limit or an admin opens the pricing page, and the owner gets a message in Slack or Teams within the hour with the same context. This is the "automated alert when a customer shows expansion signals" that most teams ask for, and it works because it is rare — a handful a week, not a feed.
Both go to the account owner, with the draft, in the tool they already live in. Nothing goes to the customer.
Step 6 — The CSM sends
Automated upsell emails fired from a usage trigger feel like a vending machine and cost you the relationship that makes expansion easy. The workflow's output is a list and a draft, not a send. The CSM reads why the account is on the list, edits the opener so it sounds like them, and picks the moment. What the workflow removed is the reading — the hours of scanning dashboards to find the five accounts worth a conversation this week.
Step 7 — Track outcomes by signal, and tune
Every listed account gets an outcome: conversation held, opportunity created, closed won or lost, or ignored. After a quarter you know which signals predicted expansion for your customers and which produced awkward calls, and the weights move. That feedback loop is the difference between a score that gets better and a dashboard everyone learns to ignore.
What to expect
| Metric | Before | After a quarter | What moves it |
|---|---|---|---|
| Accounts a CSM reviews for expansion each week | whatever they happened to open | five to ten, ranked, with the signal | The exclusion rules — the list is only trusted if it never contains the escalated account |
| Time from a signal to a conversation | until renewal | the same week; the same hour for plan limits | Whether owners act on the Monday list; the report shows who does |
| Expansion opportunities created per quarter | reactive, from inbound asks | measurably more — count them in the CRM against the previous quarter | Signal quality and the plays; tune from outcomes, not from feel |
| Upsell emails sent by a machine | 0 | 0, by design | — |
The number that matters is expansion pipeline created per quarter, and only your CRM has it. Compare the quarter after the install with the quarter before, per CSM; the outcome tracking in the workflow gives you the same number by signal.
Questions, answered
How can AI help identify expansion opportunities in accounts?
By reading the signals that precede expansion — seat utilisation, usage growth, adoption spreading to new teams, approaching plan limits, pricing-page visits, support questions about higher-tier features — every week for every account, combining them into a score that lists its own reasons, excluding accounts with an escalation or a near renewal, and handing each CSM a ranked short list with a drafted opener. The AI finds and drafts; the CSM decides and sends.
How can I get automated alerts when customers show expansion opportunities?
Two kinds: a weekly ranked list per CSM for the slow signals (utilisation, growth, adoption), and an instant message in Slack or Teams for the fast ones — an account hitting a plan limit, an admin opening the pricing page. The alert carries the signal and a drafted opener and goes to the account owner, never to the customer. It works because it is rare: a handful a week.
Is there an AI that can automatically identify expansion opportunities?
Yes, in two forms. Customer-success platforms such as Gainsight, ChurnZero and Totango include expansion or "growth" scoring as a feature, priced per seat or per account. A workflow installed in your own analytics and CRM does the same scoring with your weights and your plays, at a flat monthly price, with a free template if you would rather build it. Either way, the honest version surfaces and drafts; it does not send.
How is expansion opportunity detection different from a customer health score?
Health asks whether the account will stay; expansion asks whether it is growing. They share some data and none of their weights: a healthy account with flat usage is not an expansion candidate, and an account growing fast with an open escalation is not one either. Keep them as two scores, and let the health score's churn-risk flag exclude accounts from the expansion list.