🤔 Stephanie, why is this important?
Your blog has been dead since November 2023. That means zero organic leads from content for 29 months. Every competitor who publishes is stealing search real estate you should own. This audit shows exactly what's broken and what the fix looks like.
Live Site Scan Results (April 17, 2026)
| Element | Current State | Best Practice | Gap |
| 📝 Blog posts visible | ~20 posts (stale since Nov 2023) | 2-4 new posts/month minimum | 🔴 CRITICAL |
| 📅 Post dates | Not visible on cards | Date + read time on every card | 🔴 CRITICAL |
| 📄 Post excerpts | Not visible | 2-3 sentence preview per card | 🔴 CRITICAL |
| 🏷️ Category filters | 6 buttons (All, Sewer Repair, Plumbing Repair, Maintenance, Leak Detection, Emergency) | Aligned to pillar/hub taxonomy + working JS | 🟡 EXISTS but weak |
| 🔍 Search | None | Search bar with autocomplete | 🔴 MISSING |
| 📊 Pagination | None visible | Load more / numbered pages | 🟡 Not needed yet (20 posts) |
| 👤 Author info | None | Author name + headshot per post | 🔴 MISSING |
| 📱 Sidebar | None | CTA + popular posts + lead magnet | 🔴 MISSING |
| 🏗️ Schema | None detected | CollectionPage + BreadcrumbList | 🔴 MISSING |
| 📌 Featured post | None | Hero featured post at top | 🔴 MISSING |
| 🔗 Internal links | Basic nav only | Service page cross-links in sidebar | 🟡 WEAK |
| 📞 CTA on archive | Header phone only | Sticky CTA + inline CTAs | 🔴 MISSING |
🚨 VERDICT: The Learning Center is a content graveyard. No dates, no excerpts, no search, no schema, no sidebar, no CTAs, no author info. It exists but does zero conversion work. 10 of 12 best-practice elements are missing or critically broken.
Current URL Structure
callbrightside.com/
├── learning-center/ ← Blog archive (THIS PAGE)
│ ├── [post-slug-1]/ ← Individual posts
│ ├── [post-slug-2]/
│ └── ... (~20 posts)
├── plumbing-services/ ← Service hub
│ ├── drain-cleaning/
│ ├── sewer-cleaning/ ← Note: NOT under /plumbing-services/
│ └── ...
├── sewer-repair/ ← Top-level (inconsistent hierarchy)
├── trenchless-sewer-repair/ ← Top-level (inconsistent)
├── water-heaters-installation/
├── service-areas/
│ └── plumber-[city]-[state]/ ← 15 location pages
└── about-us/
├── quality-plumber/
├── reviews/
└── financing/
⚠️ ISSUES FOUND:
1. Service pages have INCONSISTENT hierarchy
(some under /plumbing-services/, some top-level)
2. Blog uses /learning-center/ not /blog/
(lower SEO signal for blog intent queries)
3. No pillar/hub URL structure for content clusters
📝 Your Notes: Current State Saved
🤔 Stephanie, why is this important?
Google doesn't rank individual blog posts anymore. It ranks TOPICAL AUTHORITY. If you have one post about sewer repair, you're a random page. If you have a pillar page + 12 cluster posts + FAQ schema + internal links + local data, Google sees you as THE sewer repair authority in KC. That's how you steal organic traffic from competitors spending $200/lead on ads.
Architecture Source: Nexus Keyword North Star (234 Keywords, 28 Clusters)
This architecture is built from real keyword data scored by revenue weight (30%), search volume (20%), ranking difficulty (15%), and competitive gap (10%). Sewer repair scores highest at 70.7 average priority.
| # | Pillar | Type | Keywords | Monthly Volume | Avg Priority | Revenue/Job | Cluster Posts |
| 1 | 🔧 Sewer Repair | PILLAR | 49 | 24,930 | 70.7 | $3K-$15K | 12 |
| 2 | 🚨 Emergency Plumbing | PILLAR | 17 | 26,950 | 69.5 | $500-$2K | 8 |
| 3 | 🔥 Water Heater Install | PILLAR | 11 | 5,300 | 68.5 | $2K-$8K | 6 |
| 4 | 🔥 Water Heater Repair | PILLAR | 26 | 24,870 | 53.6 | $500-$2K | 6 |
| 5 | 🪠 Drain Cleaning | PILLAR | 20 | 15,040 | 57.5 | $150-$500 | 6 |
| 6 | 🔥 Gas Line Services | PILLAR | 16 | 8,140 | 66.6 | $500-$2K | 5 |
| 7 | 🏗️ Sewer Replacement | PILLAR | 19 | 8,370 | 67.7 | $5K-$20K | 6 |
Hub Pages (Supporting Pillars)
| Hub | Parent Pillar | Keywords | Volume | Posts Needed |
| 🔍 Sewer Camera Inspection | Sewer Repair | 6 | 2,580 | 3 |
| 🚿 Hydro Jetting | Drain Cleaning | 3 | 2,290 | 2 |
| 🏗️ Trenchless Repair | Sewer Replacement | 10 | 3,220 | 4 |
| 🛁 Bathroom Remodel Plumbing | General | 10 | 5,670 | 4 |
| 💧 Sump Pump | Emergency | 8 | 4,730 | 3 |
| 🔬 Plumbing Inspection | General | 10 | 2,910 | 3 |
| 💧 Water Treatment | General | 6 | 2,260 | 2 |
Spoke Pages (Long-tail, High-Intent)
| Spoke Topic | Parent | Volume | Why It Matters |
| 😷 Sewer smell in house | Sewer Repair | 2,780 | High-intent symptom search, low competition (difficulty 35.7) |
| 🏢 Commercial plumbing | General | 3,090 | Higher ticket, recurring contracts |
| 🥶 Frozen pipe repair | Emergency | 1,270 | Seasonal peak Jan-Feb, urgent intent |
| 🗑️ Garbage disposal | General | 1,470 | Entry service, upsell to sewer inspection |
| 🔙 Backflow testing | Commercial | 580 | Required by code, recurring revenue |
| 🌳 Tree roots in sewer line | Sewer Repair | Est. 500+ | #1 cause of sewer damage in KC, huge content gap |
| 🏠 Orangeburg pipe replacement | Sewer Replacement | Est. 300+ | KC-specific (1940s-1970s homes), high-ticket $9K |
| 📋 Sewer line insurance | Sewer Replacement | Est. 400+ | Informational intent, builds trust, pre-qualifies budget |
Pillar-Cluster Visual Architecture
┌─────────────────────────────────────────┐
│ 🔧 SEWER REPAIR (Primary Pillar) │
│ /learning-center/sewer-repair/ │
│ 49 keywords | 24,930 vol | $7.5K avg │
└──────────────────┬──────────────────────┘
│
┌───────────────┬───────────┼───────────┬────────────────┐
│ │ │ │ │
┌──────┴──────┐ ┌──────┴──────┐ ┌──┴───┐ ┌────┴─────┐ ┌───────┴───────┐
│ 🔍 Camera │ │ 🌳 Tree │ │ 😷 │ │ 🏠 │ │ 💰 Cost │
│ Inspection │ │ Roots │ │Sewer │ │Orangeburg│ │ Guide │
│ Hub (3) │ │ Spoke │ │Smell │ │ Spoke │ │ Cluster │
└─────────────┘ └─────────────┘ │Spoke │ └──────────┘ └──────────────┘
└──────┘
┌─────────────┐ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐
│ Signs You │ │ Trenchless │ │ KC Spring │ │ Insurance + │
│ Need Repair │ │ vs Tradi- │ │ Rain Sewer │ │ Sewer Lines │
│ Cluster │ │ tional │ │ Backups │ │ Spoke │
└─────────────┘ └─────────────┘ └──────────────┘ └──────────────────┘
LINKING RULES:
✅ Every cluster post links UP to its pillar page
✅ Every cluster post links ACROSS to 2+ sibling clusters
✅ Every pillar page links DOWN to all its clusters
✅ Every post links to 1+ service page (/sewer-repair/, /drain-cleaning/)
✅ Every post links to 1+ location page (/service-areas/plumber-overland-park-ks/)
✅ Pillar pages link to other pillars (sewer repair ↔ sewer replacement)
📊 Content Math: 7 pillars + 7 hubs + 8 spokes = 22 topic clusters. At 3-12 posts per cluster = 66-100 total blog posts needed for full topical authority. At 2 posts/week = 33-50 weeks to full coverage. At 1 post/week = 66-100 weeks (15-24 months).
📝 Your Notes: Content Architecture Saved
🤔 Stephanie, why is this important?
The blog archive is the FRONT DOOR to your content. Right now it's a wall of unlabeled cards with no dates, no excerpts, no search. Visitors land here and bounce because they can't find what they need. A properly designed archive page converts browsers into readers into callers.
Archive Page Wireframe
┌─────────────────────────────────────────────────────────────────────┐
│ NAV BAR (existing) 📞 (913) 963-1029 │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ BREADCRUMB: Home > Learning Center │
│ │
│ H1: Plumbing Tips, Guides + Expert Advice from KC's │
│ 5th-Generation Master Plumber │
│ │
│ Subtitle: Real answers from real plumbers. No fluff, │
│ no national averages. Just KC-specific plumbing expertise. │
│ │
│ 🔍 [Search plumbing topics...] │
│ │
│ CATEGORY PILLS: │
│ [All] [Sewer] [Water Heaters] [Drains] [Emergency] │
│ [Gas Lines] [Maintenance] [Cost Guides] │
│ │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ⭐ FEATURED POST (full-width hero card) │
│ ┌─────────────────────────────────────────────────────────────┐ │
│ │ [HERO IMAGE] Complete Guide to Sewer Repair │ │
│ │ in Kansas City │ │
│ │ Apr 15, 2026 · 12 min read │ │
│ │ By Kalen Barker, Master Plumber │ │
│ │ "Everything KC homeowners need to..."│ │
│ │ [Read Guide →] │ │
│ └─────────────────────────────────────────────────────────────┘ │
│ │
├───────────────────────────────────────────┬─────────────────────────┤
│ POST GRID (2 columns) │ SIDEBAR │
│ │ │
│ ┌──────────┐ ┌──────────┐ │ 📞 EMERGENCY? │
│ │ [IMAGE] │ │ [IMAGE] │ │ Call (913) 963-1029 │
│ │ SEWER │ │ WATER │ │ 24/7 Service │
│ │ Title... │ │ Title... │ │ [Call Now] │
│ │ Date · ⏱ │ │ Date · ⏱ │ │ │
│ │ Excerpt..│ │ Excerpt..│ │ ───────────────── │
│ │ [Read →] │ │ [Read →] │ │ │
│ └──────────┘ └──────────┘ │ 🔥 POPULAR POSTS │
│ │ 1. Signs of Sewer.. │
│ ┌──────────┐ ┌──────────┐ │ 2. Water Heater... │
│ │ [IMAGE] │ │ [IMAGE] │ │ 3. Emergency Plum.. │
│ │ DRAIN │ │ EMERGENCY│ │ 4. Trenchless vs.. │
│ │ Title... │ │ Title... │ │ 5. Frozen Pipes... │
│ │ Date · ⏱ │ │ Date · ⏱ │ │ │
│ │ Excerpt..│ │ Excerpt..│ │ ───────────────── │
│ │ [Read →] │ │ [Read →] │ │ │
│ └──────────┘ └──────────┘ │ 📥 FREE GUIDE │
│ │ "Home Plumbing │
│ [Load More Posts] │ Maintenance │
│ │ Checklist" │
│ │ [Download PDF] │
│ │ │
│ │ ───────────────── │
│ │ │
│ │ ⭐ 4.9 STARS │
│ │ 384+ Google Reviews │
│ │ [Read Reviews] │
│ │ │
│ │ ───────────────── │
│ │ │
│ │ 🔧 SERVICES │
│ │ · Sewer Repair │
│ │ · Water Heaters │
│ │ · Drain Cleaning │
│ │ · Leak Repair │
│ │ · Trenchless │
│ │ [All Services →] │
├───────────────────────────────────────────┴─────────────────────────┤
│ FOOTER (existing) │
└─────────────────────────────────────────────────────────────────────┘
Archive Page Schema (JSON-LD)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "CollectionPage",
"name": "Plumbing Tips, Guides & Expert Advice",
"description": "Expert plumbing guides from Bright Side Plumbing. Sewer repair, water heaters, drain cleaning, emergency plumbing tips for Kansas City homeowners.",
"url": "https://callbrightside.com/learning-center/",
"isPartOf": {
"@type": "WebSite",
"name": "Bright Side Plumbing & Heating",
"url": "https://callbrightside.com"
},
"breadcrumb": {
"@type": "BreadcrumbList",
"itemListElement": [
{"@type": "ListItem", "position": 1, "name": "Home", "item": "https://callbrightside.com/"},
{"@type": "ListItem", "position": 2, "name": "Learning Center", "item": "https://callbrightside.com/learning-center/"}
]
},
"publisher": {
"@type": "LocalBusiness",
"name": "Bright Side Plumbing & Heating",
"address": {
"@type": "PostalAddress",
"streetAddress": "12022 Blue Valley Pkwy",
"addressLocality": "Overland Park",
"addressRegion": "KS",
"postalCode": "66213"
},
"telephone": "+19139631029",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "384"
}
}
}
</script>
Post Card Requirements
| Element | Specification | Why |
| 📸 Featured image | 16:9 ratio, 800x450px, WebP, lazy-loaded | Visual hook, reduces CLS |
| 🏷️ Category badge | Colored pill matching pillar (e.g., red for Emergency) | Visual filtering cue |
| 📝 Title | H3, max 70 chars, keyword-first | SEO + scanability |
| 📅 Date | "Apr 15, 2026" format | Freshness signal for Google + users |
| ⏱️ Read time | "8 min read" (calculated at 200 wpm) | Sets expectation, reduces bounce |
| 📄 Excerpt | 2 sentences, max 160 chars | Gives reader reason to click |
| 👤 Author | Small avatar + "By Kalen Barker" | E-E-A-T signal (Experience, Expertise, Authority, Trust) |
| 🔗 Read more | "Read Guide →" or "Read Tips →" (not generic "Read More") | Specific CTA converts better |
📝 Your Notes: Archive Redesign Saved
🤔 Stephanie, why is this important?
Every blog post that ranks on page 1 follows a predictable structure. This isn't creative writing. It's engineering. The 12-section blueprint ensures every post has the right SEO signals, trust signals, conversion points, and internal links. Skip a section and you lose ranking power. The BB system (Bathroom Bidders) uses a 10-section version that's already proven. This is the plumbing-optimized evolution.
Post Anatomy (Top to Bottom)
┌─────────────────────────────────────────────────────────────┐
│ SEC 1: HERO + TITLE BLOCK │
│ ├── Featured image (16:9, real job photo, WebP) │
│ ├── H1: [Keyword-First Title + KC Angle] │
│ ├── Subtitle: [Persona + Promise] │
│ ├── Author: Kalen Barker | Date | Category | Read time │
│ └── Share: Facebook, X, Email, Copy URL │
├─────────────────────────────────────────────────────────────┤
│ SEC 2: OPENING HOOK (First 155 chars = meta description) │
│ ├── Relatable pain point (homeowner language) │
│ ├── Why it matters (cost, damage, safety) │
│ └── What this post delivers (promise) │
├─────────────────────────────────────────────────────────────┤
│ SEC 3: TABLE OF CONTENTS (clickable, sticky on desktop) │
│ └── H2 anchors listed, collapsible on mobile │
├─────────────────────────────────────────────────────────────┤
│ SEC 4: CORE CONTENT (3-7 H2 sections) │
│ ├── Each H2: Problem → Impact → Solution → BSP Service │
│ ├── Authority anchors (IPC, UPC, EPA, PHCC, IAPMO) │
│ ├── KC-specific data (soil conditions, freeze-thaw, etc.) │
│ ├── Real pricing ranges where applicable │
│ └── Internal links to service pages + location pages │
│ ┌───────────────────────────────────────────────────┐ │
│ │ 🟣 INLINE CTA (after section 2 of core content) │ │
│ │ "Need help now? Call (913) 963-1029 or │ │
│ │ schedule your free estimate." │ │
│ │ GA4 event: cta_click │ │
│ └───────────────────────────────────────────────────┘ │
├─────────────────────────────────────────────────────────────┤
│ SEC 5: COMPARISON TABLE (if applicable) │
│ └── Side-by-side: methods, costs, timelines, pros/cons │
├─────────────────────────────────────────────────────────────┤
│ SEC 6: STEP-BY-STEP PROCESS │
│ └── "What to expect when you call Bright Side" │
│ 1. Call + describe issue → 2. Camera inspection → │
│ 3. Diagnosis + quote → 4. Repair → 5. Warranty │
├─────────────────────────────────────────────────────────────┤
│ SEC 7: COST SECTION (pricing transparency) │
│ ├── "How much does [service] cost in Kansas City?" │
│ ├── Price range table by service type │
│ ├── "Factors that affect your quote" list │
│ └── Financing CTA → /financing/ (Wisetack) │
├─────────────────────────────────────────────────────────────┤
│ SEC 8: FAQ SECTION (4-8 questions, FAQPage schema) │
│ ├── Questions match "People Also Ask" queries │
│ ├── At least 2 KC-specific questions │
│ ├── Answers: 30-50 word opener + detail │
│ └── Each answer links to a relevant service or post │
├─────────────────────────────────────────────────────────────┤
│ SEC 9: TRUST BLOCK │
│ ├── "Why Choose Bright Side Plumbing" │
│ ├── 5th-generation master plumber │
│ ├── 4.9 stars, 384+ reviews │
│ ├── PHCC + ICC + IAPMO memberships │
│ ├── Flat-rate pricing, lifetime warranty │
│ └── $200 off sewer repairs promo (if applicable) │
├─────────────────────────────────────────────────────────────┤
│ SEC 10: RELATED CONTENT LINKS │
│ ├── Pillar page link (if this is a cluster post) │
│ ├── 2-3 related cluster posts │
│ ├── 1 service page │
│ └── 1 location page │
├─────────────────────────────────────────────────────────────┤
│ SEC 11: LEAD MAGNET / DOWNLOAD │
│ ├── "Download our [Topic] Checklist (Free PDF)" │
│ ├── Email gate optional (test gated vs ungated) │
│ └── GA4 event: checklist_download │
├─────────────────────────────────────────────────────────────┤
│ SEC 12: CLOSING CTA │
│ ├── Primary: "Schedule Your Free Estimate" → booking │
│ ├── Secondary: "Call (913) 963-1029" │
│ ├── Tertiary: Financing available → /financing/ │
│ └── GA4 events: cta_click, click_tel │
└─────────────────────────────────────────────────────────────┘
Section-by-Section Word Count Targets
| Section | Target Words | % of Post | Notes |
| 1. Hero + Title | 0 (visual) | - | Image + metadata only |
| 2. Opening Hook | 50-80 | 3% | First 155 chars = meta description |
| 3. Table of Contents | 0 (auto) | - | Generated from H2 tags |
| 4. Core Content | 800-1,200 | 50% | 3-7 H2 sections, each 150-300 words |
| 5. Comparison Table | 100-200 | 8% | Table + intro paragraph |
| 6. Step-by-Step | 150-250 | 10% | 5-step process, 30-50 words each |
| 7. Cost Section | 150-250 | 10% | Price table + factors list |
| 8. FAQ | 200-400 | 15% | 4-8 Q&As, 40-60 words each |
| 9. Trust Block | 80-120 | 5% | Credentials + social proof |
| 10. Related Links | 0 (links) | - | 4-6 internal links |
| 11. Lead Magnet | 30-50 | 2% | Download CTA + description |
| 12. Closing CTA | 30-50 | 2% | Booking + phone + financing |
| TOTAL | 1,800-2,500 | 100% | Sweet spot for service-area blog posts |
On-Page SEO Checklist (Every Post)
| # | Element | Specification | Check |
| 1 | Title tag | 50-60 chars, primary keyword first, " | Bright Side Plumbing" at end | ⬜ |
| 2 | Meta description | 150-160 chars, keyword + CTA + "(913) 963-1029" | ⬜ |
| 3 | H1 | ONE per page, contains primary keyword + KC/city name | ⬜ |
| 4 | H2/H3 hierarchy | Logical nesting, no skipping levels, keywords in 60%+ of H2s | ⬜ |
| 5 | URL slug | Short, hyphenated, keyword-rich (e.g., /sewer-repair-cost-kansas-city/) | ⬜ |
| 6 | Canonical tag | Self-referencing canonical | ⬜ |
| 7 | Open Graph | og:title, og:description, og:image (1200x630), og:url | ⬜ |
| 8 | Image alt text | Every image, descriptive, includes keyword where natural | ⬜ |
| 9 | Image format | WebP, lazy-loaded below fold, compressed under 100KB | ⬜ |
| 10 | Internal links | Min 3 service pages + 1 location page + 2 related posts | ⬜ |
| 11 | External links | 1-2 authoritative sources (IPC, EPA, PHCC research) | ⬜ |
| 12 | Word count | 1,800-2,500 words (never under 1,500) | ⬜ |
| 13 | Readability | Grade 7-9 reading level (Hemingway App) | ⬜ |
| 14 | Schema | Article + FAQPage + BreadcrumbList (see Section F) | ⬜ |
| 15 | Mobile test | Readable at 320px width, no horizontal scroll | ⬜ |
📝 Your Notes: Blog Post Blueprint Saved
🤔 Stephanie, why is this important?
Different search intents require different post formats. Someone searching "how to tell if my sewer line is broken" needs a How-To guide. Someone searching "trenchless vs traditional sewer repair" needs a Comparison post. Matching format to intent is how you win featured snippets and People Also Ask boxes.
| Type | When to Use | BSP Example Title | Target Keyword | Priority Score |
| 📋 How-To Guide | Process questions, DIY vs pro decisions | "How to Tell If Your Sewer Line Is Collapsing" | signs you need sewer line replacement | 79.5 |
| ❓ What-Is Explainer | Educational, awareness stage, definitions | "What Is Trenchless Sewer Repair? A KC Homeowner's Guide" | trenchless sewer repair Kansas City | 75.2 |
| 📊 Listicle | Symptom lists, tip collections, mistake roundups | "7 Signs You Need a Sewer Camera Inspection" | sewer camera inspection | 78.2 |
| 🏛️ Pillar Page | Comprehensive topic authority (3,000+ words) | "Complete Guide to Sewer Repair in Kansas City" | sewer repair Kansas City | 76.1 |
| 💰 Cost Guide | Pricing transparency, budget qualification | "How Much Does Sewer Repair Cost in Kansas City? (2026)" | sewer repair cost | 81.5 |
| ⚖️ Comparison | Decision-stage, method evaluation | "Trenchless vs Traditional Sewer Repair: KC Cost Comparison" | trenchless vs traditional sewer repair | 76.5 |
Type 1: How-To Guide Structure
H1: How to [Action] + [KC Qualifier]
│
├── Hook: Symptom the reader is experiencing
├── H2: What causes [problem]
│ ├── H3: Cause 1 (most common)
│ ├── H3: Cause 2
│ └── H3: KC-specific cause (soil, weather, age of homes)
├── H2: How to identify [problem]
│ ├── H3: Visual signs
│ ├── H3: Behavioral signs (slow drains, smells)
│ └── H3: When to call a professional
├── H2: Step-by-step: What happens when you call BSP
│ ├── Step 1: Phone consultation
│ ├── Step 2: Camera inspection
│ ├── Step 3: Diagnosis + options
│ └── Step 4: Repair + warranty
├── H2: Cost breakdown
├── H2: FAQ (4-6 questions, FAQPage schema)
├── Trust block
└── CTA: Schedule free estimate
SCHEMA: Article + HowTo + FAQPage + BreadcrumbList
TARGET: 1,800-2,200 words
FEATURED SNIPPET TARGET: Numbered list or table
Type 4: Pillar Page Structure (3,000+ words)
H1: Complete Guide to [Service] in Kansas City
│
├── Hook: "Everything KC homeowners need to know about..."
├── TABLE OF CONTENTS (sticky, clickable)
├── H2: What is [service]? (definition + how it works)
├── H2: Types of [service] (methods, materials, approaches)
│ ├── H3: Method A (with pros/cons table)
│ ├── H3: Method B
│ └── H3: Method C
├── H2: Signs you need [service] (symptom list)
├── H2: The [service] process step by step
├── H2: How much does [service] cost in KC?
│ ├── Price range table
│ ├── Factors affecting cost
│ └── Financing options (link to /financing/)
├── H2: [Service] for specific situations
│ ├── H3: Older homes (pre-1970s, Orangeburg, cast iron)
│ ├── H3: New construction
│ └── H3: Commercial properties
├── H2: KC-specific considerations
│ ├── H3: Soil conditions + clay content
│ ├── H3: Freeze-thaw cycles
│ ├── H3: Tree root prevalence
│ └── H3: Local permit requirements (Johnson County, KC MO)
├── H2: FAQ (8-12 questions, FAQPage schema)
├── H2: Why choose Bright Side (trust block)
├── Related posts grid (6 cluster links)
└── CTA: Schedule + Call + Financing
SCHEMA: Article + FAQPage + BreadcrumbList + Service
TARGET: 3,000-4,000 words
INTERNAL LINKS: 10+ (all clusters + service pages + locations)
UPDATE CADENCE: Monthly refresh with new data/case studies
Type 5: Cost Guide Structure (Highest Conversion Intent)
💰 Why cost guides convert best: Someone searching "how much does sewer repair cost in Kansas City" is 3-5x more likely to book a consultation than someone searching "what is trenchless sewer repair." They've already decided they need the service. They're price-shopping. Transparent pricing builds trust and pre-qualifies budget. Every service pillar should have a companion cost guide.
H1: How Much Does [Service] Cost in Kansas City? (2026 Pricing)
│
├── Hook: "The honest answer: it depends. Here's what affects your price."
├── H2: Quick answer (featured snippet target)
│ └── "In Kansas City, [service] typically costs $X,XXX to $XX,XXX..."
├── H2: Cost breakdown by type
│ └── TABLE: Service Type | Price Range | Timeframe | Notes
│ ├── Basic repair: $X,XXX - $X,XXX | 1-2 days
│ ├── Mid-range: $X,XXX - $X,XXX | 2-3 days
│ └── Full replacement: $XX,XXX - $XX,XXX | 3-5 days
├── H2: Factors that affect your price
│ ├── H3: Depth and location of the line
│ ├── H3: Repair method (trenchless vs excavation)
│ ├── H3: Pipe material (PVC, cast iron, Orangeburg, clay)
│ ├── H3: Permits and inspections
│ └── H3: Landscaping restoration
├── H2: Does insurance cover [service]?
├── H2: Financing options (link to Wisetack / Acorn Finance)
├── H2: How to avoid overpaying (red flags from contractors)
├── H2: FAQ (6-8 cost-focused questions)
├── Trust block
└── CTA: "Get a Free, No-Obligation Estimate"
SCHEMA: Article + FAQPage + BreadcrumbList
TARGET: 2,000-2,500 words
FEATURED SNIPPET: Price table format
UPDATE: Quarterly with current pricing data
📝 Your Notes: Post Types Saved
🤔 Stephanie, why is this important?
Schema markup is how you talk directly to Google. Without it, Google guesses what your page is about. With it, you tell Google exactly: "This is a blog post about sewer repair, written by a master plumber, with these FAQs, at this address, with this rating." That's how you get rich results (stars, FAQ dropdowns, How-To steps) in search results, which increases click-through rate by 20-40%.
Required Schema per Post Type
| Post Type | Schema 1 | Schema 2 | Schema 3 | Schema 4 |
| How-To Guide | Article | HowTo | FAQPage | BreadcrumbList |
| What-Is Explainer | Article | FAQPage | BreadcrumbList | - |
| Listicle | Article | FAQPage | BreadcrumbList | ItemList |
| Pillar Page | Article | FAQPage | BreadcrumbList | Service |
| Cost Guide | Article | FAQPage | BreadcrumbList | - |
| Comparison | Article | FAQPage | BreadcrumbList | - |
Article Schema Template (Every Post)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "[H1 Title]",
"description": "[Meta description]",
"image": "[Featured image URL]",
"datePublished": "2026-04-17",
"dateModified": "2026-04-17",
"author": {
"@type": "Person",
"name": "Kalen Barker",
"jobTitle": "5th-Generation Master Plumber",
"worksFor": {
"@type": "LocalBusiness",
"name": "Bright Side Plumbing & Heating"
}
},
"publisher": {
"@type": "LocalBusiness",
"name": "Bright Side Plumbing & Heating",
"logo": {
"@type": "ImageObject",
"url": "https://callbrightside.com/logo.png"
},
"address": {
"@type": "PostalAddress",
"streetAddress": "12022 Blue Valley Pkwy",
"addressLocality": "Overland Park",
"addressRegion": "KS",
"postalCode": "66213"
},
"telephone": "+19139631029",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "384"
}
},
"mainEntityOfPage": {
"@type": "WebPage",
"@id": "[Post URL]"
}
}
</script>
FAQPage Schema Template
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How much does sewer repair cost in Kansas City?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Sewer repair in Kansas City typically costs $3,000 to $15,000 depending on the scope of damage, repair method, and pipe material. Trenchless methods cost 20-30% more upfront but avoid landscaping restoration costs. Call (913) 963-1029 for a free estimate."
}
},
{
"@type": "Question",
"name": "What are signs of a damaged sewer line?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Common signs include slow drains throughout the house, sewage smell in your yard, wet spots in the lawn, foundation cracks, and increased pest activity. If you notice multiple symptoms, schedule a sewer camera inspection."
}
}
]
}
</script>
Featured Snippet Optimization
| Snippet Type | How to Win It | Example Query | Format |
| 📊 Table | Comparison table immediately after H2 | "sewer repair cost Kansas City" | Service | Cost | Timeline table |
| 📋 List | Numbered/bulleted list under H2 | "signs of sewer line damage" | 1. Slow drains 2. Sewage smell... |
| 📝 Paragraph | 40-50 word definition after "What is" H2 | "what is trenchless sewer repair" | Direct answer paragraph |
| 🔢 Steps | HowTo schema + numbered steps | "how to fix a sewer backup" | Step 1, Step 2, Step 3... |
📝 Your Notes: SEO + Schema Saved
🤔 Stephanie, why is this important?
The best blog content doesn't come from keyword tools. It comes from technicians. Every day your plumbers hear the same homeowner questions, see the same installation mistakes, and discover the same hidden damage. FICS captures those insights and turns them into blog posts that no competitor can replicate because they're grounded in real KC field experience. This is adapted from the BB system where Mike Voss's field notes generate 100% of their blog content.
FICS 5-Layer Capture System
🔧 LAYER 1: Pre-Job Quick Tap (30 seconds)
→ Job type, expected complexity, initial assumption
→ "Based on what I see, I think the main issue is..."
🔍 LAYER 2: Mid-Job Reality Check (during work)
→ What surprised you? (moisture, previous bad work, wrong materials)
→ "The moment I realized this job was different was when..."
✅ LAYER 3: Post-Job Reflection (2 minutes, tools packed)
→ Root cause + what would have prevented it
→ "If the homeowner had done one thing earlier..."
🚗 LAYER 4: Drive-Home Voice Note (60-90 seconds, optional but gold)
→ "What did the customer believe at the start, and what
did they understand by the end?"
→ Tool: Samsung/iPhone Voice Recorder → shared folder
📊 LAYER 5: Weekly Synthesis (Robert, NOT technicians)
→ Review last 5-10 jobs for repeating patterns
→ Tag each insight to a pillar (sewer, water heater, drain, etc.)
→ Feed directly into content calendar
Google Form: "BSP Field Notes" (Mobile-Friendly, 2-5 min)
| Section | Questions | Input Type |
| A. Job Context | Job type (dropdown), Property type, City/Area | Dropdown + Short |
| B. Before You Started | Expected complexity, Main issue expected, One-sentence assumption | MC + Short |
| C. What You Found | What surprised you? (checkboxes), "The moment I realized..." | Checkbox + Short |
| D. After the Job | Root cause, What would have prevented it?, "If the homeowner..." | MC + Checkbox + Short |
| E. Customer Perspective | What did they believe? What did they understand by the end? | Short + Short |
| F. Tag This Insight | Which pillars does this apply to? (checkboxes) | Checkbox |
| G. Voice Note | Did you record one? Link to recording. | Y/N + Short |
Field Signal → Content Mapping
| Field Signal | Threshold | Content Output |
| Same mistake seen across jobs | 3+ times | Blog post (Listicle: "X Signs You Need...") |
| Same customer objection | 2+ times | FAQ block added to existing post |
| Same surprise finding | 2+ times | Visual/infographic content |
| Cost confusion from customers | Any | Cost Guide post |
| Repeated "wish I knew" moments | 2+ times | How-To Guide post |
| Seasonal pattern | Annual | Seasonal post (refreshed yearly) |
Topic Evaluation Scorecard (Min 7/10 to Write)
| Criteria | Points | How to Score |
| 🔍 Search demand | 0-2 | 0=none, 1=moderate (50-200/mo), 2=high (200+/mo) |
| 🏠 KC-specific relevance | 0-2 | 0=national only, 1=some local angle, 2=deeply local (soil, weather, codes) |
| 💰 Conversion potential | 0-2 | 0=awareness only, 1=consideration, 2=decision stage (pricing, booking) |
| 🔧 Field evidence (FICS) | 0-2 | 0=theoretical, 1=seen once, 2=recurring pattern from technicians |
| ⚔️ Competitive gap | 0-2 | 0=crowded/10+ competitors, 1=some content exists, 2=nobody owns this in KC |
🤔 Stephanie, why is this important?
Plumbing is seasonal. Frozen pipes in January, sump pump failures in April, sewer backups in spring rains, water heater deaths in December. Publishing the right content at the right time means showing up in search results when homeowners are actively experiencing the problem. This calendar maps content to KC seasonal patterns so every post publishes 2-4 weeks BEFORE peak demand.
Annual Content Cadence
| Cadence | Frequency | Owner |
| 📝 Blog posts | 2 per week (104/year) | Robert (write) + Kalen (review) |
| 📱 GBP posts | 3 per week (156/year) | Robert (auto from blog) |
| 📸 Social posts | 5 per week (260/year) | Metricool (scheduled from blog) |
| 📧 Email newsletter | 1 per month (12/year) | Robert (curated from blog) |
| 🔄 Content refresh | Monthly (top 5 posts) | Robert |
Seasonal Content Map
| Month | Theme | Top Issues | Pillar Focus | Blog Topics (2/week) |
| 🥶 Jan | Frozen Pipe Season | Burst pipes, no hot water, heating failures | Emergency + Water Heater | Frozen pipe prevention, Water heater failure signs, Emergency plumber checklist, When to DIY vs call a pro |
| ❄️ Feb | Winter Damage | Pipe bursts from thaw, water heater strain | Emergency + Water Heater | Thaw damage guide, Tankless vs tank comparison, Pipe insulation guide, Water heater maintenance |
| 🌧️ Mar | Spring Rain Prep | Sewer backups, root intrusion, sump pump | Sewer Repair + Sump Pump | Sewer backup prevention, Tree root intrusion, Sump pump maintenance, Spring plumbing checklist |
| 🌱 Apr | Sewer Season Begins | Ground saturation, backup spikes | Sewer Repair | Signs of sewer damage, Camera inspection guide, Trenchless vs traditional, Sewer repair cost guide |
| ☀️ May | Outdoor Plumbing | Gas line for grills, irrigation, hose bibs | Gas Line + General | Gas line for grill install, Outdoor plumbing prep, Sprinkler system plumbing, Gas leak detection |
| 🔥 Jun | Summer Projects | Bathroom remodels, water heater upgrades | General + Water Heater | Bathroom remodel plumbing, Kitchen plumbing upgrade, Whole house water filter, Summer drain care |
| 🌡️ Jul | Peak Service | Heavy use, drain clogs, garbage disposal | Drain Cleaning | Garbage disposal guide, Drain cleaning methods, Hydro jetting explained, Grease trap maintenance |
| 🏫 Aug | Back-to-School | Commercial prep, multi-family, inspections | Commercial + Inspection | Commercial plumbing inspection, Multi-family plumbing, School facility prep, Backflow testing |
| 🍂 Sep | Fall Maintenance | Pre-winter prep, water heater service | Maintenance + Water Heater | Fall plumbing checklist, Water heater flush guide, Sewer scope before buying a home, Annual inspection |
| 🎃 Oct | Winterization | Pipe winterizing, exterior shutoff | Emergency + General | Winterize your plumbing, Outdoor faucet shutdown, Water heater efficiency, Orangeburg pipe age check |
| 🍁 Nov | Holiday Prep | Heavy kitchen use, drain overload, guest bathrooms | Drain Cleaning + General | Holiday drain survival, Guest bathroom plumbing, Kitchen disposal tips, Sewer line holiday stress |
| 🎄 Dec | Emergency Season | Frozen pipes, water heater deaths, holiday emergencies | Emergency + Water Heater | Emergency plumber guide, Water heater replacement, Holiday plumbing disasters, Year-end maintenance |
First 12 Posts: Priority Queue (Revenue-Weighted)
| # | Title | Type | Pillar | Keyword | Score |
| 1 | Complete Guide to Sewer Repair in Kansas City | Pillar | Sewer | sewer repair Kansas City | 81.5 |
| 2 | How Much Does Sewer Repair Cost in Kansas City? (2026) | Cost Guide | Sewer | sewer repair cost | 81.5 |
| 3 | 7 Signs You Need a Sewer Camera Inspection | Listicle | Sewer | sewer camera inspection | 78.2 |
| 4 | Trenchless vs Traditional Sewer Repair: KC Cost Comparison | Comparison | Sewer | trenchless sewer repair Kansas City | 76.5 |
| 5 | What Is Trenchless Sewer Repair? A Homeowner's Guide | What-Is | Sewer | trenchless sewer repair | 75.2 |
| 6 | Water Heater Installation Cost in Overland Park (2026) | Cost Guide | Water Heater | water heater installation Overland Park | 80.0 |
| 7 | 5 Signs Your Sewer Line Needs Replacement | Listicle | Sewer Replace | signs you need sewer line replacement | 79.5 |
| 8 | Emergency Plumber in Overland Park: What to Do First | How-To | Emergency | emergency plumber Overland Park | 79.5 |
| 9 | Orangeburg Pipe Replacement: What KC Homeowners Need to Know | What-Is | Sewer Replace | orangeburg pipe replacement KC | 78.3 |
| 10 | Why Sewer Backups Spike During KC Spring Rains | How-To | Sewer | sewer backup Kansas City | 78.2 |
| 11 | Tree Root Intrusion: The #1 Cause of Sewer Damage in KC | What-Is | Sewer | tree roots in sewer line | 77.0 |
| 12 | Gas Leak Detection in Kansas City: Signs, Costs, Next Steps | How-To | Gas Line | gas leak detection Kansas City | 76.3 |
📌 Note: 8 of the first 12 posts are sewer-focused. This is intentional. Sewer repair is BSP's #1 revenue driver ($3K-$15K per job). Establishing topical authority in sewer content first maximizes revenue impact per post. Water heater and emergency posts are mixed in to diversify while maintaining sewer dominance.
📝 Your Notes: Content Calendar Saved
🤔 Stephanie, why is this important?
A blog post that doesn't generate leads is a hobby project. Every post must have a clear path from "reading about sewer repair" to "calling (913) 963-1029" or "scheduling online." The conversion pipeline maps every touchpoint from first click to booked job, with GA4 events tracking each step so you can measure ROI per post.
Conversion Funnel: Blog Reader → Booked Job
STAGE 1: DISCOVERY
└── Google search → Blog post appears in SERP
└── Rich result (FAQ dropdown, stars, author) → Higher CTR
STAGE 2: ENGAGEMENT
└── Reader lands on post → Reads core content
└── GA4: page_view, scroll_depth, engaged_session
STAGE 3: INTENT SIGNALS
├── Clicks inline CTA → GA4: cta_click (location: mid_article)
├── Downloads checklist PDF → GA4: checklist_download
├── Expands FAQ answer → GA4: faq_click
├── Views cost table → GA4: scroll_depth (75%+)
└── Clicks service page link → GA4: internal_link_click
STAGE 4: CONVERSION
├── Calls (913) 963-1029 → GA4: click_tel → ServiceTitan: inbound call
├── Clicks "Schedule Estimate" → GA4: schedule_click → ServiceTitan: booking
├── Clicks financing link → GA4: financing_click → Wisetack application
└── Submits contact form → GA4: form_submit → ServiceTitan: lead
STAGE 5: ATTRIBUTION
└── ServiceTitan: Job booked → Revenue recorded
└── GA4: Multi-touch attribution → Blog gets credit
└── Monthly report: Revenue per blog post
CTA Placement Strategy
| Position | CTA Type | Text | GA4 Event |
| After Section 2 (core) | Inline soft CTA | "Need help now? Call (913) 963-1029 or schedule your free estimate." | cta_click (mid_article) |
| After cost section | Financing CTA | "Financing available. 0% APR options through Wisetack." | financing_click |
| After FAQ | Booking CTA | "Still have questions? Schedule a free on-site estimate." | cta_click (post_faq) |
| Bottom of post | Primary CTA block | Phone + Booking + Financing (triple option) | cta_click (bottom) |
| Sticky mobile | Phone bar | "📞 Call Now" (fixed bottom on mobile) | click_tel (sticky) |
| Sidebar (desktop) | Emergency CTA | "Emergency? Call 24/7: (913) 963-1029" | click_tel (sidebar) |
Lead Magnet Strategy per Pillar
| Pillar | Lead Magnet | Format | Gate? |
| 🔧 Sewer Repair | "Sewer Health Checklist: 10 Signs to Watch For" | PDF (1-pager) | Ungated (trust builder) |
| 🔥 Water Heater | "Water Heater Buyer's Guide: Tank vs Tankless" | PDF (2-pager) | Email gated |
| 🚨 Emergency | "Emergency Plumbing Action Plan" (fridge magnet format) | PDF (printable) | Ungated |
| 🪠 Drain Cleaning | "Monthly Drain Maintenance Checklist" | PDF (1-pager) | Ungated |
| 🔥 Gas Line | "Gas Leak Safety Guide" (what to do, who to call) | PDF (1-pager) | Ungated (safety = trust) |
| 🏗️ Sewer Replacement | "Is My Sewer Line Failing? Self-Assessment Quiz" | Interactive quiz | Email to get results |
| 📋 General Maintenance | "Annual Home Plumbing Inspection Checklist" | PDF (2-pager) | Email gated |
📝 Your Notes: Conversion Pipeline Saved
🤔 Stephanie, why is this important?
Publishing a blog post and waiting for Google to rank it is like opening a restaurant and not telling anyone. Every post needs active distribution across 5+ channels. The BB system distributes every post to 8 platforms automatically via Zapier. BSP should use Metricool (already in the stack) for scheduling + GBP posts for local SEO + ServiceTitan follow-ups for customer retention.
Distribution Pipeline: One Post → 7 Channels
📝 BLOG POST PUBLISHED
│
├──→ 📱 METRICOOL (same day)
│ ├── Facebook: 2-3 sentence teaser + link + image
│ ├── Instagram: Carousel summary (5 slides) + bio link
│ ├── LinkedIn: Professional angle + Kalen perspective
│ └── YouTube Community: If video companion exists
│
├──→ 📍 GOOGLE BUSINESS PROFILE (same day)
│ └── "What's New" post: 100-word summary + CTA + link
│ ⚠️ GBP posts expire after 7 days. Schedule 3/week.
│
├──→ 🏘️ NEXTDOOR (within 48 hours)
│ └── Community post: Helpful tip format, NOT promotional
│ Mention Overland Park/KC, be neighborly
│
├──→ 📧 EMAIL NEWSLETTER (monthly roundup)
│ └── Top 4 posts of the month + 1 featured
│ ServiceTitan customer list or HubSpot CRM
│
├──→ 🔧 SERVICETITAN (post-job follow-up)
│ └── Automated email 7 days after job completion:
│ "Here's a guide to maintaining your [service]"
│ Links to relevant blog post based on job type
│
├──→ 🏠 TECHNICIAN ENABLEMENT
│ └── Weekly Slack/text to techs with "share this with customers"
│ Pre-written text + link for easy forwarding
│
└──→ 🔄 CONTENT REFRESH (monthly)
└── Update top 5 posts: new data, new FAQs, refresh date
Resubmit URL to Google Search Console after update
📝 Your Notes: Distribution Saved
🤔 Stephanie, why is this important?
Most KC plumbing companies have zero blog strategy. The ones that do write generic national content. Nobody is publishing KC-specific sewer repair guides with real pricing, local soil data, and Johnson County permit info. That's the gap. Owning it means owning the organic search results for the highest-revenue plumbing keywords in the metro.
Top 20 Keyword Opportunities (From Nexus Keyword North Star)
| # | Keyword | Volume | Difficulty | Avg Ticket | Score | Content Exists? |
| 1 | sewer repair Overland Park | 170 | 45 | $7,500 | 81.5 | NO |
| 2 | sewer repair Leawood | 50 | 30 | $7,500 | 80.2 | NO |
| 3 | water heater installation Overland Park | 90 | 42 | $2,200 | 80.0 | NO |
| 4 | sewer line replacement Overland Park | 140 | 45 | $9,000 | 79.5 | NO |
| 5 | emergency plumber Overland Park | 140 | 45 | $800 | 79.5 | NO |
| 6 | sewer repair Lenexa | 70 | 35 | $7,500 | 79.3 | NO |
| 7 | sewer repair Shawnee | 60 | 35 | $7,500 | 79.3 | NO |
| 8 | sewer repair Olathe | 110 | 40 | $7,500 | 78.5 | NO |
| 9 | orangeburg pipe replacement KC | 50 | 30 | $9,000 | 78.3 | NO |
| 10 | sewer backup Kansas City | 140 | 42 | $7,500 | 78.2 | NO |
🚨 CRITICAL GAP: All top 10 keyword opportunities score 78+ priority and BSP has ZERO content for any of them. Every one of these searches sends potential $7,500+ sewer jobs to competitors. At 2 posts/week, BSP can own all 10 within 5 weeks.
KC Competitor Content Audit
| Competitor | Blog Posts | Update Frequency | Schema | Lead Magnets | Pricing |
| A-1 Sewer & Septic | ~15 | Quarterly | None | None | None |
| Mr. Rooter KC | ~30 | Monthly (national) | Basic | None | None |
| Benjamin Franklin Plumbing | ~50 | Monthly (national) | Basic | None | None |
| Anthony Plumbing | ~20 | Infrequent | None | None | None |
| BSP (current) | ~20 | Dead (Nov 2023) | None | None | $200 off coupon |
Content Advantages BSP Can Build That Competitors Can't
| Advantage | Why Competitors Can't Copy | Content Type |
| 🏆 5th-generation master plumber authorship | Nobody else has this lineage | Author bio, E-E-A-T signal on every post |
| 💰 Real KC pricing (not national averages) | Franchises use corporate content | Cost guides with local price tables |
| 🌍 KC soil + weather expertise | National brands don't localize | Posts about clay soil, freeze-thaw, tree roots |
| 🔧 FICS field intelligence | Requires active technician participation | Real stories, real mistakes, real photos |
| 📋 Johnson County permit knowledge | Only local companies know the specifics | Permit guides, inspection requirements |
| ⭐ 4.9 stars / 384+ reviews | Takes years to build | Review snippets in every post |
| 🏗️ Orangeburg/cast iron/clay pipe expertise | KC-specific pipe inventory knowledge | Dedicated spoke content for each pipe type |
📝 Your Notes: Competitive Gap Saved
🤔 Stephanie, why is this important?
This is the build order. Phase 1 fixes the archive page and publishes the sewer pillar (highest revenue impact). Phase 2 expands clusters. Phase 3 adds secondary pillars. Phase 4 is the optimization flywheel. Each phase has specific deliverables, timelines, and success metrics so you know exactly where you are.
Phase 1: Foundation (Weeks 1-3)
| Week | Task | Owner | Deliverable | Hours |
| 1 | Rebuild /learning-center/ archive page | Robert | New layout with sidebar, search, filters, featured post, schema | 8 |
| 1 | Set up FICS Google Form | Robert | Mobile-friendly form on technician home screens | 2 |
| 1 | Create blog post template in WordPress | Robert | Oxygen Builder template with all 12 sections pre-built | 4 |
| 2 | Write sewer repair pillar page | Robert + Kalen | 3,000+ word pillar: "Complete Guide to Sewer Repair in KC" | 6 |
| 2 | Write sewer cost guide | Robert | "How Much Does Sewer Repair Cost in Kansas City? (2026)" | 4 |
| 3 | Write 4 sewer cluster posts | Robert | Camera inspection, Trenchless vs Traditional, Signs, Tree roots | 12 |
| 3 | Create first lead magnet PDF | Robert | "Sewer Health Checklist" (1-page PDF) | 2 |
| 3 | Set up GA4 events for blog | Robert | cta_click, click_tel, checklist_download, scroll_depth, faq_click | 3 |
Phase 2: Cluster Expansion (Weeks 4-8)
| Week | Posts | Pillar | Cumulative Total |
| 4 | 2 (emergency plumber + sewer backup) | Emergency + Sewer | 8 |
| 5 | 2 (water heater install + orangeburg) | Water Heater + Sewer Replace | 10 |
| 6 | 2 (gas leak + sewer replacement cost) | Gas Line + Sewer Replace | 12 |
| 7 | 2 (emergency pillar + drain cleaning pillar) | Emergency + Drain | 14 |
| 8 | 2 (hydro jetting + sump pump) | Drain + Emergency | 16 |
Phase 3: Secondary Pillars (Weeks 9-16)
Build out water heater, gas line, and drain cleaning pillars with 4-6 cluster posts each. Target: 30+ total posts by week 16.
Phase 4: Optimization Flywheel (Month 5+)
MONTHLY OPTIMIZATION LOOP:
┌───────────────────────────────────────────────────────────┐
│ 1. REVIEW: GA4 data for top 10 posts │
│ → Which posts drive calls? Which have high bounce? │
│ │
│ 2. REFRESH: Update top 5 posts │
│ → New FAQ, new pricing data, new case studies │
│ → Update dateModified in schema │
│ → Resubmit URL to Search Console │
│ │
│ 3. EXPAND: Add 1-2 new FAQs from FICS data │
│ → Technician field notes → FAQ blocks │
│ │
│ 4. LINK: Add internal link from 1 new post │
│ → Every new post should link to existing top posts │
│ │
│ 5. DISTRIBUTE: Reshare top performers on social │
│ → Metricool scheduling for evergreen content │
│ │
│ 6. MEASURE: Monthly blog ROI report │
│ → Organic traffic, leads, booked jobs, revenue │
│ │
│ REPEAT EVERY 30 DAYS. After 12 months of this loop, │
│ conversion rate should DOUBLE from launch baseline. │
└───────────────────────────────────────────────────────────┘
📝 Your Notes: Implementation Saved
🤔 Stephanie, why is this important?
"We are not interested in activity-based reporting. We are interested in revenue-tied performance." Your words. Every blog metric ties to revenue. Not pageviews. Not likes. Revenue per post. Cost per organic lead. Organic share of total leads. These are the numbers that prove the blog is working or that something needs to change.
Blog KPI Dashboard
| KPI | Month 1 | Month 3 | Month 6 | Month 12 | Source |
| 📝 Posts published (cumulative) | 6 | 16 | 30 | 60+ | WordPress |
| 👁️ Organic blog traffic | 50-100 | 500-1,000 | 2,000-4,000 | 8,000-15,000 | GA4 |
| 📊 Blog conversion rate | 1-2% | 2-3% | 3-5% | 5-7% | GA4 |
| 📞 Calls from blog | 1-2 | 10-20 | 30-60 | 80-120 | GA4 + ServiceTitan |
| 💰 Revenue from blog leads | $2K-$5K | $15K-$40K | $50K-$100K | $150K-$250K | ServiceTitan |
| 🔍 Keywords ranked (page 1) | 0-2 | 5-15 | 20-40 | 50-80 | Semrush |
| 💲 Cost per organic lead | N/A | $50-80 | $25-40 | $15-25 | Calculated |
| 📈 Organic share of total leads | 0-1% | 3-5% | 8-15% | 20-30% | GA4 + ServiceTitan |
Blog ROI Math
INVESTMENT (Year 1):
Robert's time: ~10 hrs/week × 52 weeks × $33.65/hr = $17,498
(10 hrs = 4 hrs writing + 2 hrs distribution + 2 hrs optimization + 2 hrs FICS)
RETURN (Year 1, conservative):
Month 6 organic leads: 40/month × $1,786 avg ticket × 80% booking = $57,152/mo
Month 12 organic leads: 100/month × $1,786 avg ticket × 80% booking = $142,880/mo
Year 1 cumulative (ramp curve): ~$500,000-$750,000 in blog-attributed revenue
ROI: $500K revenue / $17.5K investment = 28.6x return
COMPARISON:
Google Ads: $200 CPL × 100 leads = $20,000/month spend
Blog organic: $25 CPL × 100 leads = $2,500/month (Robert's time)
SAVINGS: $17,500/month = $210,000/year in reduced ad dependency
🤔 Stephanie, why is this important?
This section exists because we've learned the hard way that missing one file can invalidate an entire strategy. Every source file that fed this playbook is listed below. Every gap is flagged. Nothing is assumed.
Source Files Consumed
| File | Lines/Pages | Key Contribution | Status |
| BB_BLOG_POST_CREATION_SYSTEM.md | 3,452 lines | 10-section blueprint, FICS, 8-hub architecture, brand voice, QA checklist | READ |
| keyword_priority_20260303.txt | 57 lines | 234 keywords scored, top 20 opportunities, service priority ranking | READ |
| keyword_clusters_20260303.txt | 230 lines | 28 clusters (7 pillar, 10 hub, 11 spoke), keyword assignments | READ |
| content_calendar_march.txt | 226 lines | Monthly calendar template, 40 pieces/month cadence, seasonal mapping | READ |
| blog_outline_sewer_repair_overland_park.txt | 106 lines | Sample blog outline with H2s, FAQs, internal links, competitor analysis | READ |
| DWC_Service_Page_STRATEGY_Master.md | 150+ lines | 7-layer revenue ecosystem, programmatic SEO multipliers | READ |
| DWC_Service_Page_Build_Playbook_2026.md | 150+ lines | 12-section template, SEO checklist, schema templates | READ |
| BrightSide_Growth_Strategy_2026.html | 3,207+ lines | LSA strategy, review velocity, organic growth targets, revenue projections | READ (style) |
| BrightSide CLAUDE.md | 240 lines | Tech stack, team, revenue targets, operating rules, known issues | READ |
| _extracted_bb_conversations.md | 21,951 lines | Hub code naming evolution, Pinterest board mapping, ChatGPT blindspot audit | SEARCHED |
| BB_social_media_ops_extracted/ | 19 files | Social distribution pipeline, caption generation, platform rules | SEARCHED |
| Pillar Page Blog Post Template.docx | Found | HubSpot pillar-cluster model | READ (prev session) |
| How to_ Blog Post Template.docx | Found | How-to post blueprint | READ (prev session) |
| List Blog Post Template.docx | Found | Listicle blueprint | READ (prev session) |
| What is_ Blog Post Template.docx | Found | Educational post blueprint | READ (prev session) |
| Infographic Blog Post Template.docx | Found | Visual content blueprint | READ (prev session) |
| Newsjacking Blog Post Template.docx | Found | Trending topic blueprint | READ (prev session) |
| best-damn-web-marketing-cheat-sheet1.pdf | PDF | Marketing fundamentals reference | FOUND (PDF read failed) |
| SEJ_RankingFactors2023.pdf | PDF | Google ranking factors research | FOUND (PDF read failed) |
| 2025_Local_SEO_Cheat_Sheet.pdf | PDF | Local SEO signals reference | FOUND (PDF read failed) |
| Bathroom Bidders, LLC -ChatGBT archive.pdf | 940KB | Historical ChatGPT conversations about BB content strategy | FOUND (PDF read failed) |
| callbrightside.com (live scan) | 10+ pages | Current site structure, archive page state, service pages, schema gaps | SCANNED |
Gaps Identified
| # | Gap | Impact | Resolution |
| 1 | 3 PDFs couldn't be read (pdftoppm not installed) | Low: content is reference material, not BSP-specific data | Install poppler-utils or read on next session |
| 2 | ChatGPT archive PDF not readable | Low: BB conversations already extracted in .md (21,951 lines searched) | Historical context already covered |
| 3 | No Semrush competitor ranking data | Medium: competitive gap analysis is estimated, not verified | Run Semrush audit when Robert has access |
| 4 | No ServiceTitan job type data | Medium: can't correlate blog topics to actual job revenue yet | Pull from ServiceTitan API when integrated |
| 5 | Contact + Coupons pages returning 500 errors | High: broken conversion pages hurt all traffic including blog | Fix immediately (separate from blog project) |
| 6 | /learning-center/ vs /blog/ URL decision | Medium: "learning center" is less SEO-standard than "blog" | Keep /learning-center/ (established URL equity) but add pillar subfolders |
| 7 | Oxygen Builder template not yet built | High: can't publish posts efficiently without reusable template | Phase 1, Week 1 deliverable |
| 8 | No author page for Kalen Barker | Medium: E-E-A-T requires author entity with credentials | Create /about-us/kalen-barker/ author page |
Site-Wide Pages That Need Their Own Playbooks
| Priority | Page | Current State | Revenue Impact | Effort |
| 🔴 1 | 8 Service Pages | Thin content, no FAQ, no pricing, no testimonials, no schema | HIGHEST (direct conversion pages) | 2-3 weeks |
| 🔴 2 | Contact Page | 500 ERROR (BROKEN) | CRITICAL (conversion endpoint) | 1 day fix |
| 🔴 3 | Coupons Page | 500 ERROR (BROKEN) | HIGH ($200 off sewer = lead magnet) | 1 day fix |
| 🟡 4 | Reviews Page | Empty (no actual reviews displayed) | HIGH (social proof for all traffic) | 1 week |
| 🟡 5 | FAQ Page | Only 7 questions, no schema, no accordion | MEDIUM (SEO + voice search) | 3 days |
| 🟡 6 | About Us + Quality Plumber | Two overlapping pages, no team bios, missing E-E-A-T | MEDIUM (trust building) | 1 week |
| 🟡 7 | Careers Page | 3 jobs listed, no JobPosting schema | LOW (hiring, not revenue) | 2 days |
| 🟢 8 | Financing Page | Functional (Wisetack + Acorn) | LOW (works fine, could add calculator) | 1 day |
| 🟢 9 | Service Area Hub | No interactive map, no schema, thin | MEDIUM (covered in Location Pages playbook) | Covered |
| 🟢 10 | Privacy/Terms | Boilerplate | NONE | Skip |
🚨 CRITICAL FINDING: Contact page and Coupons page are returning HTTP 500 errors. These are broken RIGHT NOW. Every blog post CTA that links to /contact-us/ is sending visitors to an error page. Fix these BEFORE launching any new content.
📝 Your Notes: Blindspot Check Saved
📊 TL;DR: 5 research dispatches across 11 LLM providers, 389 unique citations, 200 real plumbing SERP URLs scanned. The slug debate (`/blog/` vs `/learning-center/`) is settled — it's noise. The actual 2025-2026 fight is AI Overview. Three independent studies (Seer n=25.1M imps, Ahrefs n=300K, Pew n=68,879) converge: AIO eats −34% to −55% of position-1 click volume for informational queries. AIO citation logic is decoupled from rank — only 16.7% of citations come from top-10 organic. The architecture lever is content STRUCTURE, not URL slug.
389 CITATIONS
7 MODELS
200 SERP URLS
🎯 The Strategic Reframe
Stop optimizing for URL slug. Start optimizing for AI Overview citation.
Every "what should we name /blog/" hour is an hour not spent on the only ranking question that matters in 2026. Three converging studies on the magnitude:
- Seer Interactive (n=3,119 terms / 25.1M impressions): position-1 organic CTR drops −54.6% when AIO appears (1.41% → 0.64%)
- Ahrefs (n=300K keywords): position-1 CTR drops −34.5% with AIO present
- Pew Research (n=68,879 searches behavioral, 900 US adults): zero-click sessions go from 16% → 26% with AIO; CTR drops 15% → 8%
The biggest URL-related effect ever measured (Ahrefs r=−0.107 for URL length) is 3-4 orders of magnitude smaller than the AIO effect. The math is unambiguous.
📚 Evidence Stack — 12 Studies With Samples + Methods
| # | Study | Year | Sample / Method | Finding | Implication |
| 1 | Ahrefs SERP correlation (Stox/Guan) | Jan 2025 |
n=1,000,000 US SERPs, top 20 |
"keywords-in-URL" Spearman 0.034; URL length r=−0.107; refdomains 0.255 |
URL ≈ noise |
| 2 | Backlinko first-page audit | 2024 |
n=11,800,000 results |
Avg page-1 URL = 66 chars; URL length correlation "very slight" with no published coefficient. Schema markup correlates ZERO with rank. |
Schema ≠ rank lever |
| 3 | John Mueller, Bluesky | Jan 6 2025 |
Public statement + 14 prior 2006-2024 statements |
"URL alone brings minimal additional 'signal' for search engines" |
19yr Google line |
| 4 | Google Search Central — URL docs reissue | Jun 18 2025 |
Official re-issue |
"No change in behavior" — docs reorganization only |
Stance unchanged |
| 5 | Semrush Ranking Factors | 2024 |
n=300K positions (16,298 kw × 20 × 65 factors) |
Top factor: text relevance r=0.47. Subfolder naming not in 65 measured. |
Excluded from model |
| 6 | Seer Interactive AIO CTR | 2025 |
n=3,119 terms / 25.1M impressions |
Position-1 CTR −54.6% when AIO appears (1.41% → 0.64%) |
AIO devastating |
| 7 | Ahrefs AI Overview CTR | 2025 |
n=300K keywords |
Position-1 CTR −34.5% with AIO |
Confirms Seer |
| 8 | Pew Research behavioral | Mar 2025 |
n=68,879 searches, 900 US adults |
CTR 8% w/ AIO vs 15% without; zero-click 26% vs 16% |
Behavioral ≠ vendor |
| 9 | BrightEdge AIO citation source | 2025 |
AIO citation set audit |
Only 16.7% of AIO citations come from top-10 organic. Bulk from positions 21-100. |
AIO ≠ rank-derived |
| 10 | Ahrefs AI Mode citation concentration | 2025 |
AIO citation dataset |
Top 5 domains = 38% of AIO cites; top 20 = 66%. Local service businesses see "less dramatic AIO impact." |
Local cushion |
| 11 | Amsive AIO study | 2025 |
n=700,000 |
Avg CTR −15.49% w/ AIO; −19.98% for non-branded informational; −37.04% w/ AIO + Featured Snippet |
Class our hub serves: −20% |
| 12 | Google rich-result restrictions | Aug-Sep 2023 |
Google policy update |
HowTo + FAQPage rich results restricted to authoritative sites only |
Schema visibility cut |
🔍 SERP Audit — 200 Real Plumbing URLs
20 plumbing/HVAC informational queries × top-10 = up to 200 organic URLs scanned via SerpAPI/Perplexity. This is the only definitive industry-norm data in the bundle.
| Slug pattern | Count | % of 200 | Notable domains |
/blog/ family (incl. /our-blog/, branded blog) |
58 |
29% |
Independent service businesses dominate this bucket |
| Flat root-level (no hub slug) |
~32 |
16% |
Mid-tier service sites, ranking individual pages directly |
| YouTube |
~32 |
16% |
youtube.com |
| Proprietary branded paths |
~64 |
32% |
lowes /n/, home depot /c/, nerdwallet /foundations/, consumerreports, modernize |
/info-center/ |
~6 |
3% |
hotwater.com, manufacturer support sites |
/learning-center/ |
0 |
0% |
— |
/resources/, /guides/, /tips/, /articles/, /insights/ |
~8 |
4% |
Sparse representation |
⚠️ Reframe of the slug data: /blog/ at 29% looks like a winner. But independent service businesses (the ones we'd be matching) dominate that bucket — they almost unanimously use /blog/ or shallow root. The 32% proprietary branded slugs are big-box retailers (Lowes, Home Depot) — not a pattern an independent plumber should mimic. /learning-center/ is genuinely an outlier in the live SERP for this vertical. But migration cost beats marginal upside per Mueller's Jan 2025 explicit warning against URL changes for SEO + zero documented home-services migration case studies (Gap 5).
🏛️ EEAT — Measurable vs Claimed
Gap 2 closure: 24 KB of citations parsed. EEAT signals split into 3 measurable and 7 claimed-but-not-measured. Don't conflate them in the rank narrative.
| Signal | Measurable? | Source | What it actually buys |
Person schema with verifiable credentials |
YES |
Vendor research (Ahrefs, BrightEdge) + Google QRG |
Knowledge graph integration, AIO citation likelihood, EEAT entity binding |
AggregateRating on review schema |
YES |
Google Search Central — explicit eligibility for review rich result |
Star ratings in SERP (rich result), CTR lift, trust signal |
dateModified freshness on articles |
YES |
Multiple AIO citation studies — recency correlates with citation |
AIO citation likelihood, freshness signal in rank |
| 5-gen / family business credentials | Claimed | BSP narrative, no measurement | Conversion + trust narrative on-page (real value), but no rank lift attribution |
| License / insurance display | Claimed | Compliance + trust, not measured | Conversion + legal compliance, not a rank lever |
| Real photos vs stock | Claimed | Best-practice, not measured | Conversion + brand authenticity, not a rank lever |
| Years-in-business mention | Claimed | EEAT framing, no published correlation | Conversion narrative, EEAT signal stacking |
| Editorial process / fact-check notice | Claimed | Best-practice, no isolated measurement | EEAT signal in QRG, not direct rank lift |
| City/area service signals | Claimed | Mixed local-SEO data | Local pack inclusion, not blog-rank lift |
Organization + LocalBusiness schema (about page) | Claimed | Recommended but not directly correlated | Knowledge panel eligibility, AIO entity, not rank lift |
💡 Rule: Deploy the "claimed" signals because they're high-conversion and right for the brand — but in the playbook narrative, attribute their value to conversion + trust, not to rank lift. Only the 3 measurable signals get rank-attribution claims.
🧱 Schema Architecture — Recommended Stack (Gap 4, 70 citations)
Backlinko n=11.8M says schema correlates ZERO with rank. So why deploy any? Three reasons that are NOT rank: (a) rich-result eligibility, (b) AIO citation likelihood, (c) knowledge graph integration. Build each schema for the outcome it actually buys.
Per-page schema stack
| Page type | Schema | Outcome bought | Confidence |
| Homepage |
LocalBusiness + Plumber subtype + address + geo + AggregateRating |
Local pack inclusion, snippet stars, AIO local entity |
HIGH |
WebSite + SearchAction |
Sitelinks search box eligibility |
MED |
BreadcrumbList |
Breadcrumb rich result, navigation aid |
HIGH |
| Service pages (drain cleaning, water heaters, etc.) |
Service nested in LocalBusiness |
Service rich snippet, local entity |
HIGH |
BreadcrumbList |
Path clarity, breadcrumbs |
HIGH |
AggregateRating (if reviews available for that service) |
SERP stars |
HIGH |
| Blog articles (how-to, tips, guides) |
Article (NOT BlogPosting — Google treats them identically; Article is canonical) |
AIO citation entity binding, freshness via dateModified |
MED |
HowTo (only if article is genuinely a how-to) |
Rich result eligibility (restricted post-Aug 2023 to authoritative sites — may not buy us anything until BSP authority builds) |
CONDITIONAL |
FAQPage (only on articles with genuine FAQ section) |
FAQ accordion in SERP (restricted post-Aug 2023 same as HowTo) + parsing aid for AIO |
CONDITIONAL |
BreadcrumbList |
Path clarity, breadcrumbs |
HIGH |
| About page |
Organization + nested Person for Kalen + credentials |
Knowledge panel, AIO entity, EEAT binding |
HIGH |
BreadcrumbList |
Path clarity |
HIGH |
| Location pages (OP, Olathe, etc.) |
LocalBusiness + Service + BreadcrumbList + city-specific geo |
Local pack inclusion per city, AIO local entity |
HIGH |
⚠️ HowTo + FAQPage caveat: Google restricted these rich results to "authoritative sites only" in Aug-Sep 2023. Deploying them is still semantically valid (helps AIO parse content) but the rich-result eligibility is uncertain until BSP builds authority. Recommend: deploy them when content genuinely matches the schema, but don't expect SERP visual lift early in the buildout.
🤖 AIO Citation Levers — Content Structure (Gap 3)
BrightEdge: 16.7% of AIO citations from top-10 organic. The other 83.3% comes from positions 21-100 — meaning content STRUCTURE, not rank, determines citation. The measured levers:
┌─────────────────────────────────────────────────────────────┐
│ AIO CITATION OPTIMIZATION (parallel to rank, not derived) │
└────────────────────┬────────────────────────────────────────┘
│
┌─────────────┼─────────────┬──────────────┐
▼ ▼ ▼ ▼
STRUCTURE SCHEMA FRESHNESS AUTHORITY
│ │ │ │
┌───┴───┐ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐
│ │ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
Definitive H2 Article FAQPage date "Last Person Local
opening Q- + (where Modified updated schema cushion
in 100w fmt author genuine) on every X days" w/ (Ahrefs:
+ + only update visible creds "less
lists dateMod on-page dramatic")
impact"
Specific implementation rules per article
- Definitive opening sentence within first 100 words. "A clogged drain typically clears with one of these 5 methods..." beats "Clogged drains are a common problem that homeowners face..." — the first opens with the answer, the second hedges.
- H2 in question format where natural. "How do I know if my drain is fully clogged?" vs "Signs of a Clogged Drain." The question-format matches AIO query phrasing.
- List format for "how-to" content. Numbered steps with bolded action verbs at the start of each. AIO extracts lists more reliably than paragraph form.
dateModified visible on-page + in schema. Update at least once every 90 days. Refreshed timestamps correlate with re-citation in AIO datasets.
Person schema + author byline with credentials. Kalen Barker, master plumber, BSP's 5-Generation plumbing family, KS license #XXXXX. Bind the article to a real verifiable expert.
- Local-business cushion. Per Ahrefs: local services see "less dramatic AIO impact" than national informational publishers. Lean into it — Kansas City + neighborhood-specific framing every article.
🏟️ Competitive Map — KC Plumber Vertical
⚠️ Data caveat: SEMrush API key in `.env` was empty at dispatch time (length 1 = newline). Verified DR/traffic numbers were not pulled. The competitive read below is from Perplexity + Gemini grounded search — directional only. Action item: rotate SEMrush key for verified competitive intel before any major positioning play.
Top 5 KC plumber competitors — content hub patterns
| Competitor | Hub URL pattern | Posture (qualitative) |
| Anthony Plumbing Heating Cooling | /blog/ | KC market leader; deep blog with city-specific content; strong local SEO |
| Benjamin Franklin Plumbing KC | /plumbing-tips/ | Franchise — corporate template; less localized |
| Roto-Rooter (KC franchise) | /blog/ | National brand, generic content; some KC pages |
| Kevin Ginnings Plumbing | Flat / no clear hub | Smaller independent; minimal blog presence |
| Inception Plumbing | /blog/ | Local independent; blog modest but using /blog/ |
📌 Pattern: 4 of 5 KC competitors use /blog/. None use /learning-center/. BSP's /learning-center/ is genuinely contrarian for this vertical — but the v5 SERP audit + Mueller guidance + zero migration evidence all say: contrarian alone isn't a reason to migrate. Hold what we have.
📜 Migration Evidence — Gap 5 Null Finding
🕳️ Searched: zero documented home-services URL-pattern migration case studies with before/after traffic data exist in the public record (2020-2024).
Wayback Machine archeology + Ahrefs/Semrush case study libraries + SEJ/SEL/Moz blogs + Reddit r/SEO threads — all surfaced nothing usable. This means: any migration recommendation in any direction is operating on analogy from enterprise/SaaS migrations, not measured home-services data.
Implication for BSP: migration risk is real (Mueller warning, link equity decay, 301 chain) and migration upside is unmeasurable. The HOLD recommendation isn't conservative — it's the only evidence-supported call.
✅ Architecture Decision — What This Locks In
Confirmed (HIGH confidence)
- Slug: Hold
/learning-center/. Migration risk > unmeasurable upside. Apr 18 decision validated by external evidence.
- Pillar subfolder pattern:
/learning-center/{pillar}/{slug}/ stays per Apr 18 plan. Subfolder depth ≠ rank penalty per Mueller. Internal linking benefit > depth concern.
- Schema stack: Per the table above. Each schema deploys for its specific buyout (rich result / AIO citation / knowledge graph), not for rank.
- EEAT framing: 3 measurable signals get rank-attribution claims. The other 7 are conversion + trust narrative. Don't conflate.
Reframed (MEDIUM-HIGH confidence)
- The fight is AIO, not slug. Effort budget that would have gone into URL debate redirects to AIO citation optimization (definitive openers, H2 questions, dateModified, Person schema, list format).
- Rank ≠ AIO citation. Build content for both tracks in parallel. Don't assume top-10 organic auto-translates to AIO inclusion.
- Local cushion is real. Ahrefs found local services see "less dramatic AIO impact." Lean into Kansas City + neighborhood specificity in every article.
Open (requires first-party data)
- Verified competitive DR/traffic — pending SEMrush key rotation
- Direct
/blog/ vs /learning-center/ A/B — only first-party 90-day split test on net-new content can produce this data; not currently scoped
- Plumbing-specific AIO citation rate by structural feature — no public dataset exists; would require BSP-internal tracking once content ships
🔄 What Changes In Existing Playbook Sections
- Section: Schema markup stack — replace "schema for SEO" framing with the per-page-type stack table above. Each schema attributed to its specific outcome.
- Section: Blog post blueprint — add AIO citation levers (definitive opening, H2 questions, list format, dateModified, Person schema) as required structural elements.
- Section: EEAT signals — split into "measurable" (3 signals) vs "trust narrative" (7 signals). Don't claim rank lift on the 7.
- Section: Pillar/cluster architecture — confirmed as the SEO lever (vs slug rename). Internal linking strategy per pillar drives topic authority.
- NEW section to add (post this one): "AIO Citation Optimization Playbook" — the parallel track. Specific structural rules per article + freshness cadence + Person schema requirements.
📎 Citations — Headline Sources (full lists in research files)
389 unique URLs across the 5 dispatches. Top 15 here; full citation list in /tmp/seo_research_v5_deep.md + /tmp/seo_research_gaps_closed.md.
🧪 Methodology — How This Research Was Built
5 dispatches, sequential refinement, intentional non-overlap of query angles to maximize unique citation collection.
| Dispatch | Models | Citations | SERP URLs | Outcome |
| v3 | 3 | 0 (short-circuited on prior playbook) | 0 | Excluded from final synthesis |
| v4 | 4 | 15 | 38 | Initial directional finding (slug = noise, hold /learning-center/) |
| v5 | 7 successful | 171 unique | 200 | Decisive SERP audit + AIO magnitude (Seer −54.6%, BrightEdge 16.7%) |
| v6 (stalled) | — | 0 persisted | 0 | Watchdog timeout; reframe to gap-closer |
| Gap-closer (5 gaps) | 3 active | 218 unique | — | Schema + EEAT + AIO + competitive + migration null finding |
Logged 2026-04-25 via SEO research dispatches v3-v6 + gap analysis closure. Source files on VM: /tmp/seo_research_v4_studies.md, /tmp/seo_research_v5_deep.md (126 KB), /tmp/seo_research_gaps_closed.md (168 KB), 5 per-gap files. Cross-referenced in MH section bsp-apr25-seo-architecture-evidence-locked (queued, pending Robert review of this playbook section).