Everything you need to design the BSP homepage: strategy, competitor intel, 10x moves, 14-section architecture, brand tokens, Figma component specs, asset manifest, and per-section design rules. Mobile-first. Phase 1 parity, Phase 2 differentiation. Inherits design language from the shipped Sewer Camera Inspection page template.
01_section_hero and ends at 13_section_final_cta. No header. No footer. No menu. No logo placement. Those are done.
The current homepage is a brochure. We are building a revenue front door — the central node of a 7-layer ecosystem (strategy → IA → page build → schema → tracking → distribution → optimization loop). The sewer-camera-inspection page already proves the design language works. This playbook applies it to the highest-traffic, highest-conversion page on the site.
| Problem | Impact | Severity |
|---|---|---|
| 🐌 Hero loaded via CSS background + JS injection | Largest Contentful Paint > 4s | 🔴 Critical |
| 📦 8+ render-blocking Oxygen CSS files | First paint delayed 2–4s | 🔴 Critical |
| 📱 No sticky mobile CTA | 60%+ mobile, every scroll = lost call | 🔴 Critical |
| 📋 Single-step form | 86% lower conversion vs multi-step | 🔴 Critical |
| 🏷️ "4th gen" vs "5th gen" inconsistent | Undermines trust | 🟡 High |
| ⭐ 384 reviews buried | Biggest moat, hidden below fold | 🟡 High |
| 🔧 Sewer not leading | #1 revenue positioned #4 | 🟡 High |
| 💳 No financing, membership, or service-area chips | Behind every KC competitor | 🟡 High |
Derived scientifically from 301+ reviews across Google, Yelp, Angi, BBB, Chamber, and Facebook. The homepage must serve all four — but the hero + above-fold must target Emergency Eric first (50–60% of revenue).
| Persona | Share | State of Mind | Design Implication |
|---|---|---|---|
| 🚨 Emergency Eric/Erica | 50–60% revenue · 25–30% leads | Panic, same-day, on mobile, low patience | Sticky call bar · phone above fold · fast load · "same-day" chip |
| 🏗️ Renovation Rachel/Ryan | 25–30% revenue | Researches 3–14 days · wants trust + transparency | Long-form sections · reviews · pricing ranges · family story · FAQ |
| 🏢 Business Owner Bob/Barbara | 8–12% revenue | Zero disruption · reliability | Commercial badge · "licensed & insured" pinned · SLA language |
| 🔁 Maintenance Mike/Maria | 45–55% leads · highest LTV | Routine, flat-rate, expects loyalty perks | Membership / Plumbinati pitch · maintenance plan card · email capture |
| Competitor | Positioning | Moat | Weakness we exploit |
|---|---|---|---|
| Anthony PHC | Dominant since 1951, full home services | 70+ yr brand + membership engine | Generic corporate voice, no family faces |
| Benjamin Franklin KC | National franchise, coupon-heavy ($59/$77/$150) | Price transparency | Franchise feel, cookie-cutter |
| Roto-Rooter KC | 24/7 emergency giant | Scale + chat + financing | Faceless, national, no local story |
| Kevin Ginnings | Bare bones local | — | No structure, no trust layer — weak opponent |
| Inception Plumbing | "100% truly local" anti-national | Video + local voice | No brand design, no membership, no reviews |
| Signal | Anthony | BenFrank | Roto | Ginnings | Inception | BSP now | Phase |
|---|---|---|---|---|---|---|---|
| BBB / licensed / insured | ✅ | ✅ | ✅ | ⚠️ | ✅ | ✅ | — |
| 5-generation family | ❌ | ⚠️ | ❌ | ❌ | ❌ | ✅ | MOAT |
| 24/7 · same-day | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | — |
| Book online | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | — |
| Current specials / coupons | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ | P1 bolster |
| Financing inline | ✅ | ✅ | ✅ | ❌ | ✅ | 🔴 | P1 add |
| Membership / maintenance | ✅ | ✅ | ✅ | ❌ | ❌ | 🔴 | P1 add (Plumbinati) |
| Chat widget | ❌ | ❌ | ✅ | ❌ | ❌ | 🔴 | P1 add (Daniel AI) |
| Awards / Best-of | ✅ | ✅ | ❌ | ❌ | ❌ | 🔴 | P1 add |
| Service-area chips | ✅ | ✅ | ✅ | ❌ | ✅ | 🔴 | P1 add |
| Real reviews (live API) | ✅ static | ✅ static | ✅ static | ✅ static | ❌ | ✅ LIVE | MOAT |
| Video content | ❌ | ❌ | ❌ | ❌ | ✅ | 🔴 | P2 10x |
| Transparent pricing | ❌ | ⚠️ | ❌ | ❌ | ❌ | 🔴 | P2 10x |
| # | 10x Play | Why it beats everyone | BSP Asset Available |
|---|---|---|---|
| 1 | 📹 Real HD sewer camera footage gallery | Inspection viewable BEFORE booking | Daily footage produced |
| 2 | 🗺️ Real-time crew ETA map (DoorDash-for-plumbers) | Requires tech stack nobody has | ServiceTitan + GPS feasible |
| 3 | 👨👨👦👦 5-gen family story w/ Kalen + lineage | Anthony brands 1951 — no family faces | Kalen Barker (4th-gen master); son = 5th gen |
| 4 | 💰 Published price book visibility | Every competitor hides pricing | Xactimate backbone |
| 5 | 🤖 Daniel AI 24/7 concierge (phone + chat) | Competitors have basic chat widgets | Daniel Vapi LIVE at (913) 963-9817 |
| 6 | 📡 Live Google Reviews filtered by service keyword | All use static testimonial carousels | service_page_reviews_apply.py wired |
| 7 | 📍 Neighborhood-specific pages from chip click | Competitors have generic city pages | Geo hub buildable on template |
| 8 | 🎥 Inspection-video learning library | Nobody teaches at this depth | Daily footage → YouTube pipeline |
| 9 | 💳 Inline financing rate quote (Wisetack-style) | All say "financing available" then form | API integrable |
| 10 | 🎨 Cohesive brand design (waves, doodles, Audrey system) | Competitors use templates (Sprout/Thrive) | Audrey Figma system exists |
| 11 | 📜 Downloadable license certificates | Nobody shows compliance as asset | BSP has them |
| 12 | 🌟 Plumbinati membership / referral community | No competitor has brand fandom | Exists as badge already |
60%+ of BSP traffic is mobile. Every section is designed at 375px FIRST, then scaled up to 1440px desktop. If it does not work on a phone held one-handed in a basement at 11 PM, it does not ship.
| Name | Range | Figma frame | Notes |
|---|---|---|---|
| 📱 Mobile S | 320–477 px | 375 × 812 | Design primary. Wave off, single-col. |
| 📲 Mobile L | 478–767 px | 414 × 896 | Wave back on, otherwise identical to Mobile S |
| 📐 Tablet | 768–991 px | 768 × 1024 | 2-col grids where content allows, hamburger still active |
| 💻 Desktop | 992+ px | 1440 × 8875 | Nav inline, 3–4 col grids, hero full-width |
Every padding, gap, and margin in the design system is a multiple of 8. The sewer-camera page uses only these values.
| Token | Value | Use |
|---|---|---|
--s-1 | 4 px | Tight text rhythm (link-list items) |
--s-2 | 8 px | Icon-text gap, small chip padding |
--s-3 | 12 px | Card inner gap, button vertical padding |
--s-4 | 16 px | Section horizontal padding on mobile, card gap |
--s-5 | 24 px | Card padding, form field gap |
--s-6 | 32 px | Section vertical rhythm mobile |
--s-7 | 40 px | Section padding desktop |
--s-8 | 56 px | Hero wrapper gap desktop (sewer page 708:216 spec) |
--s-9 | 80 px | Major section break desktop |
--s-10 | 120 px | Pre-footer spacing desktop |
| Component | Variants | Mobile / Desktop specs |
|---|---|---|
| Primary CTA button | default · hover · pressed · disabled | Mobile: 100% width, 48 h, 14/16 pad, fs 16. Desktop: auto width, 56 h, 14/22 pad, fs 18. bg #30C5FF, color #1D1760, radius 8 |
| Secondary CTA button | default · hover · pressed | Same dims. bg transparent, border 2px #30C5FF, color #30C5FF. Hover: bg #30C5FF color #1D1760 |
| Phone CTA (with 📞) | default · hover | bg #FFEA00, color #1D1760. Used for emergency hero CTA only. |
| Service card | with-icon · with-photo · with-badge | Mobile: full width, 16 pad, icon 40 on left, H3 right, body below, chevron link. Desktop: 1/3 width, 24 pad, icon 64 top-center, H3 + body stacked, underline-doodle behind H2 |
| Review card | google · yelp · angi | bg #F8FAFC, 24 pad, 422 h fixed desktop / auto mobile, 5-star row 100×24 mobile / 120×30 desktop, clamp 4 lines mobile / 5 lines desktop, author 14/16 w700 |
| Trust chip | icon · text-only | 24 h, 4/10 pad, fs 13, radius 16, bg rgba(48,197,255,0.12), border 1px #30C5FF |
| FAQ accordion row | collapsed · expanded | H4 clickable row 48 h min, caret icon 20 right, 16 vert pad, border-bottom 1px rgba(29,23,96,0.08), answer fs 14 lh 1.5 mobile / fs 16 lh 1.6 desktop |
| Wave divider | top · bottom · full | Inline SVG, preserveAspectRatio=none, height 60 mobile / 120 desktop. Drop on <478 px for hero-to-trust transition. Reuse sewer-page wave asset. |
| Token | Value | Use |
|---|---|---|
--radius-sm | 4 px | Chips, badges |
--radius-md | 8 px | Buttons, cards |
--radius-lg | 12 px | Large cards, review cards |
--radius-full | 999 px | Trust chips (pill) |
--shadow-card | 0 2px 8px rgba(0,0,0,0.04) | Review cards, service cards resting |
--shadow-hover | 0 8px 24px rgba(29,23,96,0.12) | Card hover lift |
--shadow-cta | 0 4px 4px rgba(0,0,0,0.15) | Primary CTA resting shadow (matches sewer page) |
prefers-reduced-motion — disable transform, keep opacity onlyMobile scroll flow. Each section has ONE job. Visitor flows top → bottom like a sales conversation that handles every persona.
Live as of Apr 20, 2026. Bricks AI Studio license is purchased + activated on bricks.callbrightside.com. Audrey designs the 20% that carries the brand (hero + MOAT sections). Bricks AI generates the 80% that repeats (grids, rows, accordions, chip bars). Claude/Nexus orchestrates briefs + validates output against the Creative Library.
Do NOT design a header or footer in Figma. Ours is already shipped as a global Bricks component (§14 in the architecture below = DONE). The same header + footer render on every page in the build — Homepage, Location pages, Service pages, Blog — without any Audrey or AI input. Skip them entirely in your Figma file; numbering starts at 01_section_hero and ends at 13_section_final_cta.
| § | Section | Path | Why |
|---|---|---|---|
| 01 | HERO (above fold) | FIGMA | Brand-critical moment. 5-gen headline, hero imagery, 3-CTA layout. Audrey designs in Figma; exports PNG/SVG into the Bricks-AI-generated page. |
| 02 | Trust Bar | BRICKS AI | 6-chip repeating row. Template pattern. |
| 03 | Current Specials | BRICKS AI | Coupon card grid. Pattern output. |
| 04 | Sewer-Lead Services | BRICKS AI | 6-card grid with icon + label + link. Classic Bricks AI territory. |
| 05 | Financing + Plumbinati | HYBRID | Figma for Plumbinati badge (custom artwork). Bricks AI for financing card. |
| 06 | Why Bright Side (MOAT) | FIGMA | Family photo, 5-gen story, Kalen credentials. Brand heart — does not get AI-generated. |
| 07 | How It Works | BRICKS AI | 3-step row, blue wave background. |
| 08 | Jobs We Did This Week (10x) | HYBRID | Figma sets the gallery composition. Bricks AI outputs the card template that pulls from HCP/ST photos API. |
| 09 | Service Areas | BRICKS AI | Chip row with city labels. |
| 10 | Live Reviews (MOAT) | BRICKS AI | Review card grid, live Google API loop. The dynamic data loop is the moat, not the design. |
| 11 | Guarantees | BRICKS AI | 3-tile row, icon + label + description. |
| 12 | FAQ | BRICKS AI | 6-8 item accordion with schema markup. |
| 13 | Final CTA | FIGMA | Heroic close. "Call KC’s 5th-gen family." |
| 14 | Footer | DONE | Global Bricks component. Already shipped. Not Audrey’s scope. |
Pattern: NN_type_descriptor. Sequential numbers that match the playbook § column above. Lowercase + underscores only.
01_section_hero ← Audrey designs (FIGMA) 02_row_trust_bar ← Bricks AI generates 03_section_specials ← Bricks AI 04_section_services_grid ← Bricks AI 05_section_financing ← HYBRID 06_section_why_bsp ← Audrey designs (FIGMA) 07_section_how_it_works ← Bricks AI 08_section_recent_jobs ← HYBRID 09_section_service_areas ← Bricks AI 10_section_reviews ← Bricks AI 11_section_guarantees ← Bricks AI 12_section_faq ← Bricks AI 13_section_final_cta ← Audrey designs (FIGMA) # DO NOT CREATE header or footer frames # These are global Bricks components and already live
One section at a time. Good for iterating or when Audrey finishes one Figma frame before the next.
04_section_services_grid)Full homepage bundle. Good for end-to-end builds when all 13 Figma frames are named + ready.
Per-section design brief. Audrey reads this and designs each section knowing: purpose, copy direction, mobile layout, desktop layout, components used, KPI, and phase.
data-coupon-id="..."service_page_reviews_apply.py filtered with keywords: plumber, plumbing, sewer, drain, water heater, Kansas CityThe sewer-camera-inspection page is LIVE at bricks.callbrightside.com/sewer-camera-inspection/. Audrey should load it in Figma dev-mode via plugin or screenshot-trace to inherit proven tokens. This is the source of truth for the design system.
| Token / Pattern | Source | Why |
|---|---|---|
| Hero structure (image + H1 + subtitle + paragraph + CTA trio) | sewer page § 01 | Already tested + tuned for 375 / 1440 |
| Trust bar 4-line column (mobile) / row (desktop) | sewer page § 02 | Pattern works across pages |
| Underline-doodle SVGs (4 variants) | #brxe-f97bb8, 6365c4, 37fbb3, 221286 | Hand-drawn feel behind every H2 |
| Reveal-card layout (icon-left mobile, icon-top desktop) | sewer page § 03 card pattern | Service grid uses same anatomy |
| Process-steps wave-bg block (#BEE6F5) | sewer page § 04 · #brxe-5a5ec7 | How-It-Works uses identical |
| Review card (F8FAFC bg, 422h desktop, 5-star 120×30) | sewer page § 06 · #brxe-172d71 / #brxe-5202df | Already pulling live Google reviews |
| FAQ accordion (601ec0 pattern) | sewer page § 08 | Same JSON-LD schema |
| Final-CTA wave-to-footer | sewer page § 09 | Visual transition language |
| Footer (vertical logo + 4-col row + socials + legal) | Shipped Apr 17 | Global — no work needed |
| Type scale H1 32/48 · H2 26/36 · H3 20/24 · Body 16/18 | bricks-child functions.php | Already wired per breakpoint |
| 8-px spacing base | sewer page Figma padding pass | System enforces rhythm |
| # | Shot | Format | Use |
|---|---|---|---|
| 1 | Kalen in uniform at HQ (hero shot) | 2560×1440 + 768×1024 crop | § 01 Hero bg · § 06 family story |
| 2 | Team group with branded truck | 1920×1080 | § 06 team photo |
| 3 | Technician on sewer camera inspection | 1600×1200 | § 04 services card · § 08 gallery |
| 4 | Plumber helping KC homeowner (candid) | 1600×1200 | § 01 alt hero · § 07 how-it-works |
| 5 | Historical family photo (grandfather with tools) | any | § 06 heritage visual |
| 6 | Branded truck on KC street (wide) | 2560×1440 | § 09 service areas bg |
| 7 | Before/after sewer repair pairs (×4) | 1200×1200 each | § 08 Phase 2 gallery |
§ {section}. {element} · {breakpoint}loading="lazy" below the fold<img> with srcset, NOT CSS background| Location | URL / Path |
|---|---|
| 📘 Live playbook (this doc) | morpheus.callbrightside.com/documents/BSP_Homepage_Redesign_Playbook.html |
| 📂 Local source folder | C:/Users/dovew/Documents/Clients/BrightSidePlumbing/BSP_Homepage_Redesign/ |
| 🎨 Figma (live reference) | Sewer Camera Inspection Landing Page — node 606:9 (mobile) · 708:216 (desktop) |
| 🧪 Live template to inherit | bricks.callbrightside.com/sewer-camera-inspection/ |
| 📚 Master History log | BSP_Master_Session_History.html |
13 prompts, one per section (§01 through §13). Each is tuned for BSP voice, Stephanie format, brand tokens, and mobile-first accessibility.
📋 Copy prompt copies the exact text to paste into Bricks AI Studio. 🔄 Regen with latest Figma pulls your current Figma frame state and returns a refreshed prompt (for Option B flow).
Pink sections (§01, §06, §13) are FIGMA-MODE — you export from Figma and import to Bricks manually. Yellow sections are pure Bricks AI. Purple sections (§05, §08) are HYBRID — Bricks AI generates the structure, you drop your Figma asset into a named slot.
Figma frame: 01_section_hero
FIGMA-MODE. Do NOT run this in Bricks AI Studio. Audrey export steps: 1) In Figma, finalize frame "01_section_hero" at 2560x1440 (desktop) + 768x1024 (mobile). 2) Export as PNG @2x OR as SVG (prefer SVG if vector-safe). 3) Name files: homepage-hero-desktop.png (or .svg) + homepage-hero-mobile.png 4) In Bricks builder, add a Section element > Image element, import the file. 5) Set Section padding 0. Image width 100 percent, height auto, object-fit cover. 6) Apply responsive variant: mobile image shows <768px, desktop shows >=768px. 7) Layer H1 and CTAs over the image using Bricks Block element with position absolute. Copy to layer over hero image (exact strings): - H1: "Kansas City's 5th-Generation Plumbing Family. Sewer, Drain, and Water Heater Experts." - Subtitle: "Same-day service across Overland Park, Olathe, Lenexa, and the KC metro. Since 1902." - Primary CTA (yellow button): "Call (913) 963-1029" - Secondary CTA (blue outline button): "Book Online" - Tertiary CTA (text link): "Chat with Daniel" - Trust chips row: "4.9 Google (384+ reviews)", "BBB A+", "5 Generations", "Licensed" This section stays hand-built in Figma and hand-imported. Do not regenerate with Bricks AI.
Figma frame: 02_row_trust_bar
You are generating a Bricks Builder section for callbrightside.com, a 5th-generation Kansas City family plumbing company. Output native Bricks elements (JSON element tree). DO NOT GENERATE: header, nav, logo bar, footer, page wrapper. Those are existing global Bricks components and will already be on the page. BRAND TOKENS (required): - Colors: Navy #1D1760, Blue #30C5FF, Yellow #FFEA00. Accents: Sky #93DEFB, Purple #443A96. No red, no orange unless explicitly specified. - Font: Inter only (300/400/500/600/700/800). No serif, no display. - Copy style: No em dashes (use commas/periods). No emojis inside body copy (OK in section H2 decoration). Plain-English, 6th grade reading level. - Stephanie format where copy allows: Problem then Impact then Solution then Data then Need. ACCESSIBILITY: - Min 16px body, 44px tap targets, visible focus rings (#30C5FF 2px), semantic HTML (h2/h3/article), aria-hidden on decorative icons. - Color contrast WCAG AA. RESPONSIVE: - Mobile-first (320-768), tablet (769-1023), desktop (1024+). - No horizontal scroll at any viewport. SECTION: Trust Bar (row, navy background, full-width) PURPOSE: Destroy doubt in 2 seconds after the hero. Six proof chips in a horizontal row. HEIGHT: 56px desktop, wraps to 2-row stack on mobile. BACKGROUND: #1D1760 (navy), full-bleed, containing 1200px max-width centered row. 6 CHIPS (exact order, exact text): 1) star icon + "4.9 Google (384+ reviews)" 2) shield icon + "BBB A+" 3) family icon + "5 Generations" 4) clock icon + "Same-Day Service" 5) lock icon + "Licensed and Insured" 6) dollar icon + "Free Estimates" CHIP STYLING: - Background rgba(255,255,255,0.08) - 12px padding vertical, 16px horizontal - Border-radius 24px (pill) - Icon 18px, #FFEA00 yellow - Text 14px, #FFFFFF, Inter 500 - Gap between chips: 16px desktop, 8px mobile LAYOUT: - Mobile (<768): 2-row grid, 3 chips per row, center-aligned, 8px gap - Desktop (>=768): 1-row, space-between, 6 chips horizontal NO motion, no hover effects (this must read instantly). OUTPUT: Section > Div (row container) > 6x Div (chip) elements with nested Icon + Text.
Figma frame: 03_section_specials
You are generating a Bricks Builder section for callbrightside.com, a 5th-generation Kansas City family plumbing company. Output native Bricks elements (JSON element tree). DO NOT GENERATE: header, nav, logo bar, footer, page wrapper. Those are existing global Bricks components and will already be on the page. BRAND TOKENS (required): - Colors: Navy #1D1760, Blue #30C5FF, Yellow #FFEA00. Accents: Sky #93DEFB, Purple #443A96. No red, no orange unless explicitly specified. - Font: Inter only (300/400/500/600/700/800). No serif, no display. - Copy style: No em dashes (use commas/periods). No emojis inside body copy (OK in section H2 decoration). Plain-English, 6th grade reading level. - Stephanie format where copy allows: Problem then Impact then Solution then Data then Need. ACCESSIBILITY: - Min 16px body, 44px tap targets, visible focus rings (#30C5FF 2px), semantic HTML (h2/h3/article), aria-hidden on decorative icons. - Color contrast WCAG AA. RESPONSIVE: - Mobile-first (320-768), tablet (769-1023), desktop (1024+). - No horizontal scroll at any viewport. SECTION: Current Specials (3 coupon cards) PURPOSE: Match Benjamin Franklin Plumbing coupon offer. Give maintenance-oriented visitors a reason to act now. H2: "Current Specials" H2 STYLING: Inter 700, 32px mobile / 40px desktop, color #1D1760, center-aligned, 24px bottom margin. 3 COUPON CARDS (exact copy, exact order): CARD 1: - Amount: "$25 OFF" - Label: "Any Service" - Subtext: "New customers. One per household. Mention code: KC25" - Code: "KC25" - CTA: "Claim Offer" CARD 2: - Amount: "$99" - Label: "Drain Cleaning" - Subtext: "Single drain. Unclog or it is free. Code: DRAIN99" - Code: "DRAIN99" - CTA: "Book Drain" CARD 3: - Amount: "FREE" - Label: "Sewer Camera Inspection" - Subtext: "Free with any sewer repair $500 or over. Code: CAMFREE" - Code: "CAMFREE" - CTA: "Get Inspection" CARD STYLING: - Shape: rounded ticket (16px radius, with two small half-circle cutouts on left and right sides at 60 percent height to suggest perforation) - Background: #FFFFFF - Border: 2px dashed #FFEA00 - Padding: 24px - Amount font: Inter 800, 40px, #1D1760 - Label font: Inter 600, 20px, #1D1760 - Subtext: Inter 400, 14px, #5F6380 - Code block: monospace 13px, background #F7F4C1, padding 4px 8px, border-radius 4px - CTA button: full-width, #30C5FF background, white text, 44px tall, Inter 600 16px LAYOUT: - Mobile: 1-col stack, 16px gap, 100 percent width - Desktop: 3-col grid, 24px gap, equal-width 380px each SCHEMA: Each card wrapped in schema.org/Offer with itemprop="description" on subtext and itemprop="priceCurrency" where applicable. OUTPUT: Section > H2 + Div (grid) > 3x Article (coupon card) elements.
Figma frame: 04_section_services_grid
You are generating a Bricks Builder section for callbrightside.com, a 5th-generation Kansas City family plumbing company. Output native Bricks elements (JSON element tree). DO NOT GENERATE: header, nav, logo bar, footer, page wrapper. Those are existing global Bricks components and will already be on the page. BRAND TOKENS (required): - Colors: Navy #1D1760, Blue #30C5FF, Yellow #FFEA00. Accents: Sky #93DEFB, Purple #443A96. No red, no orange unless explicitly specified. - Font: Inter only (300/400/500/600/700/800). No serif, no display. - Copy style: No em dashes (use commas/periods). No emojis inside body copy (OK in section H2 decoration). Plain-English, 6th grade reading level. - Stephanie format where copy allows: Problem then Impact then Solution then Data then Need. ACCESSIBILITY: - Min 16px body, 44px tap targets, visible focus rings (#30C5FF 2px), semantic HTML (h2/h3/article), aria-hidden on decorative icons. - Color contrast WCAG AA. RESPONSIVE: - Mobile-first (320-768), tablet (769-1023), desktop (1024+). - No horizontal scroll at any viewport. SECTION: Services We Specialize In (6-card grid) PURPOSE: Position BSP as a sewer specialist, not a generalist. Sewer is revenue #1 and must lead the grid. H2: "Plumbing Services We Specialize In" H2 STYLING: Inter 700, 32px mobile / 40px desktop, color #1D1760, left-aligned with underline doodle SVG behind the word "Services" (doodle ID 221286 from sewer-camera page). 6 CARDS (exact order, exact copy): 1) Sewer Repair and Replacement - "Licensed experts for burst, cracked, or failing sewer lines. Trenchless options available." 2) Sewer Camera Inspection - "See the exact cause before you pay for a repair. Free with any sewer work $500 or over." 3) Drain Cleaning - "Clog-clearing that respects your pipes. Hydro jetting and mechanical snaking." 4) Water Heaters - "Tank and tankless install, repair, and replace. Same-day in most cases." 5) Leak Repair - "Pinhole, slab, or pressure leaks. We find it fast, we fix it right." 6) Sump Pumps - "Battery backup and primary pump install. Stay dry when the storms hit." CARD ANATOMY: - Icon (top on desktop, left on mobile): 64x64 desktop, 40x40 mobile. Color #30C5FF. - H3 (service name): Inter 600, 20px mobile / 24px desktop, #1D1760. - Description: Inter 400, 14px mobile / 16px desktop, #5F6380, 2 lines max. - Link: "Learn More" with right-arrow, Inter 600 14px, #30C5FF, underline on hover. - Card bg: #FFFFFF, border 1px #E3E8F0, radius 12px, padding 24px. - Hover: translateY(-4px), shadow 0 8px 24px rgba(29,23,96,0.08), 200ms ease. LAYOUT: - Mobile: 1-col stack, 16px gap, icon-left horizontal layout. - Desktop: 2-col grid, 24px gap, icon-top vertical layout. SCHEMA: Wrap each card in schema.org/Service with hasServiceOfType. Parent container itemtype="https://schema.org/LocalBusiness". Icon names to use (Bricks built-in icon library or Phosphor): pipe, video-camera, wrench, flame, water-drop, pump. OUTPUT: Section > H2 + Div (grid) > 6x Article (service card) elements with schema attributes.
Figma frame: 05_section_financing
You are generating a Bricks Builder section for callbrightside.com, a 5th-generation Kansas City family plumbing company. Output native Bricks elements (JSON element tree). DO NOT GENERATE: header, nav, logo bar, footer, page wrapper. Those are existing global Bricks components and will already be on the page. BRAND TOKENS (required): - Colors: Navy #1D1760, Blue #30C5FF, Yellow #FFEA00. Accents: Sky #93DEFB, Purple #443A96. No red, no orange unless explicitly specified. - Font: Inter only (300/400/500/600/700/800). No serif, no display. - Copy style: No em dashes (use commas/periods). No emojis inside body copy (OK in section H2 decoration). Plain-English, 6th grade reading level. - Stephanie format where copy allows: Problem then Impact then Solution then Data then Need. ACCESSIBILITY: - Min 16px body, 44px tap targets, visible focus rings (#30C5FF 2px), semantic HTML (h2/h3/article), aria-hidden on decorative icons. - Color contrast WCAG AA. RESPONSIVE: - Mobile-first (320-768), tablet (769-1023), desktop (1024+). - No horizontal scroll at any viewport. SECTION: Financing plus Plumbinati Membership (2-card horizontal, HYBRID with Figma asset) PURPOSE: Close the financing-offer gap vs all 4 major KC competitors. Convert returning customers into Plumbinati members (highest LTV segment). LAYOUT: - Mobile: 2 cards stacked, 16px gap between, each 100 percent width. - Desktop: 2-col side-by-side, 32px gap, equal height, 600px max-width each. CARD 1 - FINANCING (Bricks AI generates this card): - Icon: credit-card, 48px, #30C5FF - H3: "Affordable plumbing starts at $0 down" - Body: "Apply in 60 seconds. 0 percent APR options available for qualified customers. No surprises, no hidden fees." - CTA button: "Apply for Financing" (blue #30C5FF fill, white text, 44px tall, Inter 600 16px, full-width on mobile, auto-width on desktop) - Placeholder: 340x200 Div with dashed border and text "P2: Wisetack rate-quote widget mounts here" - Background: #FFFFFF, border 1px #E3E8F0, radius 16px, padding 32px CARD 2 - PLUMBINATI MEMBERSHIP (HYBRID: Audrey drops badge SVG): - Figma asset: Audrey exports the Plumbinati badge artwork from Figma frame "05_section_financing > card_plumbinati > badge_artwork" and places it at the TOP of this card as a 120x120 image. DO NOT regenerate the badge with AI. - H3 (below badge): "Join Plumbinati, KC's family plumbing membership" - Body: "Priority service. 15 percent off all repairs. Annual plumbing checkup included. Peace of mind for your household." - CTA button: "Join Plumbinati" (yellow #FFEA00 fill, navy text #1D1760, 44px tall, Inter 700 16px) - Background: #1D1760 (navy), radius 16px, padding 32px, white text throughout. CARD 2 PLACEHOLDER INSTRUCTION: Wherever the badge goes, output a Div element with id="plumbinati-badge-slot" and class="audrey-drop-here" so she can easily replace it in Bricks Builder. OUTPUT: Section > H2 "Affordable options for every home" + Div (grid) > 2x Article (financing card + plumbinati card).
Figma frame: 06_section_why_bsp
FIGMA-MODE. Do NOT run this in Bricks AI Studio. MOAT section. Audrey export steps: 1) Finalize frame "06_section_why_bsp" in Figma. 2) Export the hero photo (Kalen in uniform) as PNG @2x. 3) Export any decorative SVG elements (borders, frame artwork) separately. 4) In Bricks, create a Section with 2-col layout (stack on mobile): - Left col: Image element with the Kalen photo, object-fit cover, aspect-ratio 4/5. - Right col: Block element with H2, 3 paragraphs, CTA button. 5) Set vertical padding 80px desktop / 48px mobile. Copy (exact strings, paste into Bricks Rich Text element on right col): H2: "A Family Trade, Not a Franchise" Paragraph 1: "Kalen Barker is a fourth-generation master plumber. His son is the fifth. For over 100 years, the Barker family has been fixing Kansas City pipes - grandfathers training fathers, fathers training sons." Paragraph 2: "Every plumber on our truck was trained by someone who was trained by someone who learned this trade in Kansas City. That is not a marketing story. That is our kitchen-table story." Paragraph 3: "When you call Bright Side, you are not hiring a corporate franchise. You are hiring a family that has been in this city longer than most of its neighborhoods." CTA button: "Meet the Team" (outline blue button, links to /about) P2 HOOK: Leave a 640x360 Div placeholder below the text labeled "P2: 60-sec family mini-doc embed". Brand tokens apply to all text styling (Inter only, no em dashes, navy/blue/yellow palette). This section is hand-designed in Figma and hand-imported to Bricks. Do not regenerate.
Figma frame: 07_section_how_it_works
You are generating a Bricks Builder section for callbrightside.com, a 5th-generation Kansas City family plumbing company. Output native Bricks elements (JSON element tree). DO NOT GENERATE: header, nav, logo bar, footer, page wrapper. Those are existing global Bricks components and will already be on the page. BRAND TOKENS (required): - Colors: Navy #1D1760, Blue #30C5FF, Yellow #FFEA00. Accents: Sky #93DEFB, Purple #443A96. No red, no orange unless explicitly specified. - Font: Inter only (300/400/500/600/700/800). No serif, no display. - Copy style: No em dashes (use commas/periods). No emojis inside body copy (OK in section H2 decoration). Plain-English, 6th grade reading level. - Stephanie format where copy allows: Problem then Impact then Solution then Data then Need. ACCESSIBILITY: - Min 16px body, 44px tap targets, visible focus rings (#30C5FF 2px), semantic HTML (h2/h3/article), aria-hidden on decorative icons. - Color contrast WCAG AA. RESPONSIVE: - Mobile-first (320-768), tablet (769-1023), desktop (1024+). - No horizontal scroll at any viewport. SECTION: How It Works (3 numbered steps, horizontal flow) PURPOSE: Reduce friction. Homeowner anxiety peaks before calling. "It is only 3 steps" makes it feel safe. BACKGROUND: Full-width blue wave background (SVG), #93DEFB (sky blue) base with white overlay, 80px vertical padding. H2: "How It Works" H2 STYLING: Inter 700, 32px mobile / 40px desktop, color #1D1760, center-aligned, 32px bottom margin. 3 STEPS (exact copy, exact order): STEP 1: - Number: 01 - Title: "Call or book online" - Body: "Tell us what is going on. Real people answer, same-day call-back if the line is busy." STEP 2: - Number: 02 - Title: "We arrive same-day and inspect" - Body: "Licensed plumber on-site in most cases. Free camera inspection with any sewer repair." STEP 3: - Number: 03 - Title: "We fix it right" - Body: "Flat-rate pricing approved before we start. Warranty on every job. Clean up before we leave." STEP STYLING: - Number: Inter 800, 64px, color #FFEA00 (yellow), aligned top-left of tile - Title: Inter 700, 20px mobile / 24px desktop, color #1D1760 - Body: Inter 400, 14px mobile / 16px desktop, color #1D1760, max 2 lines LAYOUT: - Mobile: 3 steps stacked, dashed connector line between steps, numbered circle 48x48 #1D1760 navy bg with #FFEA00 number on left, text right. - Desktop: 3 steps horizontal, equal columns, connector arrow SVG between, numbered circles 72x72, vertical layout (number on top, text below). OUTPUT: Section (wave bg) > H2 + Div (grid) > 3x Article (step tile) elements.
Figma frame: 08_section_recent_jobs
You are generating a Bricks Builder section for callbrightside.com, a 5th-generation Kansas City family plumbing company. Output native Bricks elements (JSON element tree).
DO NOT GENERATE: header, nav, logo bar, footer, page wrapper. Those are existing global Bricks components and will already be on the page.
BRAND TOKENS (required):
- Colors: Navy #1D1760, Blue #30C5FF, Yellow #FFEA00. Accents: Sky #93DEFB, Purple #443A96. No red, no orange unless explicitly specified.
- Font: Inter only (300/400/500/600/700/800). No serif, no display.
- Copy style: No em dashes (use commas/periods). No emojis inside body copy (OK in section H2 decoration). Plain-English, 6th grade reading level.
- Stephanie format where copy allows: Problem then Impact then Solution then Data then Need.
ACCESSIBILITY:
- Min 16px body, 44px tap targets, visible focus rings (#30C5FF 2px), semantic HTML (h2/h3/article), aria-hidden on decorative icons.
- Color contrast WCAG AA.
RESPONSIVE:
- Mobile-first (320-768), tablet (769-1023), desktop (1024+).
- No horizontal scroll at any viewport.
SECTION: Jobs We Did This Week (dynamic card grid, HYBRID - Figma composition + Bricks AI card template)
PURPOSE: Proof no KC competitor shows. Before/after sewer footage plus inspection clips. 10x moat feature.
PHASE 1 OUTPUT (placeholder):
Generate an empty gallery slot with a dashed-border Div, 100 percent width on mobile / 3-col grid on desktop. Inside each placeholder card, include:
- Dashed border 2px #A8B0C2
- Aspect ratio 4/3
- Center-aligned text: "P2: Live Job Gallery"
- Sub-text: "Pulls from HCP Photos API daily"
H2: "Jobs We Did This Week"
H2 STYLING: Inter 700, 32px mobile / 40px desktop, #1D1760, left-aligned.
Subtitle below H2: Inter 400, 16px, #5F6380: "Real jobs, real KC homes. Updated daily from our field crew."
LAYOUT:
- Mobile: 1-col stack, 16px gap, 6 placeholder cards (will show most recent 6 when Phase 2 wires live feed).
- Desktop: 3-col grid, 24px gap, 2 rows (6 cards total).
CARD TEMPLATE (for Phase 2 API integration - include as data-ready structure):
- data-job-id="{{job_id}}" attribute on card
- data-service-type="{{service_type}}" attribute
- Image slot: before photo (top half), after photo (bottom half), or single 15-sec video thumbnail
- Service type label: small pill top-right, #30C5FF bg, white text, 11px
- Caption bottom: "{{neighborhood}} - {{service_type}}"
FIGMA ASSET NOTE:
Audrey designs the gallery COMPOSITION (Figma frame "08_section_recent_jobs") - grid spacing, card shape, hover treatment. Bricks AI generates the actual card DOM. When her Figma design is finalized, regenerate this prompt to sync composition details.
OUTPUT: Section > H2 + Subtitle + Div (grid) > 6x Article (placeholder card) elements with data-attributes ready for Phase 2 API wire.
Figma frame: 09_section_service_areas
You are generating a Bricks Builder section for callbrightside.com, a 5th-generation Kansas City family plumbing company. Output native Bricks elements (JSON element tree).
DO NOT GENERATE: header, nav, logo bar, footer, page wrapper. Those are existing global Bricks components and will already be on the page.
BRAND TOKENS (required):
- Colors: Navy #1D1760, Blue #30C5FF, Yellow #FFEA00. Accents: Sky #93DEFB, Purple #443A96. No red, no orange unless explicitly specified.
- Font: Inter only (300/400/500/600/700/800). No serif, no display.
- Copy style: No em dashes (use commas/periods). No emojis inside body copy (OK in section H2 decoration). Plain-English, 6th grade reading level.
- Stephanie format where copy allows: Problem then Impact then Solution then Data then Need.
ACCESSIBILITY:
- Min 16px body, 44px tap targets, visible focus rings (#30C5FF 2px), semantic HTML (h2/h3/article), aria-hidden on decorative icons.
- Color contrast WCAG AA.
RESPONSIVE:
- Mobile-first (320-768), tablet (769-1023), desktop (1024+).
- No horizontal scroll at any viewport.
SECTION: Service Areas (chip row)
PURPOSE: Local SEO signal. Google and user both need geographic clarity.
H2: "Serving Every Kansas City Neighborhood"
H2 STYLING: Inter 700, 28px mobile / 36px desktop, #1D1760, left-aligned.
Subtitle below H2 (Inter 400, 16px, #5F6380): "Licensed and insured across the entire KC metro area."
14 CITY CHIPS (exact list, exact order):
Overland Park, Olathe, Lenexa, Shawnee, Leawood, Prairie Village, Mission, Kansas City MO, Lee Summit, Blue Springs, Independence, Gladstone, Liberty, Raytown
CHIP STYLING:
- Background: rgba(48,197,255,0.12) (light blue tint)
- Border: 1px solid #30C5FF
- Text: Inter 500, 14px, #1D1760
- Padding: 8px 16px
- Border-radius: 20px (pill)
- Gap between chips: 8px
- Hover: background rgba(48,197,255,0.25), border #1D1760, cursor pointer
LAYOUT:
- Mobile: flex-wrap grid, chips fill available width, start-aligned.
- Desktop: flex-wrap row, 3-4 chips per row typical, centered.
LINKING (Phase 1):
- Each chip is an anchor tag wrapping the chip div.
- href="/service-areas/{slug}" where slug is kebab-case city name (overland-park, lee-summit, etc.)
- rel="noopener" not needed (internal link).
SCHEMA: Wrap the chip container in itemscope itemtype="https://schema.org/Place" and each chip in Place > name property.
OUTPUT: Section > H2 + Subtitle + Div (flex-wrap) > 14x Anchor > Div (chip) elements.
Figma frame: 10_section_reviews
You are generating a Bricks Builder section for callbrightside.com, a 5th-generation Kansas City family plumbing company. Output native Bricks elements (JSON element tree).
DO NOT GENERATE: header, nav, logo bar, footer, page wrapper. Those are existing global Bricks components and will already be on the page.
BRAND TOKENS (required):
- Colors: Navy #1D1760, Blue #30C5FF, Yellow #FFEA00. Accents: Sky #93DEFB, Purple #443A96. No red, no orange unless explicitly specified.
- Font: Inter only (300/400/500/600/700/800). No serif, no display.
- Copy style: No em dashes (use commas/periods). No emojis inside body copy (OK in section H2 decoration). Plain-English, 6th grade reading level.
- Stephanie format where copy allows: Problem then Impact then Solution then Data then Need.
ACCESSIBILITY:
- Min 16px body, 44px tap targets, visible focus rings (#30C5FF 2px), semantic HTML (h2/h3/article), aria-hidden on decorative icons.
- Color contrast WCAG AA.
RESPONSIVE:
- Mobile-first (320-768), tablet (769-1023), desktop (1024+).
- No horizontal scroll at any viewport.
SECTION: Live Reviews (dynamic review card grid, MOAT)
PURPOSE: Social proof. Live Google Reviews API filtered for KC + plumbing keywords. Every competitor uses static - ours is live.
DATA SOURCE (Phase 1 Phase 2 both):
Reviews are injected at render-time by `service_page_reviews_apply.py` filtered for keywords: plumber, plumbing, sewer, drain, water heater, Kansas City. Refreshes daily.
H2: "What Kansas City Homeowners Say"
H2 STYLING: Inter 700, 32px mobile / 40px desktop, #1D1760, center-aligned, 24px bottom margin.
Subtitle (Inter 400, 16px, #5F6380, center): "From real Google reviews, updated daily."
CARD TEMPLATE (output a Bricks element tree that repeats per review):
- data-review-id="{{review_id}}" attribute
- data-author="{{author_name}}" attribute
- Star row at top: 5 SVG stars, filled = #FFEA00, empty = #E3E8F0. Size 20px mobile / 24px desktop. Row 120px wide.
- Quote text: Inter 400, 15px, #1D1760, line-height 1.55, 4 lines max mobile / 5 lines max desktop (use -webkit-line-clamp).
- Author row: Inter 700, 14px, #1D1760 + "- {{location}}" in Inter 400, 14px, #5F6380.
- Card bg: #F7F4C1 (cream/ivory), padding 24px, border-radius 12px, shadow 0 4px 12px rgba(29,23,96,0.06).
LAYOUT:
- Mobile: 2 review cards stacked, 16px gap, 100 percent width each.
- Desktop: 2-col grid, 24px gap, fixed card height 422px.
PHASE 2:
Carousel with 5+ reviews and swipe gestures on mobile. Pull `next` and `prev` buttons in (hidden in Phase 1).
SCHEMA:
- Parent container: itemscope itemtype="https://schema.org/Organization"
- Each review card: itemprop="review" itemscope itemtype="https://schema.org/Review"
- Rating: itemprop="reviewRating" with ratingValue=5, bestRating=5.
- Author: itemprop="author" with name.
CTA below grid (center-aligned): "Read All 384+ Google Reviews" as text link, #30C5FF, Inter 600 14px, underline on hover.
OUTPUT: Section > H2 + Subtitle + Div (grid) > 2x Article (review card template) + Anchor (see-all link). Include data-placeholder="reviews_loop" on the grid Div so the ETL script knows where to inject live data.
Figma frame: 11_section_guarantees
You are generating a Bricks Builder section for callbrightside.com, a 5th-generation Kansas City family plumbing company. Output native Bricks elements (JSON element tree). DO NOT GENERATE: header, nav, logo bar, footer, page wrapper. Those are existing global Bricks components and will already be on the page. BRAND TOKENS (required): - Colors: Navy #1D1760, Blue #30C5FF, Yellow #FFEA00. Accents: Sky #93DEFB, Purple #443A96. No red, no orange unless explicitly specified. - Font: Inter only (300/400/500/600/700/800). No serif, no display. - Copy style: No em dashes (use commas/periods). No emojis inside body copy (OK in section H2 decoration). Plain-English, 6th grade reading level. - Stephanie format where copy allows: Problem then Impact then Solution then Data then Need. ACCESSIBILITY: - Min 16px body, 44px tap targets, visible focus rings (#30C5FF 2px), semantic HTML (h2/h3/article), aria-hidden on decorative icons. - Color contrast WCAG AA. RESPONSIVE: - Mobile-first (320-768), tablet (769-1023), desktop (1024+). - No horizontal scroll at any viewport. SECTION: Our Guarantees (3-tile row) PURPOSE: Remove the last risk objection before the final CTA. H2: "Our Guarantees to You" H2 STYLING: Inter 700, 32px mobile / 40px desktop, #1D1760, center-aligned, 32px bottom margin. 3 TILES (exact order, exact copy): TILE 1: - Icon: thumbs-up, 64px, #30C5FF - Title: "100 Percent Satisfaction" - Body: "If you are not happy with our work, we come back and make it right. Period." TILE 2: - Icon: hammer-wrench, 64px, #30C5FF - Title: "Workmanship Warranty" - Body: "Every repair is backed by a two-year workmanship warranty. Parts warranty per manufacturer." TILE 3: - Icon: receipt-dollar, 64px, #30C5FF - Title: "Upfront Flat-Rate Pricing" - Body: "No hourly billing surprises. You approve the exact price before we pick up a tool." TILE STYLING: - Background: #FFFFFF, border 1px #E3E8F0, radius 12px, padding 32px - Center-aligned content - Icon top, 24px bottom margin - Title: Inter 700, 20px mobile / 24px desktop, #1D1760 - Body: Inter 400, 14px mobile / 16px desktop, #5F6380, max 3 lines LAYOUT: - Mobile: 3 tiles stacked, 16px gap, 100 percent width, 32px padding reduced to 24px. - Desktop: 3-col grid, 24px gap, equal-width 380px. SCHEMA: Each tile wrapped in schema.org/OfferCatalog > hasOfferCatalog > Offer with itemprop="description". OUTPUT: Section (white bg) > H2 + Div (grid) > 3x Article (guarantee tile) elements.
Figma frame: 12_section_faq
You are generating a Bricks Builder section for callbrightside.com, a 5th-generation Kansas City family plumbing company. Output native Bricks elements (JSON element tree).
DO NOT GENERATE: header, nav, logo bar, footer, page wrapper. Those are existing global Bricks components and will already be on the page.
BRAND TOKENS (required):
- Colors: Navy #1D1760, Blue #30C5FF, Yellow #FFEA00. Accents: Sky #93DEFB, Purple #443A96. No red, no orange unless explicitly specified.
- Font: Inter only (300/400/500/600/700/800). No serif, no display.
- Copy style: No em dashes (use commas/periods). No emojis inside body copy (OK in section H2 decoration). Plain-English, 6th grade reading level.
- Stephanie format where copy allows: Problem then Impact then Solution then Data then Need.
ACCESSIBILITY:
- Min 16px body, 44px tap targets, visible focus rings (#30C5FF 2px), semantic HTML (h2/h3/article), aria-hidden on decorative icons.
- Color contrast WCAG AA.
RESPONSIVE:
- Mobile-first (320-768), tablet (769-1023), desktop (1024+).
- No horizontal scroll at any viewport.
SECTION: Frequently Asked Questions (accordion, 8 items, FAQPage schema)
PURPOSE: Objection crusher + rich-snippet SEO play. FAQPage JSON-LD = free search-result real estate.
H2: "Frequently Asked Questions"
H2 STYLING: Inter 700, 32px mobile / 40px desktop, #1D1760, left-aligned, 32px bottom margin.
8 FAQ ITEMS (exact order, exact question and answer):
Q1: "How much does sewer repair cost?"
A1: "Most trenchless sewer repairs at Bright Side run between $3,500 and $8,500 depending on depth, length, and access. Traditional excavation work runs $5,000 to $15,000. We give you a firm flat-rate quote after our free camera inspection, with zero pressure to move forward."
Q2: "Do you offer financing?"
A2: "Yes. We offer 0 percent APR financing for qualified customers through Wisetack, with approval in under 60 seconds. Applications are available on-site or online through our Financing page."
Q3: "Are you available on weekends and emergencies?"
A3: "Yes. We operate Monday through Saturday 8 AM to 9 PM Central Time. Emergency calls outside those hours are routed to our on-call team and we respond within 15 minutes with a callback."
Q4: "How fast can you come out?"
A4: "Same-day in most cases. We dispatch multiple crews across the KC metro and will book you for the earliest slot that fits your window, usually within 2 to 4 hours of your call during business hours."
Q5: "Do you service my neighborhood?"
A5: "We cover every neighborhood across the Kansas City metro including Overland Park, Olathe, Lenexa, Shawnee, Leawood, Prairie Village, Mission, Kansas City MO, Lee Summit, Blue Springs, Independence, Gladstone, Liberty, and Raytown."
Q6: "What is the warranty on your work?"
A6: "Every repair is backed by a two-year workmanship warranty. Parts carry the manufacturer warranty which ranges from 1 to 10 years depending on the component."
Q7: "How long does a sewer line replacement take?"
A7: "Most trenchless replacements are completed in 1 day. Traditional excavation jobs run 2 to 4 days depending on length and depth. We restore landscaping and concrete before we leave."
Q8: "Do you offer free estimates?"
A8: "Sewer estimates are always free, including the camera inspection. For non-sewer services there is an $89 dispatch fee that is waived when you approve the work."
ITEM STYLING:
- Accordion row: 48px min-height, 16px vertical padding, 1px bottom border #E3E8F0.
- Question: Inter 600, 16px mobile / 20px desktop, #1D1760.
- Answer: Inter 400, 14px mobile / 16px desktop, #5F6380, line-height 1.6.
- Caret: chevron-down icon, 20px, #30C5FF, rotates 180deg on open.
- Tap target: full row clickable, 44px min.
LAYOUT:
- Mobile: full-width, stack of 8 rows.
- Desktop: max-width 800px centered.
SCHEMA (CRITICAL):
Output a JSON-LD script block as the LAST element inside the section:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{ "@type": "Question", "name": "...", "acceptedAnswer": { "@type": "Answer", "text": "..." } },
... (8 entries)
]
}
</script>
OUTPUT: Section > H2 + Div (accordion container) > 8x Details/Summary pattern + Script (JSON-LD).
Figma frame: 13_section_final_cta
FIGMA-MODE. Do NOT run this in Bricks AI Studio. Audrey export steps: 1) Finalize Figma frame "13_section_final_cta" with all THREE step states of the multi-step form visible. 2) Export the background SVG (navy wave transitioning to footer) separately. 3) In Bricks, create a Section with background image = wave SVG, 96px top padding, 0 bottom padding (flows into footer). 4) Center a Bricks Block element, max-width 640px, white background, 16px radius, 32px padding, 0 8px 24px shadow. Copy to paste into Bricks text elements inside the white card: Headline (H2): "Ready to fix it right the first time?" - Inter 800, 32px mobile / 44px desktop, #1D1760, center-aligned Subtitle: "Call Kansas City's 5th-generation plumbing family." - Inter 400, 16px mobile / 20px desktop, #5F6380, center-aligned, 16px bottom margin CTA Row (3 buttons, horizontal on desktop, stacked on mobile, 12px gap): - Button 1 (yellow, primary): "Call (913) 963-1029" with phone icon - Button 2 (blue outline): "Book Online" with calendar icon - Button 3 (text link): "Chat with Daniel" with message icon Multi-step form (BELOW the CTA row): Step 1 of 3 (visible by default): "What service do you need?" - 4 tile-buttons: Sewer, Drain, Water Heater, Other - Next button: "Continue to timing" Step 2 of 3 (revealed after Step 1): "When do you need service?" - 4 tile-buttons: Emergency now, Today, This week, Flexible - Back + Next buttons Step 3 of 3 (revealed after Step 2): "Your details" - Fields: Name, Phone (tel, 10-digit), Address, ZIP - Submit button: "Request My Quote" - Progress dots showing current step (3 dots, current step filled yellow) Audrey designs ALL 3 step states in the Figma frame. Robert wires the step transitions in Bricks using the built-in Form element or a JS toggle. BRAND TOKENS APPLY to all text and buttons. This section is hand-designed in Figma and hand-imported to Bricks. Do not regenerate with Bricks AI.
This section is consumed by /opt/nexus/titan/nexus_bricks_orchestrator.py. Each card below maps 1:1 to the detailed prompt-body-01..13 above. Figma source: majxEfSTSyRskfASc9v5P1.
Build homepage Section 01 HERO per Figma file majxEfSTSyRskfASc9v5P1 hero frame. FIGMA-MODE: Audrey-designed. Full detailed spec and ready-to-paste Bricks AI Studio prompt available in this playbook under id="prompt-body-01". Brand tokens: navy #1D1760, blue #30C5FF, yellow #FFEA00. Inter font. Mobile-first 375/768/1440. Skip header — global Bricks component. Primary CTA tel:+19139631029 yellow button. Secondary ST booking iframe.
Build homepage Section 02 SERVICES GRID per Figma file majxEfSTSyRskfASc9v5P1 services frame. Full detailed spec in prompt-body-02 above. Native Bricks element tree. 6-8 service cards (Drain/Sewer/Water Heater/Leak/Emergency/Gas Line/Repipe). Each card: icon 64px + h3 Inter 700 + 2-line description + "Learn more" link. Hover lifts card. Responsive 3-col desktop, 2-col tablet, 1-col mobile. Service data from HCP or ST job-types where available.
Build homepage Section 03 LIVE STATS per Figma file majxEfSTSyRskfASc9v5P1. Detailed spec prompt-body-03. 4-column stat row pulling live: Google review count + rating (GET /api/gbp/performance 1hr cache), years in KC (static 5-generation), total jobs this year (GET /api/hcp/stats), neighborhoods served. Navy/blue card style, yellow numbers Inter 800 36px.
Build homepage Section 04 EMERGENCY BAND per Figma file majxEfSTSyRskfASc9v5P1. Detailed spec prompt-body-04. Full-bleed navy band with pulsing yellow emergency icon, "24/7 Emergency Plumbing — (913) 963-1029" headline, "Available NOW" chip with live time since last call from /api/gbp/last_call. Tel CTA primary.
Build homepage Section 05 FINANCING per Figma file majxEfSTSyRskfASc9v5P1. HYBRID: Figma for Plumbinati badge art, Bricks AI for financing card structure. Detailed spec prompt-body-05. Financing tiers from /api/financing/tiers. Plumbinati membership badge custom artwork from Audrey's Figma. Two-column 50/50 desktop.
Build homepage Section 06 MOAT per Figma file majxEfSTSyRskfASc9v5P1. FIGMA-MODE: Audrey-designed brand-heart section, do NOT generate with Bricks AI. Detailed spec prompt-body-06. Family photo + 5-generation story + Kalen master plumber credentials. Export PNG/SVG from Figma into Bricks page, wrap in semantic HTML.
Build homepage Section 07 REVIEWS per Figma file majxEfSTSyRskfASc9v5P1. Detailed spec prompt-body-07. 3-4 top reviews from /api/gbp/reviews filtered rating=5 with neighborhood chip. CL-05 Review Card component inherited from Reviews Page Playbook. "See all reviews →" link to /reviews/.
Build homepage Section 08 JOBS FEED per Figma file majxEfSTSyRskfASc9v5P1. HYBRID: Figma composition, Bricks AI card template. Detailed spec prompt-body-08. Pulls 3-6 recent completed jobs from HCP/ST API with before/after photos (once photo sync is restored — Apr 21 flag). Anonymize customer, show neighborhood + problem + fix. Updates daily.
Build homepage Section 09 SERVICE AREAS per Figma file majxEfSTSyRskfASc9v5P1. Detailed spec prompt-body-09. KC-metro map or neighborhood grid. Prioritize revenue zips: Prairie Village, Overland Park (S + N), Shawnee, Westwood/Mission, South KC, Leawood. Each chip links to /locations/{slug}/ location page.Build homepage Section 10 FAQ per Figma file majxEfSTSyRskfASc9v5P1. Detailed spec prompt-body-10. 5-7 top-level FAQ accordions (CL-09 component). FAQPage JSON-LD schema for rich snippets. "See all FAQs →" link to /faqs/.
Build homepage Section 11 TRUST per Figma file majxEfSTSyRskfASc9v5P1. Detailed spec prompt-body-11. 6-icon grid: BBB A+, KCMO license, Johnson County license, IICRC cert, Insurance cert, $50/$200 guarantee card. Icons from WP media library. Click-through to PDFs.
Build homepage Section 12 COMMUNITY per Figma file majxEfSTSyRskfASc9v5P1. Detailed spec prompt-body-12. Partner/referral ribbon (Bingham Restoration, Inspector Network). Optional community photo carousel. Soft section — Phase 2 swap if needed.
Build homepage Section 13 FINAL CTA per Figma file majxEfSTSyRskfASc9v5P1. FIGMA-MODE: Audrey-designed heroic close. Detailed spec prompt-body-13. "Call KC's 5th-generation family" headline yellow #FFEA00 Inter 800. Tel CTA primary + ST booking iframe secondary. Navy full-bleed. Glow on hover.
Source: BSP_Homepage_Redesign_Playbook.html (fetched 2026-05-01) Page status: Sacred. Phase 1 finalized, Phase 2 layered post-launch. Audience: Emergency Eric (50-60% revenue), Renovation Rachel (25-30%), Business Bob (8-12%), Maintenance Mike (45-55% leads, highest LTV).
H1 Kansas City's 5th-Generation Plumbing Family. Sewer, Drain, and Water Heater Experts.
Subhead Same-day service across Overland Park, Olathe, Lenexa, and the KC metro.
Primary CTA: Call (913) 963-1029 (yellow #FFEA00 button, emergency tone) Secondary CTA: Book Online (blue outline) Tertiary CTA: Chat with Daniel (text link)
Voice anchors required in first two sentences: geography (Kansas City), lineage (5th-generation), velocity (same-day), specialization (sewer, drain, water heater).
Six chips, exact order, no animation, immediately under hero CTA.
Three coupon cards. Targets Maintenance Mike. Closes the price-perception gap vs Benjamin Franklin.
Card 1. $25 Off Any Service New customers. One per household. Mention code KC25.
Card 2. $99 Drain Cleaning Single drain. Unclog or it is free. Code DRAIN99.
Card 3. Free Sewer Camera Inspection Free with any sewer repair $500 or over. Code CAMFREE.
H2: Plumbing Services We Specialize In
Six services in priority order. Sewer leads.
Link style: "Learn More" (Inter 600, 14px, #30C5FF).
H2: A Family Trade, Not a Franchise
Paragraph 1. The Barker family has run plumbing trucks in Kansas City for over 100 years. Our master plumber is fourth generation. His son is the fifth. Grandfathers trained fathers, fathers trained sons.
Paragraph 2. Every plumber on our truck was trained by someone who was trained by someone who learned this trade in Kansas City. That is not a marketing story. That is our kitchen-table story.
Paragraph 3. When you call Bright Side, you are not hiring a corporate franchise. You are hiring a family that has been in this city longer than most of its neighborhoods.
CTA: Meet the Team (outline blue, links /about)
H2: How It Works
Step 1. Call or book online. Tell us what is going on. Real people answer. Same-day callback if the line is busy.
Step 2. We arrive same-day and inspect. Licensed plumber on-site in most cases. Free camera inspection with any sewer repair.
Step 3. We fix it right. Flat-rate pricing approved before we start. Warranty on every job. Clean up before we leave.
H2: Serving Every Kansas City Neighborhood
Sub: Licensed and insured across the entire KC metro.
14-city chip list. Each links to /service-areas/{slug}.
Overland Park, Olathe, Lenexa, Shawnee, Leawood, Prairie Village, Mission, Kansas City MO, Lee's Summit, Blue Springs, Independence, Gladstone, Liberty, Raytown.
H2: What Kansas City Homeowners Say Sub: From real Google reviews, updated daily.
Live API feed filtered for plumber, plumbing, sewer, drain, water heater, Kansas City keywords.
Below carousel CTA: Read All 384+ Google Reviews (text link, #30C5FF)
H2: Our Guarantees to You
See faq_seed.md for the eight finalized Q&A pairs. FAQPage JSON-LD required for rich snippets.
Headline: Ready to fix it right the first time? Sub: Call Kansas City's 5th-generation plumbing family.
Three-button row.
Multi-step form (Phase 1). Step 1: Service type (Sewer / Drain / Water Heater / Other). Step 2: Timing (Emergency now / Today / This week / Flexible). Step 3: Name / Phone / Address / ZIP.
Option A (playbook canonical, recommended) H1: Kansas City's 5th-Generation Plumbing Family. Sewer, Drain, and Water Heater Experts. Sub: Same-day service across Overland Park, Olathe, Lenexa, and the KC metro. Option B (urgency-first, Emergency Eric lead) H1: Same-Day Plumbing in Kansas City. Five Generations of Sewer, Drain, and Water Heater Experts. Sub: Real plumbers on the truck today. Licensed, insured, family-owned. Option C (lineage-first, brand moat lead) H1: 100 Years of Kansas City Plumbing. One Family. One Truck Roll Away. Sub: Same-day sewer, drain, and water heater service across the KC metro. Option D (problem-first, panicked-homeowner mirror) H1: Sewer Backed Up at 11 PM? You Just Found Kansas City's 5th-Generation Plumbing Family. Sub: Same-day service across Overland Park, Olathe, Lenexa, and the KC metro. Option E (warranty-first, Renovation Rachel lead) H1: Kansas City Plumbing, Backed by Five Generations and a Two-Year Warranty. Sub: Same-day sewer, drain, and water heater service. Free estimates on sewer work.
Lead with Option A in production. It hits all four voice anchors in two sentences and is the playbook canonical. Hold Option D as a tested variant for paid traffic emergency campaigns.
Button text: Call (913) 963-1029 Color: Yellow #FFEA00 (emergency) Tone: Direct, immediate. Mobile: Tap-to-call wired. Touch target minimum 48x48 px. Variants for A/B if needed.
Button text: Book Online Color: Blue #30C5FF outline Action: Opens multi-step form (service type, timing, contact). Variants.
Link text: Chat with Daniel Action: Launches Daniel AI concierge (Vapi assistant e2920d04 / 913 963 9817). Variants.
Family Story section. Meet the Team (blue outline, links /about) Services Grid. Learn More (Inter 600, 14px, #30C5FF) Reviews section. Read All 384+ Google Reviews (text link, #30C5FF) Specials cards. Claim This Coupon (yellow #FFEA00 button, links /coupons)
Headline: Ready to fix it right the first time? Sub: Call Kansas City's 5th-generation plumbing family. Three-button row.
Left: Call (913) 963-1029 (yellow icon button) Right: Book Online (blue outline button)
No FAQ seed parsed.
Primary source: BSP_Homepage_Redesign_Playbook.html Fetched: 2026-05-01 Reference timeline: BSP_Bricks_Mining_Full_Timeline_Mar12_Apr27.html
| Element | Source section | Notes | |---|---|---| | North-star framing ("panicked homeowner at 11 PM") | Playbook §North Star | Quoted verbatim by Robert in playbook intro. | | Hero H1 + subhead | Playbook §01 Hero | Canonical. Four voice anchors required. | | Primary CTA (913) 963-1029 yellow | Playbook §01 Hero | CLAUDE.md confirms phone. | | Trust Bar 6 chips | Playbook §02 Trust Bar | Exact order, no animation. | | Current Specials 3 cards | Playbook §03 Current Specials | Codes KC25, DRAIN99, CAMFREE. | | Services Grid 6 services | Playbook §04 Services Grid | Sewer leads. | | "A Family Trade, Not a Franchise" | Playbook §06 Family Story | MOAT section. Three paragraphs verbatim. | | How It Works 3 steps | Playbook §07 How It Works | Anxiety reduction. | | Service Areas 14 cities | Playbook §09 Service Areas | Each links to /service-areas/{slug}. | | Live Reviews | Playbook §10 Live Reviews | Live Google API feed, MOAT. | | 3 Guarantees | Playbook §11 Guarantees | Removes risk objection. | | 8 FAQs | Playbook §12 FAQ | Verbatim Q&A. | | Final CTA + multi-step form | Playbook §13 Final CTA | 3-step form spec. | | Voice rules (no em dashes, no emojis in body) | Playbook §Brand Voice Rules + CLAUDE.md | Robert preference. | | Persona angles | Playbook §Persona Copy Angles | Maps copy cues to four personas. | | 10x moat features | Playbook §10x Moat Features | Phase 2 hooks. | | Brand colors #1D1760 / #30C5FF / #FFEA00 | CLAUDE.md BSP Core Facts | Brand standard. | | NAP (12022 Blue Valley Pkwy, OP, KS 66213) | CLAUDE.md BSP Core Facts | Header/footer/schema canonical. |