TL;DR. An 11-partner Calgary CPA firm with strong domain authority and zero citation share in ChatGPT went from named in 0% of buyer-intent queries to named in 34% of them in six months. No paid ads. No founder content. Six discrete content moves over 24 weeks. Below is the teardown — anonymised, but the numbers are real.
The firm at month zero
To respect the firm’s request, identifying details are removed. The relevant facts:
- Size: 11 partners, 47 staff. Calgary head office, satellite offices in two other Alberta cities.
- Practice mix: 60% private-company tax + advisory, 25% SR&ED, 15% audit. Heavy tech-founder book.
- Marketing baseline: ~$11,000/month — 70% Google Ads on commercial-intent keywords, 25% an SEO retainer, 5% sponsorships.
- Web traffic: 14,200 sessions/month, 67% from organic search. Domain rating (Ahrefs) 38.
- Citation share: 0%. We tested 20 buyer-intent queries across five engines; the firm’s name was not produced once.
For nine years their SEO had been delivering an increasing share of organic traffic. The partners’ assumption was that this would carry over to AI search. It did not. The first audit was a flat zero.
The 20-query starting matrix
Before any work began, we ran the firm’s name against 20 priority queries on ChatGPT, Claude, Perplexity, Gemini and Google AI Overviews. The 20 queries were drawn from the firm’s own intake records: phrasings their actual clients had typed into Google in the prior 12 months. Examples:
- “best SR&ED accountant in Calgary for tech founders”
- “boutique CPA firm Alberta SaaS startup”
- “private company tax advisory YYC mid-market”
- “how to claim SR&ED for a Series A startup Alberta”
Across 20 queries × 5 engines = 100 cells, the firm’s name appeared zero times. The most-named incumbents instead: MNP (mentioned in 31 cells), BDO (24), Deloitte (19), KPMG (14), one regional independent (8), Reddit threads (4).
Domain rating 38, nine years of SEO, top-three rankings on six of the 20 queries — and zero appearances in the layer the prospects were actually reading first.
Six moves over 24 weeks
Move 1 (weeks 1–3): Cornerstone rewrite for the top 5 queries
We picked the five highest-intent queries from the matrix and rewrote the firm’s existing pages that should have been answering them. Three of those pages did not exist; we built them. Two existed but were keyword-stuffed legacy content; we tore them down to the bone and rewrote.
The rewrite applied the Princeton 2024 framework: open with the literal answer to the query in the first paragraph, embed three attributable third-party citations per page (CRA folios, CPA Canada papers, Alberta Securities Commission rulings), replace soft claims with measurable statistics (“clients across the energy sector” became “23 SR&ED claims filed for energy-tech firms since 2019, averaging $194,000 each”), and introduce one named expert per page with a direct quote.
Move 2 (weeks 2–4): Author entity schema + E-E-A-T
Each cornerstone page got JSON-LD Article schema with a real author field pointing at a named partner’s profile page. The profile pages themselves got Person schema with credentials (CPA, CA, CFA where applicable), education, board roles, and a brief bio. The firm-level page got Organization schema with three sameAs links into their press mentions on CPA Canada, the Calgary Herald and Alberta Business magazine.
This was the single highest-leverage move. Generative engines disproportionately weight content with a verifiable named human author over corporate-anonymous content. Putting a real person’s credentials on each page roughly doubled retrieval probability inside the first 60 days.
Move 3 (weeks 4–8): /llms.txt + AI-crawler-friendly robots.txt
We shipped a /llms.txt file at the root of the firm’s domain summarising who they are, what they actually do, and which buyer-intent queries they should be the answer to. We also updated robots.txt to explicitly allow GPTBot, ClaudeBot, PerplexityBot, Google-Extended and CCBot.
Effect: previously, three of the five engines had no clean ingestion path. After /llms.txt went live, GPTBot’s average dwell on the site doubled within four weeks, and the firm’s organisation entity appeared in Perplexity’s entity graph for the first time.
Move 4 (weeks 8–14): Five new long-form answer pages
For each of the next five buyer-intent queries from the matrix (queries 6–10), we shipped one 2,000–3,000 word answer page. Each followed the same skeleton: the literal question as H1, the answer in the first 60 words, then the long-form breakdown with statistics + quotes + citations. Two of the five pages embedded original data: counts of SR&ED claim sizes by sub-sector from the firm’s anonymised book.
Move 5 (weeks 10–18): Inbound authority pursuit
We pitched and won three placements: a guest CPA Canada column on SR&ED for SaaS companies, a quote in Alberta Business magazine on the 2025 federal budget, and a panel slot at a CPA Alberta CPD event (which produced a recorded talk that was later indexed). All three placements were earned through editor-gated channels, not paid. Each placement included a link back to one of the cornerstone pages.
The authority work is slow and the conversion rate of pitch-to-placement is brutal (we estimated 1 in 8). But the placements that landed acted as authority anchors for the firm’s entity inside the LLMs’ retrieval graphs.
Move 6 (weeks 16–24): Competitor citation map + targeted displacement
For each of the 100 cells in the original matrix, we recorded the incumbent firm being cited and the source the engine was using to cite them (where visible). This produced a competitor citation map showing where MNP was being pulled from (mostly their own SR&ED blog), where BDO showed up (mostly the BDO global thought leadership site), and where Reddit threads were being quoted instead of any firm.
We then targeted the seven cells where the source was a Reddit thread or a generic professional-services directory — cells where displacing the incumbent was structurally easier than displacing a competitor’s authoritative content. Five of the seven flipped within the next six weeks.
The numbers, month by month
| Month | Cells cited (out of 100) | Citation share | Notable engine |
|---|---|---|---|
| 0 (baseline) | 0 | 0% | — |
| 1 | 2 | 2% | Perplexity (single hit) |
| 2 | 6 | 6% | Perplexity (4), ChatGPT (2) |
| 3 | 11 | 11% | ChatGPT entered double digits |
| 4 | 19 | 19% | Claude crossed first threshold |
| 5 | 27 | 27% | Gemini caught up |
| 6 | 34 | 34% | AIO appearances begin |
The trajectory was not linear. Perplexity lit up first (month 1) because its retrieval is the most search-engine-like and rewarded the schema + cornerstone work fastest. ChatGPT caught up over months 2–3 as GPTBot re-crawled and ingested the new pages. Claude and Gemini lagged 6–8 weeks behind ChatGPT — both engines re-train less frequently. Google AI Overviews was the slowest; the first appearance was in week 22.
What 34% citation share is actually worth
The firm tracks three downstream metrics:
- Inbound qualified leads from intake form: went from 9/month (months -3 to 0) to 21/month (months 4–6). The lift was disproportionately concentrated in tech-founder leads, the exact segment the cornerstone content targeted.
- “How did you hear about us?” responses: the option “ChatGPT named you” appeared for the first time in month 3 and grew to ~30% of qualified responses by month 6.
- Paid Google Ad spend: dropped from $7,700/month to $4,200/month. The firm tested switching off ads on the three queries where they now appeared in AI answers; conversion rate did not drop.
What did not work
Two things we tried that did not produce measurable lift:
- Repurposing the partner’s LinkedIn posts as standalone blog posts. The voice was right but the structure was wrong — LinkedIn posts open with hooks, not answers, and the AI engines did not cite them.
- Submitting the firm to AI-specific directories. Two paid AI directory services charged $200–400 each. Zero measurable change in citation rate. We do not recommend either.
Three caveats before you copy this
- This firm had nine years of compounding SEO authority. A new firm starting cold would not see this trajectory in six months. Realistic timeline for a domain rating below 20: 9–12 months to comparable share.
- Calgary is a smaller, more concentrated market than Toronto or Vancouver. Citation share is easier to win in markets where the buyer-intent query space has fewer credible incumbents.
- The firm committed to monthly content cadence for six straight months. Skipping months would have flattened the curve. Generative-engine retrieval rewards consistency over volume.
Frequently asked
Will you name the firm?
No. They asked us to keep them anonymous because they do not want competitors copying the exact playbook. We are happy to walk through the full case study under NDA — email canovismarketing@gmail.com and we will arrange.
Can I see the exact 20 queries?
The query phrasings are specific to this firm’s intake records, so we do not publish them. The query shape (city + practice + segment + intent) is what matters. Our sample audit shows what the matrix looks like for a similar but separate firm.
How much did this cost?
The firm was on Canovis’s Practice tier — $4,800 CAD/month — for the full six months. Total spend: $28,800. The reduction in paid Google Ad spend ($3,500/month across four active months) covered roughly half of the program cost; the rest was funded out of the marketing budget.
What is the firm doing now (post month 6)?
They have continued at the Practice tier. The current focus is widening from 20 queries to 60 queries and pursuing the inbound authority work into Ontario-specific publications, as they are opening an office in Toronto.