ATB / Audit Brief · Running · Rev. 2

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.

What this document is, and isn’t. This is the ongoing working brief for the whole audit — it gets appended to after every phase, in this same Swiss Grid system, so the shape of the full audit stays legible from day one. It is not 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.
Rev. 2 — two client-flagged fixes. (1) The Phase 1×Phase 2 cluster cross-reference (§p2-cross) previously sat “AI Overview share” and “ATB present” side by side in a way that read as one stat about the other — they measure different things and were never actually cross-checked against real citation data. Fixed with a real per-cluster cross-reference against Phase 2’s raw 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.
00 Where this audit stands

$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.

Spent to date
$2.51
Credits used
12,558
Confirmed
Gate 1 approved 2026‑08‑29
Next
Phase 3 · ~$21.00
Full-audit estimate
~$51
Every phase, its status, and what it costs — the shape of the whole audit
PhaseStatusActualPlan estimateGate
1 · Keyword BuildComplete$1.83$3.41Gate 1 — approved 2026-08-29
2 · Competitive MapComplete$0.68$2.90none required
3 · SearchPending — not yet run$21.00waits on a clear day (24h SERP expiry)
4 · AI VisibilityPending — not yet run~$24.00waits on Gate 2 (tier & score the roster)
5 · SynthesisPending — not yet runfreewaits 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.

01 Phase 1 — Keyword build (complete, Gate 1 approved)

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.

The funnel
Raw rows
14,184
Unique keywords
6,746
With usable data
6,235
On-category, deduplicated
417
Selected for the working list
151

Every dropped row is retained with its reason in dropped.csv — nothing vanishes silently.

The single closest competitor to ATB by keyword overlap was never on the client’s list.
Newly-identified competitors, and the client-named domains that turned out invisible to overlap discovery
DomainCommon w/ ATBStatus
accountingbroker.com198 — #1 of any domainNewly identified, not on the client’s original list
acctsales.com157 — #3Newly identified
prohorizons.com141 — #5Newly identified, CA/OR/WA-focused
Accounting Practice Sales, Poe Group Advisors, Green Growth CPAs0, all threeClient-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.

Read at full coverage, buy-side search demand outweighs sell-side by roughly 51%.
Buy-side
224 kw · 8,710 vol
Sell-side
106 kw · 5,770 vol
ATB present, buy-side
80 of 224 (36%)
ATB present, sell-side
39 of 106 (37%)
Motivation coverage
417 of 417 (100%)

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.

02 Phase 2 — Competitive map (complete)

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/.

Roster & breadth
No competitor’s organic overlap reaches half of ATB’s own footprint — but three zero-overlap, client-named domains are larger than ATB in their own right.
atbcal.com (ATB — reference, 480 kw)
480
accountingbroker.com
198
go2bbi.com
166
acctsales.com
157
accountingfirmsold.com
152
prohorizons.com
141
nationalaccountingsales.com
132
cpasales.com
94
zbscpas.com
65
thrivefinancialgrp.com
27
goodaccountants.com
10

Outlined bar: ATB’s own 480-keyword footprint, the scale everything else is measured against. accountingbroker.com (azure) is highlighted as the single closest competitor by overlap — and it still touches only 41% of ATB’s territory.

The three client-named domains outside the overlap chart — zero common keywords, larger footprints on their own terms
DomainCommon w/ ATBTotal keywords on record
accountingpracticesales.com0≥2,000 (pagination capped by scope decision)
poegroupadvisors.com0≥1,398 (fully enumerated)
greengrowthcpas.com0≥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.

The AI Overview citation gap

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.

ATB is cited inside an AI Overview zero times, on any of its 602 ranking keyword-rows.
ATB with_link count (sge)
0
AIO present, doesn’t cite ATB
109 rows / 90 unique kw
Cites a named competitor instead
77 rows / 18 unique kw
Top 2 competitors’ share of citing rows
60% (46 of 77)
Who the AI Overview cites instead of ATB, on ATB’s own ranking keywords
CompetitorCiting rowsShare of 77
poegroupadvisors.com [zero organic overlap]3140%
accountingpracticesales.com [zero organic overlap]1519%
go2bbi.com1216%
accountingbroker.com1013%
accountingfirmsold.com810%
acctsales.com11%

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.

SERP-feature presence — inside vs. merely near
ATB ranks organically alongside all four major SERP answer features on 592 keyword-rows — and occupies none of them.
ATB’s 602 ranking keyword-rows, checked against every answer/box-type SERP feature tracked
FeaturePresent on the SERP, ATB not inside itATB inside it
People Also Ask3790
Local Pack1860
AI Overview (sge)1090
Featured Snippet270

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).

