Files
gw-svelte/GEO-ANALYSIS.md
2026-07-04 10:00:16 +12:00

10 KiB
Raw Permalink Blame History

GEO Analysis — Goodwalk (goodwalk.co.nz)

Generative Engine Optimization audit · February 2026 criteria · analyzed 2026-06-23

Scope: SvelteKit codebase at C:\Users\mattc\gw-svelte\gw-svelte (SSR via @sveltejs/adapter-node). This is a single-location Auckland dog-walking service — a local SAB (service-area business), so GEO leverage skews toward local AI answers ("dog walker in Mt Eden", "Auckland pack walks", "puppy visit cost Auckland").


1. GEO Readiness Score: 73 / 100

A strong technical foundation already in place. The on-site work is close to best-practice; the gap is off-site brand presence and passage-level citability of the marketing copy.

Criterion Weight Score Notes
Citability 25% 16/25 Excellent llms.txt facts; on-page copy is punchy brand fragments, not extractable answer blocks
Structural Readability 20% 15/20 Clean H1→H2, FAQ <details>; few tables/comparison blocks
Multi-Modal 15% 9/15 Rich images + alt text everywhere; no video, infographics, or tools
Authority & Brand 20% 14/20 Strong on-site E-E-A-T (Person/founder schema, reviews); thin off-site (no Wikipedia/Reddit/YouTube)
Technical Accessibility 20% 19/20 SSR, AI crawlers explicitly allowed, llms.txt present — near perfect

2. Platform Breakdown

Platform Est. Score Why
Google AI Overviews 80 Best-aligned — SSR + rich LocalBusiness/Person/FAQ schema + local entity signals. Citations come from top-ranking pages, so this rides your existing SEO.
Bing Copilot 68 Schema and SSR help; needs Bing index coverage + IndexNow.
ChatGPT (web search) 61 Leans on Wikipedia (47.9%) and Reddit (11.3%). No entity presence on either → low.
Perplexity 57 Reddit-driven (46.7%). No community validation present → weakest channel.

Implication: you are well-positioned for Google AIO and should focus net-new effort on the off-site signals that feed ChatGPT/Perplexity.


3. AI Crawler Access Status

src/routes/robots.txt/+server.ts explicitly allows the key search crawlers — this is correctly done:

Crawler Status
GPTBot (OpenAI) Allowed
OAI-SearchBot (OpenAI) Allowed
ClaudeBot (Anthropic) Allowed
PerplexityBot Allowed
Bingbot / others (*) Allowed (with sensible /api/, /variants/, /contract disallows)

No action required. One optional addition: ChatGPT-User (live browsing fetches) is not named but is covered by User-agent: *.


4. llms.txt Status

Present at static/llms.txt and well-structured — better than most sites. It already includes founder, contact, hours, pricing summary, service URLs, suburb list, and location-page index.

