Sales Territory Aside—Whitespace Analysis: How to Find Untapped Revenue in Your B2B Account Base
By Rick Elmore ·
Every company I audit is sitting on revenue it already earned the right to win. Not new logos. Not cold outbound. Expansion revenue inside accounts that already trust you, already pay you, and already have three other problems you could solve. Most sales teams walk right past it because nobody built a system to see it.
I watched this play out at a mid-market SaaS company last year. They had 400 customers, a solid AE team, and a growth number they kept missing. When we mapped what each account actually owned against what they were eligible to own, the picture was almost comical. Their best-fit enterprise accounts were running on a single product line. The expansion was right there. Nobody had the map.
That map is whitespace analysis. Done right, it turns your customer base into a ranked pipeline of expansion plays your AEs can work this quarter.
- Whitespace analysis is the systematic process of comparing what each account owns to what they could own, then scoring and prioritizing the gaps.
- The foundation is a clean account-by-product matrix — not a dashboard, a data model.
- Not all whitespace is equal. Score it by fit, propensity, and revenue potential so AEs work the best plays first.
- The output should be an opportunity, not a spreadsheet. Hand reps a named play with context, not raw data to interpret.
- This is a RevOps function that compounds. Once the model runs, expansion becomes a repeatable motion instead of a lucky conversation.
What is whitespace analysis?
Whitespace analysis is how you find the unsold gaps across your existing account base. You take every customer, lay out every product or module you sell, and mark what they own versus what they don't. The empty cells — the whitespace — are your expansion opportunities.
The concept is simple. Most companies fail at the execution because they treat it as a one-time slide instead of a living system. Someone in ops builds a heatmap for the QBR, everyone nods, and nothing changes because the data was stale by the time it hit the deck and no rep knew what to do with it.
The point of whitespace analysis is not to admire the gaps. It's to route the highest-value ones to the person who can close them, with enough context that they actually act. That distinction is everything, and it's where RevOps earns its keep.
Start with the data model, not the dashboard
Before you score anything, you need a matrix. Rows are accounts. Columns are your products, modules, tiers, or service lines. Each cell answers one question: does this account own this thing, yes or no?
Sounds trivial. It isn't, because the data lives in three or four systems that don't agree with each other. Your CRM knows what deals closed. Your billing system knows what's actually being paid for. Your product analytics knows what's actually being used. These three rarely match. An account might show a closed-won for a module in the CRM that they churned out of six months ago and nobody updated the record.
So the first real work is reconciliation. I anchor the "owns" definition to billing data, because money is the least ambiguous signal. If they're paying for it, they own it. Then I layer usage on top, because an account that pays for a product but doesn't use it isn't whitespace — it's a retention risk wearing an expansion costume, and it needs a different play entirely.
Once you have a trustworthy account-by-product matrix, you have a foundation. Every empty cell is a candidate. Now you rank them.
How to score whitespace so AEs work the right plays first
A blank cell is not an opportunity until you've decided it's worth chasing. A 20-person account will never buy your enterprise governance module no matter how empty that cell looks. Scoring separates the real plays from the noise.
I score every whitespace cell on three dimensions. Keep it simple enough that a human can sanity-check any score in ten seconds.
Fit
Does this product even make sense for this account? Fit is about the account's shape — size, industry, tech stack, use case. A logistics company probably has no use for your marketing attribution module. Fit is your first filter, and it kills a huge chunk of theoretical whitespace before you waste a rep's time on it. Build fit rules from your best existing customers for each product. If your top 20 buyers of a module share three traits, those traits define fit.
Propensity
Fit tells you whether they could buy. Propensity tells you whether they're likely to, and soon. This is where behavioral and relationship signals matter: how healthy is the account, are they expanding usage on what they already own, did they recently hit a limit or tier ceiling, is there an active champion, did they visit a relevant pricing page. Accounts that are already growing with you convert on expansion at far higher rates than accounts that are flat or shrinking. Weight that heavily.
Revenue potential
Some gaps are worth ten times others. A module that adds a few hundred dollars a month is not the same play as a platform tier that doubles the contract. Estimate the expansion value of each cell using your actual pricing and comparable accounts of similar size. This is the dimension that keeps reps from spending a week landing a rounding error.
Combine the three into a single priority score. I keep the math transparent — a weighted sum works fine, and transparency matters more than statistical elegance because reps trust scores they can understand. Here's the shape of it:
| Dimension | Question it answers | Example signals | Typical weight |
|---|---|---|---|
| Fit | Could this account use this product? | Company size, industry, tech stack, use case match | High (hard filter) |
| Propensity | Are they likely to buy soon? | Account health, usage growth, tier ceilings hit, active champion, buying-intent signals | High |
| Revenue potential | Is it worth the effort? | Estimated ACV of the module, account size, comparable deals | Medium |
The result is a ranked list. Not "here are all the gaps," but "here are the 40 highest-value, most-likely-to-close expansion plays in the base right now." That list is the product.
Turn scores into plays your reps will actually run
Here's where most whitespace projects die. Ops builds a beautiful scored model, drops a spreadsheet in a shared drive, and expects AEs to mine it. They won't. Reps don't work spreadsheets, they work opportunities. If you hand a busy AE 200 rows of scored cells, you've handed them homework, and homework doesn't get done.
The fix is to package each high-priority cell as a named play with everything the rep needs to open the conversation. That means: the account, the specific product gap, why now (the propensity signal that triggered it), the estimated value, who the likely champion is, and a suggested angle. When a rep opens their CRM and sees "Acme Corp is on Growth tier, hit their seat limit twice last month, no advanced reporting module — est. $18K ARR, talk to Dana who requested exports in March," that's a call they'll make today.
This is exactly where an AI-native revenue engine changes the economics. The scoring model can run continuously against live data instead of quarterly. When an account crosses a propensity threshold — usage spikes, a limit gets hit, a relevant page gets visited — an AI agent can generate the play, draft the outreach with real account context, and drop it into the rep's queue automatically. The whitespace stops being a static report and becomes a stream of timed, prioritized opportunities. That's the difference between analysis and a system, and it's what we build for teams inside our RevOps and automation packages.
Who owns whitespace analysis?
This is a RevOps function, full stop. Sales owns the conversations, but sales should not own building and maintaining the model. Ask a quota-carrying AE to reconcile billing and usage data across systems and you'll get neither good data nor good selling.
RevOps owns the data model, the scoring logic, and the routing. Marketing feeds in intent signals. Customer success flags health and expansion readiness. AEs and account managers run the plays and close them. The handoff has to be clean: RevOps delivers a ranked, contextualized opportunity, and the rep's only job is to advance it. When that division of labor is clear, whitespace analysis stops being a project and becomes part of how revenue gets made every quarter.
Common ways this goes sideways
A few failure patterns show up again and again. The first is trusting dirty CRM data as your ownership source — always anchor to billing. The second is scoring on fit alone and ignoring timing, which floods reps with technically-eligible accounts that have no reason to buy now. The third, and the most common, is building the analysis once and never refreshing it. Whitespace is a moving target. Accounts grow, hit ceilings, add champions, and change shape constantly. A quarterly snapshot misses most of the good windows.
The last one is the quiet killer: no accountability. If nobody measures how many whitespace plays get worked and closed, the whole thing decays into a report nobody reads. Track it like a pipeline. Whitespace surfaced, plays created, plays worked, expansion closed. Manage it as a motion, not a document.
Frequently asked questions
How is whitespace analysis different from cross-sell reporting?
Cross-sell reporting usually tells you what already happened — how much you've upsold, to whom. Whitespace analysis is forward-looking. It maps what each account could still buy, scores those gaps by likelihood and value, and produces a prioritized list of expansion plays to work next. One is a rearview mirror, the other is a windshield.
What data do I need to start a whitespace analysis?
At minimum: a clean list of accounts, your full product or module catalog, and a reliable source for what each account currently owns — billing data is best. To score well you'll also want account attributes for fit, usage or engagement data for propensity, and pricing to estimate revenue potential. You can start with the ownership matrix alone and layer scoring in as your data improves.
How often should whitespace analysis be refreshed?
As close to continuously as your systems allow. Quarterly snapshots miss the timing windows that drive expansion — an account hits a usage ceiling in week two and you don't find out until the next QBR. If you can run the model against live data with automated triggers, you catch the moment intent is highest, which is when these plays actually close.
If you're sitting on an account base you suspect is under-monetized, we can map the whitespace, build the scoring model, and wire the plays straight into your reps' workflow. Book a Revenue Systems Audit and we'll show you where the untapped revenue is hiding.