This page is the operational half of the ICP-driven content gap analysis framework - it covers stages 1, 2, 4, and 5 of that framework's six-stage overview: validating the ICP you're scoring against, collecting candidate gaps from more than keyword tools, scoring what you find, and deciding what to actually do about each gap. Stage 3 (classifying gap types) is covered on the main framework page; stage 6 (measuring content-market fit) has its own page, Measuring Content-Market Fit.
Start With a Validated ICP, Not an Assumed One
Before scoring a single content gap, confirm the ICP you're scoring against actually matches who's buying and staying - not who marketing assumed would buy when the ICP was first written.
Build or refresh it from four inputs: CRM data on your existing accounts, closed-won and retention patterns (which accounts actually convert and stick, not just which ones you pitched), direct input from sales calls, and customer interviews. A firmographic/contact database like Apollo can help here - it filters companies by industry, employee count, buying intent, and other firmographic attributes, and its Lookalikes feature can also filter by revenue - but it's a way to check your CRM's account list against a firmographic filter, not a substitute for the CRM data itself. If your ICP was last defined more than a year ago, or was written before you had enough closed-won accounts to pattern-match against, treat this step as mandatory rather than optional.
Step 1 - Collect Candidate Gaps Across Relevant Sources
A gap list built only from a keyword-gap tool will only ever surface gaps that show up in keyword data. No workflow can literally cover every source, but this mix is a reasonable floor. Pull from all of the following, then combine them into one raw list before any scoring happens - and dedupe as you go: several sources will often point at the same underlying need phrased differently, so merge equivalent candidates into one row and keep every contributing source and evidence link attached to it, rather than scoring near-duplicates separately.
Search Console. Use the query, page, country, device, and search-appearance filters to find meaningful impressions paired with low clicks or a weaker position, comparing like-for-like time periods. Treat those rows as an investigation queue, not a finished list of gaps: Search Console's own documentation defines average position as the topmost ranking position for a page, averaged across all the queries it appears for, so a "weak" number can mean several different things, and low CTR can reflect the ranking position, query intent, or how the title and snippet actually display - not only weak or missing page content.
GA4. Review engagement and conversion behavior on existing content, not just traffic. If your analytics or data-warehouse setup carries an approved account-, company-, or ICP-segment-level property, break performance out by that segment - but GA4 doesn't know a visitor's company or ICP tier on its own. Google's own documentation is explicit that properties beyond a small automatically-logged set have to be deliberately configured and, for anything account-level, typically sent in server-side via the Measurement Protocol. Treat weak conversion on a page as a signal to investigate alongside traffic source, intent, offer, UX, and tracking quality - not as proof by itself that the content is the problem.
Ahrefs and Semrush. Ahrefs' Content Gap report and Semrush's Keyword Gap tool both start from the same basic mechanism - a side-by-side comparison of up to several competitors' keyword profiles to surface terms they rank for that you don't - and Semrush's separate Keyword Strategy Builder tool goes a step further, clustering keyword opportunities into pillar/subpage groups while weighing relevance, volume, difficulty, and SERP features. All of this is candidate-generation input, not a finished, ICP-scored list.
Sales calls and customer interviews. This is where you find the questions your ICP actually asks that never show up in any tool, because the aggregate search volume is too small to register. A repeated objection or question across unrelated sales calls is a strong qualitative signal for a narrow B2B SaaS ICP, especially once CRM outcomes or customer interviews corroborate it - but treat a handful of calls as a trigger to validate further, not a universal sample-size rule or an automatic reason to outrank a real search-demand opportunity. Call notes can also overrepresent one salesperson, one active segment, or late-stage prospects.
Support tickets and onboarding questions. Existing customers surface gaps too. This channel can expose missing proof, an unusable format, weak discoverability, unclear implementation guidance, or a topic the pre-sale content never addressed at all - it's not limited to any one gap type.
In our Letaido workspace, we configure recurring competitor-monitoring and keyword-research workflows so the team isn't re-running the same manual exports every month. Letaido is the automation layer over the tools above, not a separate source of ICP evidence, and it doesn't do the scoring described in Step 3.
Step 2 - Segment and Tag by ICP Tier, Vertical, and Firmographics
Before scoring, tag every candidate gap against your ICP tiers, the verticals you serve, and the buying-committee role it would need to speak to. The main framework page's gap taxonomy (account-fit, buying-role, journey-stage, proof, format, and discoverability gaps) is the vocabulary to tag with - this page assumes you're using it rather than re-explaining it here.
In practice this is a spreadsheet column, not a separate tool: ICP tier (your top-tier accounts vs. a broader qualified segment), vertical (if you serve more than one), and gap type. A gap can be a perfect account-fit match and still be the wrong format, or a strong fit for one buying-committee role and irrelevant to another - tag for both, not just topic.
Step 3 - Score Each Candidate
Weigh five factors together for every tagged gap, rather than defaulting to whichever one is easiest to pull a number for: ICP fit (does this match your top-tier accounts, not just your broadest qualified segment), buyer need (how directly does it answer a real question from sales calls or interviews), commercial relevance (does it sit near a stage where content plausibly influences a deal), evidence strength (can you actually support the claims this content would need to make), and search opportunity (volume and difficulty, weighted last rather than first).
This is CoreAEX's own practical rubric, not a published or peer-reviewed scoring model - there's no industry-standard formula for weighting these five factors, and the right weighting will shift by ICP tier. Score each factor 1-3 using the anchors below as a starting point, not a fixed formula - recalibrate them for your own ICP tiers:
| Factor | 1 | 2 | 3 |
|---|---|---|---|
| ICP fit | Adjacent audience | Qualified segment | Priority ICP tier or named-account pattern |
| Buyer need | Hypothesized | One credible signal | Repeated and corroborated across independent inputs |
| Commercial relevance | Distant awareness | Supports evaluation | Directly affects selection, risk, expansion, or retention |
| Evidence strength | Weak or unavailable | Credible external or limited first-party evidence | Strong first-party proof plus supportable external context |
| Search opportunity | Low or uncertain | Moderate | Strong relative opportunity, after checking intent, competition, and SERP composition |
On "weighted last": treat search opportunity as a tiebreaker between two candidates that score similarly on the other four factors, not as a fifth vote with equal power to override weak ICP fit or buyer need. A candidate with strong ICP fit and buyer need but a low search-opportunity score is still a build candidate; a candidate with high search opportunity but weak ICP fit and buyer need generally isn't - that asymmetry is the actual point of scoring by fit before volume, and it's worth stating as a rule rather than leaving it implicit.
The Working Sheet: What One Backlog Row Should Contain
A repeatable process needs a repeatable record, not just a scored idea. Each backlog row should carry: the candidate gap itself; its source(s) and a link to the supporting evidence; ICP tier, vertical, buying role, journey stage, and gap type; the five factor scores, a short rationale for each, and who scored it; any existing URL or competing page it relates to; the proposed editorial action; and a decision reason, an owner, a review date, and the next validation step if the decision was anything short of "create now." That last field is what turns "decline" from a discarded idea back into a monitored one.
Step 4 - Choose the Editorial Action
A scored gap isn't automatically a new page. Five outcomes are on the table for each one:
Create - the gap is real, nothing on the site addresses it, and it's worth a dedicated page.
Update - the topic exists but the content is outdated, thin, or was written before the ICP was this well defined.
Consolidate - several thin or overlapping pages are already fighting over the same gap; merge them instead of adding a sixth variation.
Reformat - the topic is covered adequately, but not in the format the gap actually calls for (a comparison table instead of prose, a template instead of an explainer).
Decline - the gap is real but not worth building for right now, whether because of evidence limits, low commercial relevance, or genuinely being a better fit for a different channel than a published page.
Recording "decline" explicitly, with a reason, matters as much as recording the other four - it's what keeps a volume-sorted backlog from resurrecting the same low-fit topic every quarter because no one wrote down that it was already considered and rejected.
Where AI Fits in This Workflow
Two specific uses, both firsthand practice rather than a general claim about AI and content strategy: we build and run language-model-driven variants (using a mix of Claude, ChatGPT, and Gemini) to A/B test ICP-targeted outbound and cold-messaging copy, and we use the same tools to quickly analyze and break down ICP account data rather than doing that segmentation by hand.
Winning outbound language is a directional signal about which framing earned a response in that channel, with that tested audience - feed it into Step 3's scoring alongside sales calls, interviews, CRM outcomes, and on-site behavior. It isn't proof that the same framing will improve article engagement, organic performance, or AI citations: an email result depends on list quality, deliverability, sender identity, subject line, offer, and timing, among other things specific to that channel, so it doesn't transfer automatically to how the same words perform in a published article.
Data-handling note: don't paste raw CRM exports, call transcripts, personal data, or confidential account details into unapproved consumer AI accounts. Use your organization's approved business or enterprise products, follow the applicable retention and training settings, minimize or de-identify the data first, and confirm your company's security, legal, and data-processing requirements before uploading anything. Business and consumer tiers of the same product can have different default data-handling policies - check which one you're actually using.
This is a sales/outbound-testing practice that feeds the content backlog, not a claim that using AI this way improves search rankings or AI-answer citations - those are separate questions this page isn't making a claim about.
Sources: Ahrefs Academy, "Content Gap", Semrush, "Keyword Gap", and Semrush, "Keyword Strategy Builder" - tool documentation for the competitor-ranking and clustering mechanisms described in Step 1. Search Console's calculation of impressions, position, and CTR is from Google's own Search Console documentation. GA4's user-property behavior is from Google Analytics' own developer documentation. Apollo's filtering capabilities are from Apollo's own "Search for Companies" and "Lookalikes Overview" documentation. Letaido's capabilities are described per Letaido's own product page, which documents workflow automation, reporting, and monitoring features; the specific monitoring schedule described here is our own configured workflow on top of that product, not a named platform feature, and the page does not document ICP-scoring or outreach-testing features, so this page doesn't attribute those to it either. The scoring rubric and score anchors in Step 3 are CoreAEX's own practice, not a cited external framework.
About the author
Zarko Zivkovic is the founder of CoreAEX, building technical SEO, AEO, and AI-visibility systems for B2B SaaS companies. Connect on LinkedIn.