Minor improvements:

  • Update Last updated (currently 2026-05-18) on each meaningful content change.
  • Consider adding a one-line "What is Goodwalk" definitional sentence at the very top under > (the quotable blockquote) — AI models lift this verbatim.
  • Add the Meet & Greet is free fact and free pickup/drop-off as explicit bullet facts (they're a differentiator AI answers love to surface).

5. Brand Mention Analysis — biggest opportunity

Per Ahrefs (Dec 2025), brand mentions correlate ~3× more strongly with AI visibility than backlinks. This is your largest lever and it is entirely off-site.

Platform Presence Priority
Instagram @goodwalk.nz (linked, in sameAs) Maintained
Facebook Linked in footer Maintained
Google Business Profile g.page link + 30× 5-star reviews in schema Strong
Reddit None High — drives Perplexity (46.7%) + ChatGPT (11.3%)
YouTube None High — strongest single citation correlation (~0.737)
Wikipedia/Wikidata None Medium (hard for a small local business; skip unless notable)
LinkedIn (Alessandra) Not in Person sameAs Medium — easy entity win

Realistic actions for a local business:

  1. Get genuine mentions in Auckland subreddits (r/auckland, r/newzealand) — answer dog-care questions helpfully; don't spam.
  2. Post a few short YouTube clips (pack walk footage, "what is a Meet & Greet") — even low view counts create the entity association.
  3. List on NZ pet directories and local-business aggregators (consistent NAP).
  4. Add Alessandra's LinkedIn (if any) to the Person schema sameAs.

6. Passage-Level Citability

Optimal AI-citation block length is 134167 words, self-contained. Your on-page copy is deliberately fragmented brand voice — great for humans, weak for extraction:

"Built for dogs who do better one-on-one. Their pace. Their walk. Same walker every time." (dog-walking.ts)

These single-line fragments rarely get quoted because they don't answer a question standalone. Recommendation: keep the brand hero copy, but add one extractable answer block per service page, e.g.:

What is a solo dog walk? A solo dog walk is a one-on-one outing where a single dog is walked by the same walker every time, at the dog's own pace. Goodwalk offers solo walks across Auckland Central for dogs who do better without a group — reactive dogs, seniors, post-surgery recovery, and anxious rescues. Walks run 30 minutes (seniors/lower energy), 45 minutes (most dogs), or 60 minutes (longer outings), with free door-to-door pickup and drop-off and a photo update after every walk. Solo walks start from $45 per walk. (≈70 words — expand toward ~140 with a sentence on when to choose solo vs pack.)

Your llms.txt already does this well — the "Key facts" and "Pricing summary" blocks are exactly the quotable format. Mirror that density into visible page HTML.


7. Server-Side Rendering Check

  • SSR is on (adapter-node, no export const ssr = false anywhere). AI crawlers, which do not execute JS, will see full content.
  • All structured data is emitted server-side in <svelte:head> (SeoHead.svelte, FaqSection.svelte) — good.
  • ⚠️ One caveat: the <noscript> overlay says "Please enable JavaScript to use this site." The rendered HTML is fine for crawlers, but make sure the primary content is in the SSR payload and not gated behind hydration — the booking/contact form needing JS is fine; the service descriptions and FAQs must be in source HTML (they are, via the content modules — confirmed).

8. Top 5 Highest-Impact Changes

  1. Build off-site brand mentions (Reddit + YouTube + NZ directories). Highest correlation with AI citation; the single biggest unlock for ChatGPT/Perplexity. (High effort, high impact)
  2. Add a 134167 word "What is [service]?" answer block to each service page (pack-walks, dog-walking, puppy-visits) and an "How much does dog walking cost in Auckland?" block to /our-pricing. (Medium effort, high impact)
  3. Add price + priceCurrency to the Offer nodes in the homepage hasOfferCatalog (currently name/url only). Lets AI quote exact prices with confidence. (Low effort, medium impact)
  4. Create an Auckland dog-care FAQ / short guide page to capture informational AI queries ("how often should I walk my dog", "pack walk vs solo walk"). You have zero informational content today — purely commercial. (Medium effort, high impact)
  5. Add sameAs to the Person (Alessandra) schema and a visible author/founder byline with credentials (pet first-aid cert, insured) near service content. Strengthens E-E-A-T entity. (Low effort, medium impact)

9. Schema Recommendations

Already excellent: WebSite, LocalBusiness+PetCareService (with aggregateRating, review, openingHoursSpecification, areaServed, hasOfferCatalog), Person (founder, knowsAbout), FAQPage, BreadcrumbList, Service (location pages). Gaps to close:

// In hasOfferCatalog → each Offer, add price:
{
  "@type": "Offer",
  "itemOffered": { "@type": "Service", "name": "Tiny Gang Pack Walks", "url": "https://www.goodwalk.co.nz/pack-walks" },
  "price": "49.50",
  "priceCurrency": "NZD"
}
// Person (Alessandra) — add credentials + external entity links:
"hasCredential": [
  { "@type": "EducationalOccupationalCredential", "credentialCategory": "certificate", "name": "Pet First Aid Certificate" }
],
"sameAs": ["https://www.linkedin.com/in/..."]   // if available
  • Add priceRange (e.g. "$$") and a geo node (latitude/longitude) to the LocalBusiness — both are standard LocalBusiness AI signals currently absent.
  • Optionally model each service page as its own Service with an OfferCatalog so service pages stand alone as cited entities (location pages already do this well).

10. Content Reformatting Suggestions

Page Current Suggested GEO addition
/dog-walking (solo) Brand fragments, no definition Add "What is a solo dog walk?" 140-word block (see §6)
/pack-walks Add "What is a Tiny Gang pack walk?" + a pack vs solo comparison table (dogs per group, best for, price)
/puppy-visits Add "What happens in a puppy visit?" + duration/price block
/our-pricing Pricing copy Add "How much does a dog walker cost in Auckland?" answer block with a clean price table (service / duration / price NZD)
New: /guide or FAQ hub none Informational content to win non-commercial AI queries and earn citations

Tables are under-used. AI Overviews and Perplexity disproportionately cite comparative tables. A single "Pack vs Solo vs Puppy Visit" comparison table would be high-value and on-brand.


Bottom line

Technically this is a top-decile small-business GEO setup — SSR, AI crawler allow-list, llms.txt, and comprehensive schema are already done and done well. The remaining wins are content shape (add extractable answer blocks + tables, prices in schema) and, most of all, off-site brand presence (Reddit, YouTube, directories), which the data says matters more than anything on the page itself.