From 018024510bec4e9e96c46e19cfa88eef25d7eda3 Mon Sep 17 00:00:00 2001 From: ponzischeme89 Date: Sat, 4 Jul 2026 10:00:16 +1200 Subject: [PATCH] v4.0.6 0 Simplicity focus --- GEO-ANALYSIS.md | 160 + docs/v5.md | 134 + mail-api/__pycache__/main.cpython-314.pyc | Bin 294335 -> 347101 bytes mail-api/data/client_profiles.json | 32 +- mail-api/logs/mail-api.log | 4780 +++++++++++++++++ .../__pycache__/config.cpython-314.pyc | Bin 16830 -> 16874 bytes .../__pycache__/models.cpython-314.pyc | Bin 8071 -> 9561 bytes .../mail_api/__pycache__/myob.cpython-314.pyc | Bin 10837 -> 10881 bytes mail-api/mail_api/models.py | 44 +- mail-api/main.py | 583 +- .../admin-dashboard/AdminDashboard.svelte | 2882 ++++++++-- .../admin-dashboard/RichTextEditor.svelte | 297 + src/lib/components/pages/ContractPage.svelte | 2 +- .../components/pages/HomeServicesFocus.svelte | 737 +++ .../components/pages/OnboardingPage.svelte | 59 +- .../pages/PricingClarityPage.svelte | 557 ++ .../pages/ServiceClarityPage.svelte | 725 +++ .../sections/BookingSection.test.ts | 7 +- .../sections/BookingWizardSimple.svelte | 1076 ++++ .../sections/ServiceAreaCoverage.svelte | 347 ++ src/lib/components/ui/OnboardingFooter.svelte | 25 - src/lib/content/dog-walking.ts | 6 - src/lib/content/pack-walks.ts | 6 - src/lib/content/puppy-visits.ts | 6 - src/routes/home-page.server.test.ts | 5 +- src/routes/home-page.test.ts | 68 +- src/routes/variants/meet-greet/+page.svelte | 22 + src/routes/variants/our-pricing/+page.svelte | 19 + src/routes/variants/puppy-visits/+page.svelte | 23 + .../variants/services-first/+page.svelte | 21 + src/routes/variants/solo-walks/+page.svelte | 23 + 31 files changed, 11902 insertions(+), 744 deletions(-) create mode 100644 GEO-ANALYSIS.md create mode 100644 docs/v5.md create mode 100644 src/lib/components/admin-dashboard/RichTextEditor.svelte create mode 100644 src/lib/components/pages/HomeServicesFocus.svelte create mode 100644 src/lib/components/pages/PricingClarityPage.svelte create mode 100644 src/lib/components/pages/ServiceClarityPage.svelte create mode 100644 src/lib/components/sections/BookingWizardSimple.svelte create mode 100644 src/lib/components/sections/ServiceAreaCoverage.svelte create mode 100644 src/routes/variants/meet-greet/+page.svelte create mode 100644 src/routes/variants/our-pricing/+page.svelte create mode 100644 src/routes/variants/puppy-visits/+page.svelte create mode 100644 src/routes/variants/services-first/+page.svelte create mode 100644 src/routes/variants/solo-walks/+page.svelte diff --git a/GEO-ANALYSIS.md b/GEO-ANALYSIS.md new file mode 100644 index 0000000..8962e1b --- /dev/null +++ b/GEO-ANALYSIS.md @@ -0,0 +1,160 @@ +# 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 `
`; 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 **134–167 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 `` (SeoHead.svelte, FaqSection.svelte) — good. +- ⚠️ One caveat: the `