Two of five phases are done. ATB is cited inside an AI Overview zero times.
The running, cross-phase report for the ATB positioning audit — updated after every phase completes. Phase 1 (keyword build) and Phase 2 (competitive map) are closed. Across all 602 of ATB’s own ranking keywords, it is cited inside an AI Overview zero times, and occupies zero of the four major SERP answer features checked. Phase 3 (search, ~$21.00) is next.
keyword-brief.html, Phase
1’s own approved Gate 1 deliverable, which stays exactly where it is, untouched. It is also
not the eventual client-facing final report — that’s a Phase 5 / end-of-audit
artifact, built later from this same data, likely via the full print/flipbook pipeline. Where Phase 1 or
Phase 2 content already has a full deliverable, this brief gives the headline findings and links out
rather than duplicating pages of detail.
sge with_link/without_link pulls (verified, not
assumed: 0 citations in every cluster), unambiguous separate labels, a denominator next to every
percentage in that section, and a standing note on AI Overview’s platform scope (Google Search
specifically). (2) Phase 2’s gap files (§p2-oncat) now carry an on-category breakdown alongside
the unchanged full/general totals, using the same documented rule set Phase 1 established for
all-keywords.csv, applied fresh to the larger gap sets. Full detail in RUN-LOG.md.
$2.51 spent across two complete phases; Phase 3 needs one clear day to run.
The whole audit’s arc, stated once, before any of the detail below — five phases, two gates, a plan-quoted ceiling of roughly $51 for the full run.
| Phase | Status | Actual | Plan estimate | Gate |
|---|---|---|---|---|
| 1 · Keyword Build | Complete | $1.83 | $3.41 | Gate 1 — approved 2026-08-29 |
| 2 · Competitive Map | Complete | $0.68 | $2.90 | none required |
| 3 · Search | Pending — not yet run | — | $21.00 | waits on a clear day (24h SERP expiry) |
| 4 · AI Visibility | Pending — not yet run | — | ~$24.00 | waits on Gate 2 (tier & score the roster) |
| 5 · Synthesis | Pending — not yet run | — | free | waits on Phase 4 |
Both closed phases came in well under their plan estimate — Phase 1 at 54% of quote, Phase 2
at 23% — primarily because flat-rate domain/* data already pulled in Phase 1 was reused rather
than re-billed in Phase 2, and because the niche’s real discoverable keyword footprint turned out smaller
than PLAN.md’s pre-run assumption (full detail in RUN-LOG.md).
At the current rate, the full five-phase audit is tracking toward roughly $47–48 against the ~$51 ceiling.
14,184 raw rows narrowed to a 417-keyword universe, then a 151-term working list.
Condensed here to the headline findings. Full detail — all 15 sections, cluster cards, the per-competitor comparison, the motivation rule set — lives in the approved Gate 1 deliverable, which this brief links out to rather than duplicates: 01 — Keyword Build/keyword-brief.html.
| Domain | Common w/ ATB | Status |
|---|---|---|
| accountingbroker.com | 198 — #1 of any domain | Newly identified, not on the client’s original list |
| acctsales.com | 157 — #3 | Newly identified |
| prohorizons.com | 141 — #5 | Newly identified, CA/OR/WA-focused |
| Accounting Practice Sales, Poe Group Advisors, Green Growth CPAs | 0, all three | Client-named, verified real and distinct — genuinely zero organic overlap with atbcal.com |
Full roster detail, including domain_relevance and the per-competitor gap tables, in
keyword-brief.html §04 and §09.
Full-coverage motivation tagging (0 ambiguous rows, up from 30% coverage in the prior revision)
reversed an earlier, partial-data reading that looked roughly sell/buy balanced. ATB’s presence rate is
roughly even between the two sides — the buy-side pool is simply much larger. Detail in
keyword-brief.html §06–07.
Cost: $1.83 actual (9,158 credits) against a $3.41 plan estimate — under,
primarily because Google autocomplete has no callable tool in this MCP surface and several seeds returned zero
rows from every discovery endpoint. Full call-by-call log in RUN-LOG.md.
ATB is cited inside an AI Overview zero times, and occupies zero of four major SERP answer features, across all 602 of its own ranking keywords.
Full treatment here — this is the first time Phase 2’s findings get the visual system
applied. Plain-language source: 02 — Competitive Map/competitive-map-summary.md.
The five gap files themselves live in 02 — Competitive Map/gaps/.
| Domain | Common w/ ATB | Total keywords on record |
|---|---|---|
| accountingpracticesales.com | 0 | ≥2,000 (pagination capped by scope decision) |
| poegroupadvisors.com | 0 | ≥1,398 (fully enumerated) |
| greengrowthcpas.com | 0 | ≥2,000 (pagination capped by scope decision) |
Overlap-based discovery and a domain’s own scale measure different things. All three are verified, real, distinct businesses — genuinely invisible to keyword-overlap discovery, and genuinely larger than ATB on their own record.
Platform scope, stated once, holds for every “AI Overview” mention in Phase 1 and Phase 2: this is Google Search’s AI Overview (SGE) specifically — not ChatGPT, Perplexity, Gemini, or Google’s separate AI Mode. Every finding in Phase 1 and Phase 2, including everything below, measures Google Search only. Multi-engine coverage (ChatGPT, Perplexity, Gemini, AI Mode) is Phase 4, not yet run.
| Competitor | Citing rows | Share of 77 |
|---|---|---|
| poegroupadvisors.com [zero organic overlap] | 31 | 40% |
| accountingpracticesales.com [zero organic overlap] | 15 | 19% |
| go2bbi.com | 12 | 16% |
| accountingbroker.com | 10 | 13% |
| accountingfirmsold.com | 8 | 10% |
| acctsales.com | 1 | 1% |
The single most-repeated case: “cpa firms for sale in california” (volume 70) is cited
inside the AI Overview by four different competitors — go2bbi.com, accountingfirmsold.com,
accountingpracticesales.com, and poegroupadvisors.com — each at AI Overview position 1, while ATB ranks
organically at positions 4–60 across four different pages and is cited by none of them. The two leading
citing domains are the same two zero-organic-overlap, client-named domains that lead breadth above — a
domain invisible to keyword-overlap discovery can still be the domain an AI Overview cites on ATB’s own
core sell-side terms. Source: gaps/gap-ai-overview.csv.
| Feature | Present on the SERP, ATB not inside it | ATB inside it |
|---|---|---|
| People Also Ask | 379 | 0 |
| Local Pack | 186 | 0 |
| AI Overview (sge) | 109 | 0 |
| Featured Snippet | 27 | 0 |
This is a wider pattern than the AI Overview gap alone — the same zero holds for local pack,
featured snippets, and People Also Ask. Source: gaps/gap-serp-features.csv (592 rows).
| Page | Gap keywords | Combined volume | Read |
|---|---|---|---|
| accountingpracticesales.com — New York/Northeast hub | 425 | 83,930 | Off-geo regional hub page — the same page-type exists for California too (50 kw, 4,900 vol) |
| zbscpas.com — payroll & tax | 43 | 11,640 | Off-category — payroll, not practice-sale |
| goodaccountants.com — NY financial audits | 74 | 10,700 | Off-category — audit lead-gen |
| greengrowthcpas.com — IRS Form 8300 guide | 117 | 5,480 | Off-category — general tax-compliance content |
The pattern already named in Phase 1 — most competitors’ keyword gap isn’t cleanly
on-category — holds again at the page level. Sources: gaps/gap-keywords.csv,
gaps/gap-pages.csv.
Both full/general numbers (7,606 gap keywords, 1,328 gap pages) stay exactly as reported above — nothing is deleted or buried. This is a new, additional split laid alongside them, not a replacement, per the client’s explicit ask: see the on-category subset as the more actionable list, but don’t lose the bigger picture.
Method — the same judgment Phase 1 already established for
all-keywords.csv, applied fresh to Phase 2’s larger gap sets (most of which were never
run through Phase 1’s classification — a different, larger pull). Six ordered rules, first match wins,
same discipline as the motivation rule set:
- 1. Brand-collision. The keyword textually matches a roster competitor’s name/domain root and ranks for ≤2 distinct domains across the whole gap-keywords.csv set — real ranking concentration, not just a text match, decides this (see QA below for why the text-only version of this rule was wrong on the first pass). → off-category.
- 2. Phase 1’s base gate, reapplied unchanged: on-category requires both a transaction term
(sale, buy, merger, valuation, succession, broker, roll-up, financing, acquisition, transition, exchange) and
an accounting-entity term (practice, firm, CPA, accounting, accountant, bookkeeping) in the same keyword. Anything
short of both is off-category here — exactly Phase 1’s own
dropped.csvtreatment (off_category_no_transaction_entity_match), not a new judgment call. - 3–5, applied only to keywords that passed rule 2 (both terms present): payroll content → off-category · audit-lead-gen (financial-statement/compliance audit services, a different service line) → off-category · generic tax-prep/compliance content (filing, IRS forms, tax calculators, crypto/foreign-exchange tax topics) → off-category.
- 6. Out-of-state / out-of-country regional-hub content. A non-CA US state name in the keyword itself, or
the competitor’s own ranking URL is a non-CA state/Canada regional-hub page or an individually geo-tagged
listing page (e.g.
.../united-states/northeast/new-york/,.../canada/ontario/, or a listing slug decoding to “…, fl”) — verified from the URL’s own geography, the same standard already used for the accountingpracticesales.com New York hub page above. → off-category. - Anything clearing all six rules → on-category.
Two genuinely close calls, resolved on evidence rather than forced either way, both caught in QA:
“cpa sales practice” and “accounting practice sales [state]” variants
text-match a competitor brand (cpasales.com, accountingpracticesales.com) but each ranks across 5–7
unrelated domains in the gap dataset, not just the one domain the brand belongs to — real ranking
behavior overrules the text match, so these were kept on-category (or, for the state-tagged variants, correctly
routed to rule 6 instead). An earlier pass of rule 1 used text-matching alone and wrongly excluded both as
brand-collision; fixed by gating the rule on ranking concentration (≤2 domains) before accepting a text match,
the same domain-diversity check now folded into the rule itself. prohorizons.com/pacific/ was kept
on-category rather than flagged out-of-state despite the page-level region name, because Phase 1 already
documented prohorizons.com as CA/OR/WA-focused and one of its own on-category gap keywords on that exact page is
“ca practice sales” — real evidence of California relevance, not a forced call either way.
| Keyword | Volume | Domains ranking | Example domain |
|---|---|---|---|
| valuation of firm methods | 590 | 1 | greengrowthcpas.com |
| accounting purchasing | 480 | 1 | accountingpracticesales.com |
| accounting practice exchange | 260 | 5 | accountingbroker.com |
| cpa sales practice | 260 | 7 | accountingfirmsold.com |
| western practice sales california | 260 | 1 | accountingpracticesales.com |
| cpa practice for sale | 260 | 3 | acctsales.com |
| cpa practices for sale | 260 | 2 | acctsales.com |
| accounting merger | 170 | 1 | accountingbroker.com |
| Page | On-category top term | Its volume | Page total gap keywords |
|---|---|---|---|
| poegroupadvisors.com/ | accounting practice exchange | 260 | 149 |
| acctsales.com/practices-for-sale/ | accounting practice exchange | 260 | 89 |
| cpasales.com/ | accounting practice exchange | 260 | 48 |
| accountingfirmsold.com/ | cpa sales practice | 260 | 40 |
| poegroupadvisors.com/buying/ | buy a cpa firm | 140 | 21 |
Off-category rule breakdown, for transparency — gap-keywords.csv:
no transaction/entity match 6,505 · out-of-state/out-of-country regional hub 312 · brand-collision 22
· payroll 3 · generic tax-prep 2 · audit-lead-gen 0 (no keyword that cleared the base gate also
matched this rule). gap-pages.csv: no transaction/entity match 1,208 · out-of-state/out-of-country
25 · brand-collision 8. New files: gaps/gap-keywords-on-category.csv (762 rows) and
gaps/gap-pages-on-category.csv (87 rows), each carrying a new on_category_rule column
stating which rule matched. The original gap-keywords.csv / gap-pages.csv are
untouched — still the full/general reference, unchanged row-for-row.
Two different things sit in this table, deliberately kept in separate columns. “AI Overview share” (Google Search’s AI Overview/SGE — see the scope note above; not ChatGPT, Perplexity, Gemini, or AI Mode) is a Phase 1 stat about the whole cluster’s keyword population, regardless of who ranks. “ATB ranks organically” is a separate, unrelated Phase 1 stat about ATB’s own plain organic ranking presence in that cluster (the URL-clustering “who ranks” data). Neither of those says anything about whether ATB is cited inside an AI Overview — that required a real, new cross-reference against Phase 2’s citation pulls, which the two right-hand columns below report for the first time, verified per cluster rather than assumed from the aggregate.
| Cluster | Size | AI Overview share (cluster-wide) | ATB ranks organically | ATB cited in AI Overview |
|---|---|---|---|---|
| Blog & news articles | 13 | 76.9% (10 of 13) — highest | 1 of 13 | 0 of 1 keyword ATB ranks for that triggers one |
| Succession & merger/M&A content | 7 | 71.4% (5 of 7) | 0 of 7 — absent entirely | n/a — ATB ranks 0 keywords in this cluster |
| Other / miscellaneous ranking pages | 17 | 41.2% (7 of 17) | 3 of 17 | 0 of 1 keyword ATB ranks for that triggers one |
| Buyer guidance content | 37 | 37.8% (14 of 37) — highest with real volume | 10 of 37 — 3× sell-side guidance volume | 0 of 2 keywords ATB ranks for that trigger one |
| Valuation content | 12 | 33.3% (4 of 12) | 4 of 12 | 0 of 1 keyword ATB ranks for that triggers one |
| Seller guidance content | 25 | 32.0% (8 of 25) | 15 of 25 — cleanest side split, 100% sell | 0 of 1 keyword ATB ranks for that triggers one |
| Broker homepages & about/contact pages | 89 | 24.7% (22 of 89) | 31 of 89 | 0 of 4 keywords ATB ranks for that trigger one |
| ATB’s own ranking pages | 26 | 23.1% (6 of 26) | 26 of 26 — branded cluster, by definition | 0 of 6 keywords ATB ranks for that trigger one — highest count of any cluster |
| Practice listings & regional pages | 169 | 13.6% (23 of 169) — lowest substantive cluster | 69 of 169 — largest cluster, strongest ATB presence | 0 of 11 keywords ATB ranks for that trigger one — highest count of any non-branded cluster |
| Financing content | 4 | 0.0% (0 of 4) | 0 of 4 — absent entirely | n/a — ATB ranks 0 keywords in this cluster |
| No ranking page identified (discovery-only) | 18 | 0.0% (0 of 18) | 0 | n/a — ATB ranks 0 keywords in this cluster |
Method: for each cluster, its keywords were intersected against the exact 602-row keyword set
atbcal.com’s own domain/keywords pull returned (the same set Phase 2’s 2.3/2.4 sge
with_link/without_link pulls were run against) to get “ATB ranks organically.” Of that intersection,
each keyword’s own serp_features field (cross-validated against the saved sge
without_link raw file — both methods agree exactly, 90 of 90 keywords) determined whether it triggers
an AI Overview. Since ATB’s global sge with_link pull already returned a genuine, structurally
confirmed empty set (0 of 602 rows, logged in RUN-LOG.md, Phase 2 step 2.4), every cluster subset of
that same 602-row set is mathematically guaranteed to be 0 as well — this table reports that per cluster
rather than leaving it assumed. 8 of 11 clusters have at least one AI-Overview-triggering keyword ATB ranks for;
in all 8, the citing count is 0. Practice listings (11) and ATB’s own branded cluster (6) carry the most such
keywords — the largest exposure, and still zero. Separately, and unrelated to citation: the two clusters with
the highest cluster-wide AI Overview trigger rate (blog/news, succession/merger) are also where ATB’s organic
presence is thinnest or entirely absent. Full method and the per-cluster script output logged in
RUN-LOG.md; the un-cross-referenced 11-row table (cluster-wide share only) remains in
competitive-map-summary.md §5, unchanged.
Cost: $0.68 actual (3,400 credits) against a $2.90 plan estimate — under,
because all 13 competitors’ domain/keywords data was reused from Phase 1’s already-paid
pulls rather than re-billed. Full call-by-call log in RUN-LOG.md.
What the buyer actually sees, and under what conditions.
140 selected terms × 25 California MSAs × desktop and mobile — 350 SERP tasks, the audit’s only metered stage. Answers Q2 (under what conditions competitors show up) and Q4 (what the buyer actually sees on the page, not just rankings).
Will produce gap-metros.csv (currently a header-only placeholder in
02 — Competitive Map/gaps/) and the breadth metric — how many distinct metro ×
cluster combinations each domain appears in.
Who AI engines mention when they don’t mention ATB, and in what capacity.
Answers Q5 in full — per-engine brand vs. link presence, the leaderboard, and 500 prompts parsed for every brand named and every domain cited. Gated behind Gate 2: the roster from Phases 2–3 must be tiered and scored, and the ten leaderboard slots selected, before this runs — the leaderboard call is one shot and a wrong brand string returns zeros indistinguishable from real absence.
Patterns and presence, stated plainly. Not recommendations.
Naming a pattern is description; recommending action is not, and stays out until the client-facing deliverable. This running brief closes here — the separate, later, client-facing artifact (built from this same data, likely via the full print/flipbook pipeline) is a distinct piece of work, not an update to this file.