Keyword & page gaps
7,606 gap-keyword rows exist where a roster competitor ranks and ATB doesn’t — and the highest-volume gap pages skew off-category or off-geo.
gap-keywords.csv
7,606 rows / 6,626 unique
From the 3 zero-overlap domains
5,398 rows (71%)
gap-pages.csv
1,328 distinct pages
The four largest gap pages by combined keyword volume — a mix of on-category and off-category content
PageGap keywordsCombined volumeRead
accountingpracticesales.com — New York/Northeast hub42583,930Off-geo regional hub page — the same page-type exists for California too (50 kw, 4,900 vol)
zbscpas.com — payroll & tax4311,640Off-category — payroll, not practice-sale
goodaccountants.com — NY financial audits7410,700Off-category — audit lead-gen
greengrowthcpas.com — IRS Form 8300 guide1175,480Off-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.

On-category breakdown
The full gap totals above stay the reference number — underneath them, roughly 1 in 10 gap keywords and 1 in 15 gap pages are actually on-category.
gap-keywords.csv, on-category
762 of 7,606 (10.0%)
gap-pages.csv, on-category
87 of 1,328 (6.6%)
Ambiguous / force-fit
0 — every row resolved on evidence (see method)

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.csv treatment (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.

Top on-category gap keywords by volume — the more actionable list
KeywordVolumeDomains rankingExample domain
valuation of firm methods5901greengrowthcpas.com
accounting purchasing4801accountingpracticesales.com
accounting practice exchange2605accountingbroker.com
cpa sales practice2607accountingfirmsold.com
western practice sales california2601accountingpracticesales.com
cpa practice for sale2603acctsales.com
cpa practices for sale2602acctsales.com
accounting merger1701accountingbroker.com
Top on-category gap pages by combined gap-keyword volume — note “total gap keywords” here is the page’s full count (all categories); the on-category share of each page’s own keyword list isn’t separately broken out
PageOn-category top termIts volumePage total gap keywords
poegroupadvisors.com/accounting practice exchange260149
acctsales.com/practices-for-sale/accounting practice exchange26089
cpasales.com/accounting practice exchange26048
accountingfirmsold.com/cpa sales practice26040
poegroupadvisors.com/buying/buy a cpa firm14021

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.

Cross-reference to Phase 1’s clusters

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.

Verified per cluster, not assumed from the aggregate: ATB is cited inside an AI Overview zero times, in every one of the 8 clusters where it ranks at all.
All 11 URL-based clusters — Phase 1’s cluster-wide AI Overview trigger rate alongside Phase 2’s real, per-cluster citation cross-reference
Cluster Size AI Overview share (cluster-wide) ATB ranks organically ATB cited in AI Overview
Blog & news articles1376.9% (10 of 13) — highest1 of 130 of 1 keyword ATB ranks for that triggers one
Succession & merger/M&A content771.4% (5 of 7)0 of 7 — absent entirelyn/a — ATB ranks 0 keywords in this cluster
Other / miscellaneous ranking pages1741.2% (7 of 17)3 of 170 of 1 keyword ATB ranks for that triggers one
Buyer guidance content3737.8% (14 of 37) — highest with real volume10 of 37 — 3× sell-side guidance volume0 of 2 keywords ATB ranks for that trigger one
Valuation content1233.3% (4 of 12)4 of 120 of 1 keyword ATB ranks for that triggers one
Seller guidance content2532.0% (8 of 25)15 of 25 — cleanest side split, 100% sell0 of 1 keyword ATB ranks for that triggers one
Broker homepages & about/contact pages8924.7% (22 of 89)31 of 890 of 4 keywords ATB ranks for that trigger one
ATB’s own ranking pages2623.1% (6 of 26)26 of 26 — branded cluster, by definition0 of 6 keywords ATB ranks for that trigger one — highest count of any cluster
Practice listings & regional pages16913.6% (23 of 169) — lowest substantive cluster69 of 169 — largest cluster, strongest ATB presence0 of 11 keywords ATB ranks for that trigger one — highest count of any non-branded cluster
Financing content40.0% (0 of 4)0 of 4 — absent entirelyn/a — ATB ranks 0 keywords in this cluster
No ranking page identified (discovery-only)180.0% (0 of 18)0n/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.

03 Phase 3 — Search (pending — not yet run)

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).

Estimated cost
$21.00
Tasks
350
Metros
25
Constraint
SERP results expire 24h after collection — needs a clear day

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.

04 Phase 4 — AI visibility (pending — not yet run)

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.

Estimated cost
~$24.00
Engines
5
Prompts
500 (limit=100 × 5)
Gate
Gate 2 — tier & score, not yet run
05 Phase 5 — Synthesis (pending — not yet run)

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.

Estimated cost
free
Depends on
Phases 3 and 4 complete
About this document

This is the running cross-phase report for the ATB positioning audit. It is updated after every phase completes, in the Swiss Grid system approved at Gate 1 — same tokens, same CSS, same meaning-first hierarchy as keyword-brief.html, reused rather than reinvented. Every number here traces to a logged call in RUN-LOG.md or a file in 01 — Keyword Build/ / 02 — Competitive Map/.

It is deliberately not the client-facing final deliverable. That is separate, later work (Phase 5 / end-of-audit), built from this same underlying data once all five phases are closed.