Every keyword in this build now carries a real reason someone typed it.
Gate 1 keyword brief, rev. 3 — Accounting & Tax Brokerage positioning audit. 417 on-category keywords, tagged for side (sell/buy/both/unclear) and motivation (why, not just what) at 100% coverage, up from the 30% seed-traceable slice in the previous revision. 0 rows required a fabricated guess — every non-obvious call is logged with the rule that produced it.
RUN-LOG.md.
This is Phase 1: the keyword universe, not yet the competitive gaps.
Three things worth saying plainly, because all three came up in review of the previous revision.
- “I don’t see any gaps.” Correct — gap files are a Phase 2 deliverable by design.
gap-keywords.csv,gap-ai-overview.csv,gap-serp-features.csv,gap-pages.csv, andgap-metros.csvall depend on Phase 2 calls (domain/competitorsat scale, the SGE-citation checks,domain/pages) that haven’t run yet. What Phase 1 does include — the per-competitor comparison tables in §09 — is adjacent but not the same thing: it’s “what does each competitor rank for that ATB doesn’t,” not yet cross-referenced against AI Overviews, SERP features, or page inventory. - The “ranking changes” view. SE Ranking’s
domain/keywordssupports apos_changefilter (up / down / new / lost / diff / same) — available and cheap. The 12-month trajectory view (domain/overview/history) is Phase 2, step 2.7, and lands in the Competitive Map deliverable. Both are coming, not missing from the plan. - Competitor accuracy. Three domains that ranked at the top of competitor mining —
accountingbroker.com,acctsales.com,prohorizons.com— were pulled into the data in step 1.7 but not correctly named as competitors in the first draft. Named explicitly in §04, with a dedicated identification file so this doesn’t get re-litigated later.
Plain-English definitions for every term used in this brief.
No prior SEO knowledge assumed.
- SGE / AI Overview
- Google’s AI-generated answer block that appears above the normal blue links for many searches now. “SGE” (Search Generative Experience) is Google’s internal/technical name; “AI Overview” is the product name. Same thing.
has_sge: Trueon a keyword means Google showed an AI Overview for that search at the time it was checked. - rank_group
- SE Ranking’s way of grouping multiple listings from the same domain on one results page into a single ranking entry. Belongs to Phase 3’s SERP tracking, not this Phase 1 data — noted here because it’s in the schema.
- position vs. rank_absolute
positionis where a result sits within its own block (e.g. 3rd organic result).rank_absolutecounts every block on the page, ads included.- difficulty
- A 0–100 score estimating how hard it would be to rank on page 1 organically. Higher = well-established competitors already hold the top spots. A relative estimate, not a guarantee.
- intent codes — I / N / T / C / L
- Informational (wants to learn something), Navigational (trying to reach one known site), Transactional (ready to act now), Commercial (comparing options), Local (wants something nearby). A keyword can carry more than one.
- motivation tags
- This audit’s own layer on top of intent, capturing why a searcher is in-market, per PLAN.md Appendix C:
toward_goal(working toward a defined outcome),away_from_pain(escaping a bad situation),expansion(buyer growing an existing footprint),first_time(buyer entering the market),rollup(multi-acquisition consolidation),both(the keyword genuinely reads as more than one motivation at once),n/a(motivation doesn’t apply — branded/navigational or off-category). As of this revision every one of the 417 rows carries one of these, read from the keyword text itself — see §06–07. - motivation_basis
- New this revision.
seed_lineage= the 126 rows that inherit their tag from one of the 8 seeds (PLAN.md Appendix A).keyword_reading= the 291 rows newly classified by reading the keyword text against the rule set in §07.ambiguous= the count where even a careful reading couldn’t support a confident call (0 rows this revision). - branded tags — own / competitor / third_party
- Whether a keyword contains a specific business’s name and is therefore a search for that business, not the service generally.
own= ATB’s own brand terms.competitor= one of the four client-named competitors.third_party= any other named brand, including the three newly-identified competitors. Kept in a separate file (branded.csv), never mixed into service analysis. - breadth
- How many different metros × clusters a domain appears in. A Phase 3 metric (needs the 25-metro SERP sweep); not computable from Phase 1 data alone.
- domain_relevance
- An SE Ranking score (roughly 0–100) estimating how topically focused a domain’s overall keyword footprint is on the category being compared, not just raw overlap count.
- common / missing / total_keywords
total_keywords= everything a domain ranks for, including unrelated topics.common_keywords= overlap with ATB’s own ranking keywords.missing_keywords= total minus common — what the domain ranks for that ATB doesn’t. Used throughout §09.- SERP feature codes
- What else Google shows on a results page beyond blue links. Appearing in this dataset:
sge,featured_snippets,local_pack/gmb,people_also_ask,related_searches,sitelinks,reviews,images/video,knowledge_graph,top_stories,shopping_results,faq,bads/mads/tads(paid ad blocks),discussions_and_forums,digital_complaints, and a handful of rare specialty blocks on off-topic/collision terms.
The keyword universe shrinks by 97% between raw collection and the working list — each drop is counted, not discarded.
Shown as an ordered horizontal bar sequence rather than a Funnel-chart trapezoid: five sequential stages with a genuine shrinking count is the textbook case for both forms (data-viz guide, Category 2 magnitude / Category 7 part-to-whole), but a trapezoid funnel exaggerates the visual drop between stages of very different absolute scale (14,184 → 151 in five steps) in a way a bar sequence, held to a single shared baseline, does not — so magnitude-comparison bars, not a funnel shape, carry the claim here.
The single closest competitor to ATB by keyword overlap was never on the client’s list.
Three domains ranked in the top five by keyword overlap with atbcal.com in the same
33-domain discovery pull that surfaced the four client-named competitors — but weren’t correctly
flagged as competitors in the first draft of this brief. Full detail in competitors-identified.csv.
| Competitor | In 33-domain overlap discovery? | Common keywords | Notes |
|---|---|---|---|
| Business Brokerage Incorporated (BBI) | Yes — as go2bbi.com | 166 | Ranked #2 by overlap. High priority per intake, confirmed by discovery. |
| Accounting Practice Sales | No | 0 | accountingpracticesales.com — verified real, distinct business via direct site fetch. Mined directly, 1,000+ keywords retrieved. |
| Poe Advisors (Poe Group Advisors) | No | 0 | poegroupadvisors.com — verified real, distinct business via direct site fetch. Mined directly. |
| Green Growth CPAs | No | 0 | greengrowthcpas.com — verified real, distinct business via direct site fetch. Mined directly. |
Accounting Practice Sales, Poe Group Advisors, and Green Growth CPAs are real, distinct, verified domains that genuinely show zero organic keyword overlap with atbcal.com in SE Ranking’s US database today — a real finding about ATB’s current organic footprint, not a data-collection gap. All three were mined directly and are folded into every analysis below.
| Domain | Verified name | Common w/ ATB | Rank by overlap | Notes |
|---|---|---|---|---|
| accountingbroker.com | Accounting Broker Acquisition Group | 198 | #1 | Highest of any domain in the dataset. Also the only domain running persistent paid search on this transaction keyword set (36 ads, step 1.9). |
| acctsales.com | ABA Advisors, LLC | 157 | #3 | — |
| prohorizons.com | ProHorizons (Berry Consulting Group, Inc.) | 141 | #5 | CA/OR/WA-focused |
Per PLAN.md Appendix C, the competitor branded tag is reserved for the four
client-named brands — these three are tagged third_party. That’s a tagging mechanic,
not a judgment that they don’t matter: accountingbroker.com is the single closest competitor to ATB
of any domain examined, client-named or not. Carried through §09 on equal footing with the client-named names.
Three domains share ATB’s initials but are unrelated businesses.
Discovered purely on a brand-string coincidence, not topical overlap. Their 228 combined keyword rows are excluded from the on-category set.
| Domain | What it actually is |
|---|---|
| atb-sales.co.uk | A UK bicycle distributor (Whyte, Wilier, Mezzo brands) |
| atbfh.com | ATB Furnished Housing — a Tampa/FL corporate-housing rental company |
| atbonlinebusiness.com | The online-banking login portal for ATB Financial (Alberta Treasury Branch), a Canadian bank |
Also worth flagging: atbcal.com itself ranks weakly (position 33 and 17) for
“atbs” (610 vol.) and “atbs reviews” (210 vol.) — likely coincidental overlap with
ATBS, a trucking/owner-operator bookkeeping brand, not evidence of ATB’s own brand strength. Excluded from
branded.csv for the same reason.
Motivation tagging now covers all 417 keywords — up from 126, with zero forced guesses.
Every keyword’s own text was read against an explicit rule set (right), independent of which API call happened to surface it. Where a keyword already carried a motivation tag inherited from one of the 8 seeds (PLAN.md Appendix A), that tag was never overwritten — a disagreeing reading was logged as a note instead, so the seed lineage stays auditable rather than silently replaced.
The 55 disagreements are expected, not a defect: a seed’s motivation was inherited
wholesale by everything it expanded into (e.g. every descendant of “sell my accounting practice”
carries toward_goal), while reading each descendant’s own text individually sometimes points
elsewhere — “buying accounting firm,” a descendant of a sell-side seed, reads as buy/expansion on
its own text. Both tags are real; the lineage tag is kept per instruction and the disagreement is recorded in the
new motivation_note column, row by row, in all-keywords.csv. One disagreement is worth
naming directly: the seed row “sell my accounting practice” itself is tagged toward_goal
in the file, though PLAN.md Appendix A locks this exact seed at motivation both — the reading-based
rule set reproduces the Appendix A value independently (side=sell, motivation=both), which is what surfaced the
mismatch. Flagged here rather than silently corrected, since overwriting a lineage tag is out of scope for this pass.
away_from_pain and rollup remain at zero keywords even after full reading-based coverage — not a scoring gap. No seed is written to surface distress language (burnout, partner conflict), and no keyword in the 291 newly-read rows contains explicit roll-up/consolidation phrasing either; the dedicated “accounting firm roll-up” seed returned zero rows from every discovery endpoint (see §10, §12). Both values stay schema-valid and empty by data availability, not by omission.
“roll up” / “rollup” / “roll-up”checked first — a rollup keyword would otherwise also match “buy”
“for sale”listing/marketplace framing — the searcher is browsing what’s for sale (PLAN.md Appendix A precedent: “accounting practices for sale” = buy/first_time)
“financing” / “finance” / “loan”capital-seeking language reads as a buyer funding a first acquisition (Appendix A: “financing to buy…” = first_time)
“buy” / “buying” / “purchase” / “acquisition”an active buyer verb reads as an existing operator growing by acquisition (Appendix A: “buy an accounting practice” = buy/expansion)
“succession”—
“merger”—
“valuation” / “value”—
“sell” / “selling” / “seller”generic — can’t distinguish away_from_pain from toward_goal from the bare verb alone (Appendix A: “sell my accounting practice” itself = sell/both)
bare “sale” / “sales” noun, no “for sale” or “sell”reads the same as a listing search (“practice sale,” “accounting sale”)
“broker” / “brokerage”, no further qualifierbrokers serve both sides of a transaction (PLAN.md Appendix D)
branded / navigational (own, competitor, third_party tag)skipped per instruction — a search for a company’s name carries no commercial-side signal, even when the name happens to contain a service word (e.g. the competitor named “Accounting Practice Sales”)
no textual signal at allthe honest outcome when even side can’t be read from the text — 0 rows this build (see §06 count)
Read at full coverage, buy-side motivation outweighs sell-side by volume — the opposite of what the partial view suggested.
At 30% coverage (rev. 2), the tagged sell group (4,400 vol.) and the tagged buy group (4,490 vol.)
looked roughly balanced — that was an artifact of which 126 keywords happened to trace to a seed, not a
property of the niche. At 100% coverage, side=buy totals 224 keywords / 8,710 volume against
side=sell’s 106 keywords / 5,770 volume — buy-side search demand is roughly 51%
larger by volume and more than double the keyword count. ATB is present on a smaller share of buy-side keywords
(80 of 224, 36%) than sell-side (39 of 106, 37%) — roughly even presence rates on a buy-side pool that’s
simply much bigger.
| Motivation | Side | Keywords | Volume |
|---|---|---|---|
| first_time | buy | 196 | 7,310 |
| toward_goal | sell | 76 | 5,140 |
| n/a | unclear | 68 | 2,510 |
| expansion | buy | 24 | 1,360 |
| both | sell | 30 | 630 |
| n/a | both | 12 | 580 |
| both | both | 6 | 70 |
| both | buy | 4 | 40 |
| toward_goal | both | 1 | 10 |
| away_from_pain | — | 0 | 0 |
| rollup | — | 0 | 0 |
Grouped by which page actually shows up, this splits into 11 clusters — the same 417 keywords, a different question.
Where §06–07 ask why someone is searching, this view asks which page, and whose. Both describe the same 417 keywords; neither supersedes the other. Exact-URL clustering was tried first and produced 49–85 fragmented clusters (the same high-value term independently ranks on 10–28 different domains’ pages at once in this niche); what’s used instead groups by type of page a keyword resolves to. 18 on-category keywords never resolved to any ranking page across the 30-domain roster — grouped as cluster 07.
No competitor’s overlap reaches half of ATB’s own keyword footprint — but accountingbroker.com, newly-identified, comes closest of anyone.
Shown as an ordered horizontal bar chart — a Ranking question (data-viz guide, Category 3):
the point is where each domain stands relative to the others, not a precise value, so an ordered bar sorted
descending is the direct fit; a pie would force an angle-judgment the reader doesn’t need to make.
Step 1.8 (domain/keywords/comparison) already ran for all 10; this surfaces that data directly.
atbcal.com is added as an outlined reference bar, scaled to its own
480-keyword total — every competitor bar below is now sized against ATB’s actual footprint, not just
against each other, so the chart answers “how much of ATB’s territory does this domain actually touch”
rather than only ranking competitors amongst themselves.
| Domain | Common | Gap to ATB | ATB-unique (raw) | Competitor total | domain_relevance |
|---|---|---|---|---|---|
| atbcal.com (ATB — self, reference row) | — | — | — | 480 | — |
| accountingbroker.com [newly-identified] | 198 | 185 | 282 | 383 | 14.63 |
| go2bbi.com (BBI, client-named) | 166 | 268 | 314 | 434 | 46.34 |
| acctsales.com [newly-identified] | 157 | 215 | 323 | 372 | 12.2 |
| accountingfirmsold.com | 152 | 138 | 328 | 290 | 14.63 |
| prohorizons.com [newly-identified] | 141 | 256 | 339 | 397 | 34.15 |
| nationalaccountingsales.com | 132 | 91 | 348 | 223 | 7.32 |
| cpasales.com | 94 | 82 | 386 | 176 | 7.32 |
| zbscpas.com | 65 | 182 | 415 | 247 | 2.44 |
| thrivefinancialgrp.com | 27 | 70 | 453 | 97 | 4.88 |
| goodaccountants.com | 10 | 721 | 470 | 731 | 2.44 |
ATB’s 480-keyword total (step 1.6, unique after case-normalizing) is the reference row above
and the outlined bar in the chart — the constant baseline every “ATB-unique” count and every
competitor bar is measured against. Every row cross-checks exactly against domain/competitors’
own common/missing/total fields — an exact reconciliation, not a derived approximation.
| Keyword | Vol | Diff. | CPC | Comp. | Pos. | SERP features |
|---|---|---|---|---|---|---|
| accounting practice exchange | 260 | 13 | $4.10 | 0.56 | 29 | reviews, sitelinks, video, bads |
| cpa practice for sale | 260 | 9 | $0.56 | 0.52 | 14 | reviews, video, people_also_ask, related_searches |
| cpa practices for sale | 260 | 12 | $0.56 | 0.52 | 12 | reviews, video, bads, related_searches |
| broker.com | 210 | 38 | $3.91 | 0.05 | 13 | reviews, video, people_also_ask |
| accounting acquisitions | 170 | 6 | $2.61 | 0.11 | 21 | reviews, video, sge, related_searches |
| Keyword | Vol | Diff. | CPC | Comp. | Pos. | SERP features |
|---|---|---|---|---|---|---|
| sba guarantee fee | 480 | 30 | $3.22 | 0.05 | 25 | reviews, video, people_also_ask, sge |
| sba guaranty fee | 480 | 30 | $3.22 | 0.05 | 24 | reviews, video, people_also_ask, sge |
| advisor business | 410 | 19 | $7.24 | 0.38 | 83 | local_pack, reviews, video, people_also_ask |
| sba guaranty fees | 390 | 16 | $0.66 | 0.04 | 16 | reviews, video, people_also_ask, sge |
| advisor loans | 320 | 10 | $8.45 | 0.53 | 38 | reviews, sitelinks, video, people_also_ask |
| Keyword | Vol | Diff. | CPC | Comp. | Pos. | SERP features |
|---|---|---|---|---|---|---|
| accountancy news | 330 | 57 | $2.30 | 0.07 | 22 | reviews, video, related_searches |
| accountant news | 330 | 51 | $2.30 | 0.07 | 16 | reviews, video, related_searches |
| accountants news | 330 | 53 | $2.30 | 0.07 | 12 | reviews, video, sge, related_searches |
| accounting news | 330 | 51 | $2.30 | 0.07 | 19 | reviews, video, related_searches |
| news in accounting | 330 | 54 | $2.30 | 0.07 | 36 | reviews, video, sge, related_searches |
| Keyword | Vol | Diff. | CPC | Comp. | Pos. | SERP features |
|---|---|---|---|---|---|---|
| bay business group | 590 | 10 | $0.00 | 0.02 | 64 | reviews, sitelinks, video, people_also_ask |
| practice business | 590 | 13 | $8.95 | 0.03 | 57 | video, people_also_ask, sge, related_searches |
| california business broker | 480 | 16 | $4.01 | 0.26 | 38 | local_pack, reviews, video, bads |
| cbb group inc | 140 | 12 | $0.00 | 0.02 | 50 | sitelinks, knowledge_graph, related_searches |
| purchasing a cpa firm | 140 | 18 | $0.84 | 0.54 | 54 | local_pack, reviews, video, people_also_ask |
| Keyword | Vol | Diff. | CPC | Comp. | Pos. | SERP features |
|---|---|---|---|---|---|---|
| new cpa requirements | 260 | 21 | $0.96 | 0.2 | 45 | video, people_also_ask, sge, related_searches |
| new requirements for cpa | 260 | 23 | $0.96 | 0.2 | 56 | video, people_also_ask, sge, related_searches |
| cpa sales practice | 260 | 15 | $0.56 | 0.52 | 30 | reviews, video, people_also_ask, bads |
| buy a cpa firm | 140 | 16 | $0.84 | 0.54 | 19 | local_pack, reviews, video, people_also_ask |
| buy an accounting firm | 140 | 15 | $0.82 | 0.56 | 22 | local_pack, reviews, sitelinks, video |
| Keyword | Vol | Diff. | CPC | Comp. | Pos. | SERP features |
|---|---|---|---|---|---|---|
| businesses for sale medical billing | 320 | 6 | $0.86 | 0.49 | 54 | video, sge, related_searches |
| cpa practice for sale | 260 | 9 | $0.56 | 0.52 | 17 | reviews, video, people_also_ask, related_searches |
| cpa practices for sale | 260 | 12 | $0.56 | 0.52 | 15 | reviews, video, bads, related_searches |
| cpa sales practice | 260 | 15 | $0.56 | 0.52 | 39 | reviews, video, people_also_ask, bads |
| cpa business for sale | 140 | 9 | $0.58 | 0.54 | 18 | local_pack, reviews, video, related_searches |
| Keyword | Vol | Diff. | CPC | Comp. | Pos. | SERP features |
|---|---|---|---|---|---|---|
| accounting practice exchange | 260 | 13 | $4.10 | 0.56 | 19 | reviews, sitelinks, video, bads |
| cpa practice for sale | 260 | 9 | $0.56 | 0.52 | 29 | reviews, video, people_also_ask, related_searches |
| cpa practices for sale | 260 | 12 | $0.56 | 0.52 | 25 | reviews, video, bads, related_searches |
| accounting firms on long island | 260 | 7 | $2.97 | 0.62 | 68 | local_pack, reviews, digital_complaints, related_searches |
| cpa sales practice | 260 | 15 | $0.56 | 0.52 | 2 | reviews, video, people_also_ask, bads |
| Keyword | Vol | Diff. | CPC | Comp. | Pos. | SERP features |
|---|---|---|---|---|---|---|
| payroll services for small business | 8100 | 62 | $74.11 | 0.19 | 51 | local_pack, reviews, video, people_also_ask |
| taxes for nanny calculator | 590 | 20 | $2.49 | 0.44 | 97 | reviews, people_also_ask, images, related_searches |
| zbs | 590 | 24 | $0.00 | 0.0 | 5 | local_pack, reviews, video, people_also_ask |
| cjbs llc | 480 | 14 | $0.00 | 0.03 | 13 | reviews, video, related_searches |
| payroll services for small businesses | 470 | 41 | $62.86 | 0.16 | 54 | local_pack, reviews, video, people_also_ask |
| Keyword | Vol | Diff. | CPC | Comp. | Pos. | SERP features |
|---|---|---|---|---|---|---|
| thrive financial | 360 | 13 | $5.00 | 0.19 | 17 | reviews, sitelinks, people_also_ask, images |
| sam finance | 140 | 13 | $1.72 | 0.04 | 33 | local_pack, reviews, video, people_also_ask |
| thrive financial group | 140 | 8 | $2.25 | 0.15 | 1 | reviews, video, people_also_ask, gmb |
| thrive cpa | 110 | 2 | $0.00 | 0.05 | 13 | local_pack, reviews, video, related_searches |
| thrive finance | 110 | 22 | $11.73 | 0.15 | 6 | reviews, sitelinks, video, people_also_ask |
| Keyword | Vol | Diff. | CPC | Comp. | Pos. | SERP features |
|---|---|---|---|---|---|---|
| audit companies | 660 | 27 | $4.04 | 0.32 | 36 | local_pack, reviews, video, people_also_ask |
| audit services | 660 | 11 | $7.51 | 0.11 | 16 | local_pack, reviews, video, people_also_ask |
| audit service | 590 | 20 | $7.81 | 0.1 | 19 | reviews, video, people_also_ask, gmb |
| auditing service | 590 | 19 | $7.51 | 0.11 | 29 | reviews, video, people_also_ask, gmb |
| auditor services | 590 | 14 | $7.51 | 0.11 | 12 | local_pack, reviews, video, people_also_ask |
303 of 417 keywords rank on more than one domain at once — the single biggest structural feature of this niche.
- The same core terms (“sell my accounting practice,” “buy an accounting firm”) are
targeted by nearly every broker site’s homepage, regional page, and buyer/seller guide at once. A term
appearing in one cluster card doesn’t mean it’s absent from the competitive picture in another page
type — it means that’s where the coarsest pattern-match landed it. Full per-keyword domain lists are
in
all-keywords.csv. - Clusters 01 and 02 share almost the same “who ranks” leaderboard — the same five or six domains dominate both. They may be one competitive reality (broad SEO investment across every page type) rather than two distinct topics.
- Side ambiguity concentrates in ATB’s own pages (22 of 26 “unclear”, cluster 05) and in the two AI-Overview-heavy clusters (valuation and succession, where “both” dominates) — inherently dual-audience topics.
- No dedicated roll-up cluster, and no
rollup-tagged keywords at all, even after full reading-based coverage (§06). The 8th seed (“accounting firm roll-up,” added at Phase 0 specifically to surface this) returned zero rows from every discovery endpoint. Whatever roll-up-motivated search behavior exists isn’t visible in this data as a separable signal — same story foraway_from_pain. - The motivation and URL-based views agree more than they disagree. The largest buy-side motivation group (first_time, 196 keywords) overlaps heavily with cluster 01’s leaderboard — same domains, same vocabulary, different axis of organization. Where they diverge is informative: the seller-vs-buyer-guidance gap is visible in the URL clusters (§08) but invisible at the motivation level, because “guidance content” is a page-type distinction, not a motivation distinction.
Descriptive only — what to do about any of this is Phase 5.
Nine patterns visible in the data, each stated as an observation, not a recommendation.
- ATB ranks somewhere in 8 of 11 URL-based clusters, but never leads any of them.
The highest ATB domain-count in any cluster is 69 of 169 (Practice listings) — always behind accountingpracticesales.com, poegroupadvisors.com, or accountingbroker.com. ATB is entirely absent from two clusters that map directly to named client motivations: Succession & merger content and Financing content. - accountingbroker.com and accountingpracticesales.com dominate breadth across page types, not just listings.
Both appear in the “who ranks” top-8 of essentially every cluster including branded, informational, and financing buckets. poegroupadvisors.com is close behind and leads two clusters outright (buyer guidance, blog/news). accountingbroker.com’s dominance is now attributable to a specific, named competitor (§04) rather than an unlabeled top-of-list domain. - AI Overview exposure correlates with informational depth, not volume.
The two highest-share clusters (blog/news at 76.9%, succession/merger at 71.4%) are the two lowest-volume clusters (170 and 80 total). The highest-volume cluster (practice listings, 6,790) has the lowest AI Overview share of any substantive cluster (13.6%). Who the AI Overview cites on these queries is a Phase 2 question; Phase 1 only establishes that it fires. - Only 1 of 11 roster domains ran persistent paid search on this keyword set — and it’s a newly-identified competitor.
accountingbroker.com ran ads on 36 on-topic buy/sell-a-practice keywords across all three months the ad-history endpoint returned. goodaccountants.com also advertises persistently but exclusively on generic audit lead-gen terms, a different service line. atbcal.com and the other 9 domains show zero paid search activity in this window. - Client-stated competitor visibility is inverted from what intake implied — and the roster needed a correction.
BBI is the only client-named domain visible to automated keyword-overlap discovery. The other three, including two also marked “High priority,” genuinely show zero organic overlap. Meanwhile the single highest-overlap domain examined, accountingbroker.com (198 common keywords), wasn’t named by the client at all, and two more were also missing despite ranking #3 and #5 by overlap. - Most competitors’ keyword “gap” isn’t cleanly on-category.
Across the 10 pairwise comparisons (§09), several domains’ top gap entries lean toward a different business line entirely — zbscpas.com’s top 5 are payroll/tax-calculator/brand terms, goodaccountants.com’s are all audit-service terms, thrivefinancialgrp.com’s lean brand-name searches. Only accountingbroker.com, acctsales.com, nationalaccountingsales.com, and cpasales.com read as directly on-topic. - Motivation tagging now covers all 417 keywords, and at full coverage buy-side demand outweighs sell-side by roughly half.
This reverses the previous revision’s reading, which was built on the 30% seed-traceable slice and looked roughly balanced. See §06–07 for the complete rule set, the coverage numbers, and the corrected side totals (buy 224 kw / 8,710 vol. vs. sell 106 kw / 5,770 vol.). - Seller-guidance content is thinner than buyer-guidance content at the page-type level specifically.
Not at the aggregate sell-vs-buy volume level (buy-side is simply larger overall, above). Seller guidance is 25 keywords / 420 volume; Buyer guidance is 37 keywords / 1,340 volume — buyer-facing guidance content is larger by count and more than 3× larger by volume. - The keyword universe here is a quarter the scale PLAN.md originally assumed.
The original estimate (~78,000 raw, ~27,000 unique) assumed autocomplete would run. Without it, and with several seeds (“succession planning,” “financing to buy,” “roll-up”) returning zero rows from every seed-expansion endpoint, the real discoverable footprint (14,184 raw → 6,746 unique → 417 on-category) is roughly a quarter the assumed unique-keyword scale — a finding about the niche’s search-demand shape, not an execution shortfall.
Seven deliberate scope calls, recorded so the next audit doesn’t re-litigate them.
- 1.1 Autocomplete not run — no callable tool exists in the SE Ranking MCP server surface (confirmed by searching the full DATA_*/PROJECT_* tool catalog). Not worked around — task instructions bar hand-written HTTP calls.
- 1.10 keywords/export scoped to the 93 keywords genuinely missing metrics (mostly longtail-sourced), not the full 6,746 — 98.6% already carried volume/cpc/difficulty/intent from their origin discovery call. A uniform re-score would not have changed any Gate-1 filtering decision.
- Pagination on 3 client-named-but-undiscovered domains capped at 2 pages (2,000 rows) each — accountingpracticesales.com, poegroupadvisors.com, greengrowthcpas.com. Large national firms whose full organic footprint would include out-of-market content not proportionate to why they were pulled (client-named, not overlap-discovered). All other 27 domains were pulled to exhaustion.
- 5 of 30 competitor domains’ raw files are condensed to a representative sample rather than the complete row set (atb-sales.co.uk, atbfh.com, atbonlinebusiness.com, bennetshay.com, gpvogel.com) — billing was for the full retrieval either way; only the stored raw copy is partial. Three are off-category collisions anyway.
- domain/ads returned only 3 months of snippet history (2026-05 to 07) despite a 12-month window requested — appears to be a depth limit on the endpoint itself, not a query error.
- The Gate 1 rework (rev. 2) found 4 of 10 comparison files stored as lossy summaries, not full row arrays — re-pulled in full (400 credits, logged in RUN-LOG.md), same flat-rate billing as the original 1.8 call.
- This revision (rev. 3) required zero new SE Ranking API calls — the full motivation/side reclassification in §06–07 is entirely reprocessing of the already-collected all-keywords.csv, reading each keyword’s own text. Logged in RUN-LOG.md as a zero-credit entry.
151 keywords, up to 20 per cluster, chosen mechanically — a sampling recommendation, not a strategic one.
recommended-140-plus.csv (named “-plus” because the real yield, 151,
exceeds the plan’s 140 target). Selection logic per keyword, applied mechanically and stated in each row’s
why_selected column:
- Prioritized by volume within each cluster (highest first)
- Flagged if a competitor ranks and ATB doesn’t
- Flagged if ATB already ranks (worth defending/expanding, not just attacking)
- Flagged if the term triggers an AI Overview
- Flagged if difficulty ≤15 (easier near-term opportunity)
Five of the eleven clusters (seller guidance, blog/articles, succession/merger, other/misc,
financing) contribute fewer than 20 rows because that’s the entire on-category cluster — nothing was
excluded. ATB’s own ranking pages contributes only 2 (not 20): 24 of its 26 on-category
keywords are branded and correctly excluded per Appendix C; all 26 are visible in branded.csv and the
cluster’s own CSV instead. This selection is unchanged by this revision — it was built from the
URL-based clusters (§08), which Job 1’s motivation reclassification didn’t touch.
Everything this brief draws from, and where it lives.
01 — Keyword Build/
keyword-brief.html this brief, rendered
keyword-brief.md plain-text twin
all-keywords.csv 417 rows, fully tagged — now 100% motivation coverage,
+ motivation_basis, + motivation_note (new this revision)
recommended-140-plus.csv 151 rows, ≤20/cluster, with why_selected
branded.csv 66 rows — own/competitor, split from service analysis
competitors-identified.csv domain → verified name → common_keywords → source, all 4
client-named + all 10 domains in the 1.8 comparison roster
dropped.csv 6,329 rows, every removal with its reason
clusters/ 11 CSVs, one per cluster, sorted by volume — unchanged by this revision
raw/ every API response, unfiltered, as collectedRead the cards, pull anything back from dropped.csv, approve.
Read §06–07 (motivation) first — that’s what changed this revision —
then §08 (URL-based clusters), then §09 (per-competitor comparison). Pull anything back from
dropped.csv that looks wrong, especially anything caught by the transaction/entity-term filter that’s
actually relevant. Adjust recommended-140-plus.csv directly if a different 151 (or a different N per
cluster) makes more sense. Approve, and Phase 2 (competitive map — where the five gap files land) can run; it
doesn’t depend on this gate. Phase 3 (search) does, and won’t start until this is approved.