# The Adpharm — Insights Full content of every published post. Frontmatter included for citation purposes. Source: https://www.theadpharm.com/insights --- ## Results: 60 days after making a vet clinic citable by AI URL: https://www.theadpharm.com/insights/sixteen-mile-vet-ai-answer-engine-seo-results Source markdown: https://www.theadpharm.com/insights/sixteen-mile-vet-ai-answer-engine-seo-results.md Published: 2026-07-09 Category: case-studies Author: adpharm-digital Reviewed by: ben-honda Tags: ai-eo, technical-seo, case-study, ai-citations, generative-engine-optimization, core-web-vitals > TL;DR: Sixty days after the [AI-EO pass on sixteenmilevet.com](/insights/sixteen-mile-vet-ai-answer-engine-seo), first-party citation rate across ChatGPT, Claude, and Google AI rose from 29% to 38%, the informational blog posts that were invisible on day 0 now get cited by name, human visitors tripled while crawler and AI-bot traffic jumped roughly 14×, and Bing's AI Performance report logged 1,544 citations with a 6.5× ramp across the window. The "best vet in Oakville" query and Powassan are the laggards. This is the measured follow-up to [Making a vet clinic citable by ChatGPT, Perplexity, and Claude](/insights/sixteen-mile-vet-ai-answer-engine-seo), which covers what we shipped and why. Here we report what sixty days of crawl-and-cite actually produced. Start with who showed up, measured in [Silo CDP](/products/silo). First the people searching — the 61 days before launch laid over the 61 days after, day for day. Then the machines, over that same post-launch stretch, broken out by crawler. ![Line chart of daily human visitors to sixteenmilevet.com as a 7-day rolling average, comparing the 61 days before launch against the 61 days after. The two lines track together until mid-June, when the post-launch line climbs to several times the pre-launch level.](/images/blog/sixteen-mile/silo-humans-pre-post.svg) ![Stacked area chart of daily bot requests over the 61 days after launch, broken out by crawler — Googlebot, Bytespider, and other bots. Requests stay low until mid-June, then surge, led by a Googlebot re-crawl and ByteDance's Bytespider.](/images/blog/sixteen-mile/silo-bots-by-crawler.svg) Both run on the same clock. The human lines track together for five weeks, then the post-launch line pulls away in mid-June. The crawlers do the same — near-silent until mid-June, then a Googlebot re-crawl and ByteDance's Bytespider pour in, everything else stacked behind them. That timing, five to six weeks after launch, is exactly when Google re-indexed the site and Bing's AI citations started climbing. > [!aside] What happened around day 40? > > Launch was day 0, but nothing moved for five weeks — because getting cited by AI is a chain, not a switch. Google and Bing first had to re-crawl the rebuilt pages (the new robots policy, router-driven sitemap, and `/llms.txt` all point them in), then re-index them, and only then could answer engines retrieve and quote them. That pipeline took roughly five to six weeks to clear, which is why human visitors, crawler hits, indexed-page count, and AI citations all inflect together in mid-June rather than at the May launch. The practical takeaway: AI-EO is a re-crawl story — budget four to eight weeks before the needle moves. We re-ran the same seven queries through the same three engines (ChatGPT with search, Claude with web search, and Google's AI surface), from a logged-in Canadian session, on day 0 and again at day 60. The queries did not change between runs. "Cited" means the clinic's own domain appears in the engine's citation panel; first-party citation — the clinic's site, not a directory or review aggregator — is the harder bar, and it is the bar every one of these citations clears. ## Headline numbers (day-0 → day-60) | metric | day-0 (2026-05-09) | day-60 (2026-07-09) | Δ | |---|---:|---:|---:| | Cited rate (any) | 29% | 38% | +9 | | First-party rate | 29% | 38% | +9 | | Brand-mention rate | 33% | 38% | +5 | By engine: | engine | day-0 cited | day-60 cited | Δ | |---|---:|---:|---:| | ChatGPT | 3/7 (43%) | 3/7 (43%) | flat | | Claude | 1/7 (14%) | 2/7 (29%) | +1 | | Google AI | 2/7 (29%) | 3/7 (43%) | +1 | ![Grouped bar chart of AI citation rate by engine from day 0 to day 60: ChatGPT flat at 43%, Claude rising from 14% to 29%, Google AI rising from 29% to 43%, and any engine rising from 29% to 38%.](/images/blog/sixteen-mile/citation-rate-by-engine.svg) ## What moved 1. **The slug-match informational queries.** Heartworm, ticks, and Powassan — the three queries pointed at specific blog posts — were 0 for 9 across all engines on day 0. This was the load-bearing test: does publishing the answer actually surface the page once it is crawled? At day 60, the heartworm post is cited first-party by both ChatGPT and Google (Google quotes the "June 1 through November 1" window straight from it), and the tick post is cited first-party by Claude and ranks first in Google's organic results. Two of the three landed. Powassan is the holdout and stayed at zero. ![Google's AI answer for "When should I start heartworm prevention for my dog in Ontario?" citing Sixteen Mile Veterinary Clinic and quoting the June 1 to November 1 window from the clinic's own blog post.](/images/blog/sixteen-mile/google-ai-heartworm-june-november.jpeg) 2. **The `/pricing.md` and SMVC Club content.** Google's wellness-plan answer now reads "Sixteen Mile Vet in Oakville charges a flat $40/month for unlimited exams, plus 20% off vaccines and blood work" — quoted from the clinic's own plan page. That query returned generic Banfield and Forbes content on day 0. The machine-readable pricing got read and repeated verbatim. ![Google's AI answer for "Are monthly vet wellness plans worth it in Ontario?" quoting Sixteen Mile Veterinary Clinic's flat $40/month unlimited-exam plan as a local example.](/images/blog/sixteen-mile/google-ai-wellness-40-month.jpeg) 3. **Claude moved off training data.** On day 0 Claude cited the clinic once. At day 60 it cites the clinic first-party on both the branded reputation query and the tick query, pulling the reviewer-aware detail (in-house ultrasound, full-mouth dental radiography) that the E-E-A-T work put on the page. ## What didn't move - **"Best vet in Oakville" is still a wall.** Claude and Google both leave the clinic out of their top-list answer for the head local-commercial query; only ChatGPT ranks it (third). The answer both engines now lead with is Southeast Oakville Veterinary Hospital, which trades on accreditation badges (AAHA, Fear Free, Cat Friendly) the clinic does not currently hold. - **ChatGPT's count held at 3/7**, but the mix improved: it dropped a weak, buried pricing citation and picked up the heartworm post at a real position. - **Powassan** stayed at zero across all three engines — the one content bet that has not yet paid out. ## Supporting signals - **AI citations, measured directly** (Bing AI Performance report — citations in Microsoft Copilot and Bing AI summaries): the site was cited **1,544 times between May 12 and July 7**, and the shape of the curve is the point. It ran at **6.4 citations/day in the first two weeks and 41.6/day in the last two** — a 6.5× climb — peaking at 121 in a single day. Citation volume was sparse through mid-May and ramped hard across June as the content got indexed. This is the leading indicator the manual citation runs above confirm from the demand side. ![Area chart of Bing AI citations per day from May 12 to July 7, 2026, totalling 1,544. The daily count runs near 6.4 per day for the first two weeks, then ramps 6.5 times to 41.6 per day in the last two weeks, peaking at 121 citations on June 10.](/images/blog/sixteen-mile/bing-ai-citation-ramp.svg) - **Which crawlers arrived** ([Silo CDP](/products/silo), matched 61-day windows; `ubid` was retired mid-run, so counts use anonymous ID): the bot surge charted at the top of this post is a Googlebot re-crawl (5 → 379 hits) plus the first appearances of AI fetchers — ClaudeBot, Bytespider, Meta's external agent, and Google NotebookLM — none of which touched the site in the prior 61 days. Over the full windows, unique human visitors rose **409 → 1,282 (+213%)** and unique bot agents **62 → 865 (~14×)**. - **Indexed-page count** (Google Search Console): **35 → 60 indexed pages (+71%)** from the day-0 baseline (May 8) to day 60, while "not indexed" fell from 109 to 81. Google both discovered the new topic archives and pagination and indexed more of what it had already crawled — the router-derived sitemap doing its job. ![Before-and-after bar chart of pages Google indexed: 35 indexed pages on day 0 rising to 60 on day 60, a 71% increase.](/images/blog/sixteen-mile/google-index-coverage.svg) - **Core Web Vitals** (GSC, Chrome UX field data, mobile): **51 of 51 URLs rated "good," zero poor, zero needs-improvement** as of July 7. Field data only crossed Google's CrUX reporting threshold in mid-June — before that the site had too little real-user traffic to be scored at all — so the result reads as "enough traffic to finally be measured, and every measured URL passes." Desktop still shows insufficient field data; PageSpeed Insights lab data covers that gap. - **Rich-result eligibility** (Google's Rich Results Test): the homepage validates as **LocalBusiness, Organization, and Review Snippet** — all eligible for rich results — and the blog posts validate as **Article and Breadcrumb**. The `FAQPage` markup is present but no longer surfaces as a Google rich result — Google retired FAQ rich results for most sites — so it now earns its keep by handing AI engines a clean question-and-answer structure to lift from rather than by rendering a SERP dropdown. ## Methodology 7 queries × 3 engines × 2 dates = 42 manual UI captures. Queries were grounded in real Google Search Console data — top impressions, blog-slug matches, and `/pricing.md` content — not plausible-sounding guesses. We measured in the consumer UIs rather than the provider APIs on purpose: the API's web-search tool is a different surface (different backend, no consumer system prompt, no personalisation), so its citation rate is not a reliable proxy for what a real user sees. Screenshots and the per-query rationale live in the agency repo. ## Sources - The implementation this measures — [Making a vet clinic citable by ChatGPT, Perplexity, and Claude](/insights/sixteen-mile-vet-ai-answer-engine-seo) - Sixteen Mile Veterinary Clinic — [sixteenmilevet.com](https://www.sixteenmilevet.com) - Bing AI Performance report — [Bing Webmaster Tools](https://www.bing.com/webmasters) - Google Search Console — [Page indexing and Core Web Vitals reports](https://search.google.com/search-console/about) --- ## Making a vet clinic citable by ChatGPT, Perplexity, and Claude URL: https://www.theadpharm.com/insights/sixteen-mile-vet-ai-answer-engine-seo Source markdown: https://www.theadpharm.com/insights/sixteen-mile-vet-ai-answer-engine-seo.md Published: 2026-05-09 Updated: 2026-07-09 Category: case-studies Author: adpharm-digital Reviewed by: ben-honda Tags: ai-eo, technical-seo, schema-org, llms-txt, robots-txt, astro, vercel, core-web-vitals, e-e-a-t > TL;DR: We shipped a coordinated AI-EO + technical SEO pass on [sixteenmilevet.com](https://www.sixteenmilevet.com): allow citation-pathway AI bots and block training-only ones, expose `/llms.txt` and `/pricing.md` at the root, harden authorship and reviewer JSON-LD, replace the hand-rolled sitemap with one derived from the router, and lift Core Web Vitals on the homepage. The work shipped 2026-05-09; the measured 60-day results are in a companion post — [first-party citation rate rose 29% to 38%](/insights/sixteen-mile-vet-ai-answer-engine-seo-results). [Sixteen Mile Veterinary Clinic](https://www.sixteenmilevet.com) is a single-location practice in Oakville. The site runs on Astro 5 (server output), React 19, and Tailwind 4, deployed to Vercel. The brief was simple: make the site eligible for citation by AI answer engines, tighten the technical-SEO surface, and lift Core Web Vitals on the homepage. Most of the value was in the order. We started with the crawler policy because a site no engine can reach is invisible no matter how clean its schema is. Authorship came second, because Google's vet-content guidance is strict and the answer engines are converging on the same signals; vague attribution costs rich-result eligibility no matter how fast the page loads. With those two layers right, schema and sitemap hygiene fall into place, because every other signal compounds once the entity model is consistent. Performance came last. It is the most familiar lever, and the smallest one when the layer underneath it is broken. ## Crawler policy: opt in to citation, opt out of training We rewrote `robots.txt` around a single question: does this bot send users back to the source, or does it just train a model? - Allowed: GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot, Claude-Web, anthropic-ai, PerplexityBot, Perplexity-User, Google-Extended, Applebot, Applebot-Extended, Bytespider, Meta-ExternalAgent, Amazonbot. - Blocked: CCBot. It feeds Common Crawl, a training corpus with no citation pathway, so allowing it costs bandwidth without earning visibility. - Crawl-delay: SemrushBot, AhrefsBot, DotBot. Useful tools, kept off the critical path. This is the cheapest change in the pass. Most clinic sites land at one of two extremes: every bot blocked, or every bot allowed. ## `/llms.txt` and `/pricing.md` Two flat files now sit at the root of the site, both linked from the sitemap. `/llms.txt` follows the [proposed standard](https://llmstxt.org/) for giving language models a clean, low-noise summary of the site. Ours covers location, hours, team, plan structure, key URLs, and the disclaimer. A model grounding against the file reads that framing instead of whatever it would otherwise piece together from the marketing pages. `/pricing.md` is the wellness-plan pricing in machine-readable Markdown: SMVC Club at $40/month, the P.A.L. Plan, exam fee, plan rules. Pricing is the single most-asked question across vet AI queries, and serving it as plain text lets answer engines quote it accurately rather than reconstruct it from scraps. ## Authorship and E-E-A-T Google's vet-content guidance is strict, and the answer engines are converging on the same signals. We built a per-post author registry. Posts written by credentialed staff (`Dr. ... DVM`) emit `Person` JSON-LD with the clinic as `affiliation`; non-credentialed authors fall back to `Organization`. Many of the 92 educational posts were drafted by the editorial team and reviewed by a clinician. The schema layer now enforces that every non-draft post carries either an `author` or a `reviews` array. Reviewer-only posts render "Reviewed by Dr. ..." in the byline and emit `reviewedBy` Person entries alongside the clinic as author. A `/disclaimer` page plus a per-post editorial disclaimer aside, linked from the footer, tells humans and crawlers that the articles are educational and not a substitute for an exam. ## Structured-data hygiene The schema layer needed several small fixes, each of which carries an outsized effect on how Google and the answer engines reconcile entities across the site. We canonicalised every JSON-LD URL to `https://www.sixteenmilevet.com` so `BlogPosting`, the sitemap, and `` agree. Mismatched hosts (apex vs. `www`) silently demote rich-result eligibility. We removed a stale `specialOpeningHoursSpecification` for Canada Day 2025 that was still being emitted in 2026. A schema that contradicts the visible page is worse than no schema, because the engine has no way to know which to trust. We added optional `faq` frontmatter on blog posts that emits `FAQPage` JSON-LD. The hardcoded "Sarah Bishop welcome" FAQ block was the first consumer. We replaced ad-hoc breadcrumb components with `BreadcrumbList` JSON-LD on detail pages, plus a real `