This playbook is built under the 3-tool workflow: Figma for the 20% that carries the brand (hero + MOAT sections), Bricks AI Studio for the 80% that repeats (grids, rows, accordions, chip bars), Claude/Nexus to orchestrate briefs.
NN_type_descriptor · lowercase + underscores · number matches the § in the Section-by-Section spec · starts at 01, no 00_header.Redesign /contact-us/ with honest 8 AM staffed hours (post-Apr 18 3CX fix), 3 clear booking surfaces (Call / Text / Form), and after-hours Daniel routing explanation. Phase 1 ships passable this sprint with 1 Audrey deliverable (honest-hours chip design). Phase 2 adds map embed + response-time widget + before-we-arrive infographic after site launch.
Item 1 · Honest-Hours chip design. Figma component for the top of the hero: "Open Now: 8 AM – 9 PM Mon-Sat" with live status indicator (green dot pulsing when open, gray when closed). Mobile + desktop variants. Takes 10–15 minutes.
Everything else on this page inherits from Homepage + Location components: trust bar, FAQ, CTA buttons, form layout, footer. The existing Forminator form stays as-is — just restyled with CL-14 Multi-Step Form Field you already specced.
Phase 2 (post-launch): Map embed with BSP location pin, "before we arrive" infographic (Emergency Eric pre-arrival steps), response-time widget showing live dispatch status. Only after site ships.
📦 See your 1 deliverableTime: 2.5 hrs Phase 1. Cost: $0. Approved default.
Time: 1 hr. Cost: $40/mo. Generates 3 surface cards + hours block.
Time: 1 hr + setup. Cost: $90 all. Zeus RAG brand-lock.
Build Contact page hero. Navy radial gradient #1D1760 to #0A0728. Two-col 60/40 desktop (text left, live-status graphic right), stacked mobile (graphic below text). Honest-hours chip at top (Audrey's Figma component): "Open Now: 8 AM - 9 PM Mon-Sat" with green pulsing dot when open. H1 Inter 800 46/34px white: "We Answer When Others Don't" (or Kalen copy). Subhead Inter 400 19px #BEE6F5: "Real dispatch 8 AM to 9 PM. Daniel AI on-call dispatcher for after-hours. Honest hours, no voicemail maze." Primary CTA yellow button tel:+19139631029 "Call (913) 963-1029". Secondary ghost-outline "Jump to text" anchor to #text. Tertiary text-link "Prefer a form? Scroll down." anchor to #form. Right column: vector illustration of phone + dispatch + honesty iconography with yellow/blue gradient accents (inherits Audrey design system). Inter only. No emojis on rendered page.
Build 3-col card row desktop (1-col mobile stacked), below hero. Each card bg #141035, border 1px rgba(48,197,255,0.18), radius 16px, padding 32px, text-align center. Subtle yellow number badge top-left (1, 2, 3). Card 1: Phone icon 64x64 blue + H3 "Call (913) 963-1029" + body "Fastest. Real dispatcher 8 AM-9 PM Mon-Sat." + Primary yellow CTA button tel: link. Card 2: Chat bubble icon 64x64 blue + H3 "Text (913) 963-1029" + body "SMS to the same number. Dispatcher replies within 10 min during hours." + Secondary ghost button "Open Text". Card 3: Form icon 64x64 blue + H3 "Fill Out Form" + body "We will call back within 15 min during hours. Best for non-urgent questions." + ghost button "Scroll to form" anchor #form. Hover: border solid #30C5FF, translateY(-2px). Audrey-designed honest-hours chip at top row centered.
Build hours + address block. Navy card #141035 full-width, 2-col desktop 50/50, stacked mobile. Left: Address title H3 Inter 700 white, address lines Inter 400 15px: 12022 Blue Valley Pkwy, Overland Park KS 66213. Google Maps link ghost-outline "Get Directions" below. Right: Hours title H3 Inter 700 white, table with 7 rows (Mon-Sun). Each day row: day name Inter 600 13px + hours Inter 400 13px aligned right. Mon-Sat: "8:00 AM - 9:00 PM". Sunday: "Closed - On-Call Emergency Only via Daniel AI". Green pulse dot next to current day. Live "Open Now" or "Closed" badge top-right. Fetch /api/3cx/hours (verify hours haven't drifted). Inter font throughout.
Restyle existing Forminator form on /contact-us/ using CL-14 Multi-Step Form Field component from Location Pages playbook. Do NOT replace form (keeps submission endpoint + snippet logic). Wrap with new CSS: fields bg #141035, border 1px rgba(48,197,255,0.18), radius 8px, padding 12px 16px, Inter 400 15px color white. Labels Inter 600 13px color #BEE6F5 above field. Focus state: border #30C5FF, glow 0 0 0 3px rgba(48,197,255,0.12). Submit button yellow #FFEA00 full-width Inter 700 16px "Request Callback". Spinner animation on submit. Success message green #22C55E "We got it. Dispatcher will call within 15 minutes during our 8 AM - 9 PM hours." Failure message red "Form error, please call (913) 963-1029 directly." Form id and field names unchanged (critical: GCLID capture Snippet #39 depends on them).
Build After-Hours explanation card. Navy gradient card padding 32px, 2-col desktop 40/60, stacked mobile. Left: Daniel AI avatar illustration 160x160 inherits Audrey design (or Daniel logo if exists). Right: H3 Inter 800 24px yellow "What Happens After 9 PM?" + body Inter 400 15px/1.65: "Call (913) 963-1029. You reach Daniel, our AI dispatcher. Daniel confirms your emergency, pages our on-call master plumber, and texts you back within 15 minutes with the technician's ETA. You are not talking to a voicemail. You are talking to a real-time system that puts a plumber on the road. If it is not a true emergency, Daniel schedules your callback for 8 AM." NO marketing promises about "24/7 techs". Set expectation honestly. Callout: "Emergency examples: burst pipe, flooding, no water, gas smell, sewage backup. Everything else: 8 AM callback."
FAQ accordion with 5 Contact-specific Qs using CL-09 FAQ Accordion: (1) "What are your hours?" Answer: "8 AM-9 PM Mon-Sat. Sundays emergency-only via Daniel AI." (2) "How fast can you respond?" Answer: "Same-day during hours. Within 15 min callback promise after form submission or after-hours text." (3) "Do you charge a dispatch fee?" Answer: "$89 dispatch waived if you proceed with the repair. Sewer camera inspections free with no dispatch fee." (4) "What payment methods do you accept?" Answer: "All major credit cards, ACH, checks. Financing via Wisetack / GreenSky / Acorn." (5) "What if it is an emergency after hours?" Answer: Link to Section 07 explanation.
Final CTA navy #1D1760 full-bleed 80px padding. Centered max-width 900px. Headline Inter 800 36/28px yellow [Kalen, 1 sentence]. Subhead Inter 400 19px white. 2-CTA row: primary yellow button tel: "Call (913) 963-1029", secondary ghost-outline "Book Online" ST iframe lazy-load. Below CTAs: live 4.9 star + 396 reviews chip (fetch /api/gbp/performance). Stack mobile. No emojis.
Make BSP the easiest plumber in KC to reach during honest hours, set accurate expectations after hours (Daniel AI dispatcher, 15-min text callback), prevent Heather Howard-class incidents by never promising staffed service we don't have, and surface LocalBusiness schema with verified openingHoursSpecification matching 3CX OfficeHours truth.
| Hours | 8 AM - 9 PM Mon-Sat (honest, post-Apr 18) |
| Backend | 3CX Queue 810 → IVR 820 → Ashton+Jordan (ext 100+102) |
| After-hours | Forwards to Daniel AI Vapi at (913) 963-9817 |
| Attribution | GA4 events: button_click_call + first_time_phone_call + repeat_phone_call |
| GCLID | Captured via Snippet #39 + click-to-call tel: handler |
| SLA | < 10 sec answer during hours. Daniel answers < 3 sec after. |
| Status | Phase 1 link-only. Full 2-way SMS Phase 2 (blocked on 10DLC EIN from Stephanie) |
| Backend | Telnyx (EIN pending to unblock T-Mobile/AT&T) |
| Fallback | iPhone/Android native SMS app opens with pre-filled destination |
| Attribution | GA4 event sms_click |
| Status | Existing form at /contact-us/#book-a-plumber. Phase 1 restyle with CL-14, keep endpoint. |
| Backend | WP Forminator → email to Ashton+Jordan + Monday.com |
| Attribution | GA4 events form_submit_booking + Contact Form Submit + form_submission |
| GCLID | Captured via Snippet #39 hidden field |
| SLA | 15-min callback during hours. 8 AM next-day if submitted overnight. |
| History | CRO Form v4.0 broken 3 times: Mar 22 wiped + Apr 2 redeployed + Apr 12 wrong position + Apr 13 500 incident + Apr 17 emergency fix. Snippet #55. Touch with care. |
project-cro-form-recurring-structural-failure.md. JS hack architecture is structurally fragile. Phase 2 consideration: rebuild in Bricks native + deprecate Snippet #55. NOT in scope for Phase 1.| Day | Staffed Hours (3CX Truth) | After Hours |
|---|---|---|
| Monday | 8:00 AM - 9:00 PM | Daniel AI on-call, 15-min text callback for emergencies |
| Tuesday | 8:00 AM - 9:00 PM | Same |
| Wednesday | 8:00 AM - 9:00 PM | Same |
| Thursday | 8:00 AM - 9:00 PM | Same |
| Friday | 8:00 AM - 9:00 PM | Same |
| Saturday | 8:00 AM - 9:00 PM | Same |
| Sunday | CLOSED | Emergency-only via Daniel AI. No dispatch promise. Kalen quote: "Hard no Sunday work." |
GET /api/3cx/hours and compares to hardcoded hours block. If drift detected (e.g., 3CX changed to 9 AM but page says 8 AM), emit Slack alert to Robert. Implement in Phase 2 as part of honesty-monitor."Call (913) 963-1029 any time. You reach Daniel, our AI dispatcher. Daniel confirms your emergency, pages our on-call master plumber, and texts you back within 15 minutes with the technician's ETA. You are not talking to a voicemail. You are talking to a real-time system that puts a plumber on the road. If it is not a true emergency, Daniel schedules your callback for 8 AM the next morning. Emergency examples: burst pipe, flooding, no water, gas smell, sewage backup. Everything else: 8 AM callback."
50-60% rev. Panic mode. Lands on /contact-us/, scans honest-hours chip, taps Call CTA in 3 seconds. Section 07 after-hours explanation reassures him outside hours. Phase 1 must answer "can I get help RIGHT NOW" definitively.
25-30%. Uses the form for non-urgent. Phase 1 restyled form with clear expectation ("15-min callback during hours") gives her confidence. Reads FAQ for warranty + hours Qs.
Bulk inquiry path. Phase 1 form has text-area for "list of properties". Phase 2: dedicated bulk-inquiry multi-step form.
Re-booking. Phase 1: Section 13 Final CTA book-online iframe lets her schedule directly. Rarely scrolls past hero.
| Competitor | Honest Hours? | 3 Surfaces? | After-Hours Explanation? | LocalBusiness Schema? | Live Status Indicator? |
|---|---|---|---|---|---|
| BSP Phase 1 target | ✅ 8 AM-9 PM + Sun closed | ✅ Call+Text+Form | ✅ Daniel explainer | ✅ openingHoursSpec | P2 |
| Anthony Plumbing | Claims 24/7 | Phone + Form | ❌ | ❌ | ❌ |
| Benjamin Franklin KC | Claims 24/7 | Phone + Form | ❌ | Partial | ❌ |
| Roto-Rooter KC | Claims 24/7 | Phone + Form | Generic | ❌ | ❌ |
| Kevin Ginnings | M-F 8-5 | Phone | ❌ | ❌ | ❌ |
| Inception | Claims 24/7 | Phone + Form | ❌ | ❌ | ❌ |
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"@id": "https://callbrightside.com/#org",
"name": "Bright Side Plumbing",
"telephone": "+1-913-963-1029",
"address": { "@type": "PostalAddress", "streetAddress": "12022 Blue Valley Pkwy", "addressLocality": "Overland Park", "addressRegion": "KS", "postalCode": "66213", "addressCountry": "US" },
"geo": { "@type": "GeoCoordinates", "latitude": "38.9821049", "longitude": "-94.6974057" },
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
"opens": "08:00", "closes": "21:00"
}],
"priceRange": "$$",
"image": "https://callbrightside.com/wp-content/uploads/logo.png",
"url": "https://callbrightside.com/",
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+1-913-963-1029",
"contactType": "Customer Service",
"areaServed": "US-KS,US-MO",
"availableLanguage": "English"
}
}
{
"@context": "https://schema.org",
"@type": "ContactPage",
"name": "Contact Bright Side Plumbing",
"description": "Contact Bright Side Plumbing for 24/7 emergency plumbing service in Kansas City metro. Call 913-963-1029, text, or fill out our form.",
"mainEntity": {
"@type": "LocalBusiness",
"@id": "https://callbrightside.com/#org"
}
}
| Date | Incident | Rule It Created |
|---|---|---|
| Mar 22 | phpMyAdmin crash wiped CRO form Snippet #55 and GCLID Snippet #39. NOBODY NOTICED for 11 days. | Never destroy snippets without backup. Form + GCLID monitoring mandatory. |
| Apr 2 | CRO form v4.0 redeployed as Snippet #55 after 11-day absence. | Form endpoint + field names locked — GCLID capture depends on them. |
| Apr 12 | Form rendered after footer, not in booking section. JS wrong selector. | JS teleport architecture is fragile. CL-14 restyle, keep logic. |
| Apr 13 | Contact page 500 error — add_filter in wrong wp-config. | Never touch main wp-config. Always specify which site. |
| Apr 17 | BSP_Contact_500_Emergency_Fix.html incident doc (25 KB). | Fix history documented. Restart protocol. |
| Apr 17 evening | Heather Howard called 7:51 PM emergency. Daniel promised tech twice. Nobody came. Walked into office Apr 18 AM furious. | Honest hours rule. No 24/7 marketing. Daniel prompt rewritten with AFTER-HOURS RULE. 3CX 07 → 08. |
| Owner | Deliverable | Deadline |
|---|---|---|
| Audrey | Item 1: Honest-Hours chip Figma component. Green pulse dot when open, gray when closed. Mobile + desktop variants. | End Apr 22 |
| Kalen | H1 + subhead for hero (1-2 sentences) + Final CTA headline. If he wants to modify after-hours Daniel explanation, his version wins. | End Apr 22 |
| Stephanie | Approve Path B/D decision. | Mon Apr 21 EOD |
| Robert | Bricks build, restyle Forminator with CL-14, integrate honest-hours chip, ship LocalBusiness + ContactPage schema, CF purge, MH log. Test form end-to-end in staging first. | End Apr 24 |
Every competitor claims fake 24/7. BSP honesty = conversion moat.
Call/Text/Form with SLA per surface. No mystery.
Prevents Heather Howard-class incidents. Honesty > marketing lies.
Schema matches 3CX live. No drift.
'Next available tech: 1:15 PM' first-in-market KC plumbing.
Customer pre-arrival prep. Value-add unique to BSP.
| Keyword | Volume/mo | KD | Intent |
|---|---|---|---|
| bright side plumbing contact | ~140 | ~5 | Branded |
| Keyword | Vol | KD | Intent |
|---|---|---|---|
| bright side plumbing phone number | ~90 | ~3 | Branded |
| emergency plumber kansas city | ~1300 | ~22 | Money |
| plumber near me kansas city | ~2900 | ~24 | Money |
/opt/nexus/titan/api/keyword_lookup against each keyword before ship or cross-reference with BSP_Keyword_Weaponization_Strategy.html 141 KB for confirmed pillar volumes.| Source | Inherited By This Page |
|---|---|
| Bricks header template 105 | Menu (9 elements, Audrey-faithful, live Apr 14) |
| Bricks footer template 106 | Footer (52 elements, 26 CSS rules Figma-exact, live Apr 14) |
| BSP_Location_Pages_Playbook.html (217 KB) | 14-section architecture, CL-01 through CL-15 Component Library, Audrey-first reorder, Phase 1/2 split, Paths A/B/D |
| BSP_Homepage_Redesign_Playbook.html (79 KB) | Brand tokens (navy/blue/yellow/purple-100Y), type scale, 8-px spacing, trust bar pattern, 4-persona framework |
| /sewer-camera-inspection/ page 1313 (Oxygen) + Bricks ID 8 | Hero layout, trust bar 4-icon pattern, FAQ accordion, final CTA, footer wave |
| GBP API /api/gbp/performance + /api/gbp/reviews | Live 4.9 star + 384 chip + review feed |
| R2R engine r2r_summary.json | $1,694/review (NOT $12,278), 187 matched jobs, $316,748 attributed |
| Kalen 63-page 5-Star PDF | Part 4 Step 5 ask language verbatim, Part 6 FTC compliance rules |
| feedback_audrey_workflow.md | Inter font, no emojis landing, no em dashes, hero below text (ADA), 4:3 photos, gradient aesthetic |
| 3CX OfficeHours 08:00-21:00 Mon-Sat | Honest hours source of truth (post-Apr 18 correction) |
| Snippet #55 (CRO form v4.0) + Snippet #39 (GCLID capture) | Form endpoint + GCLID attribution intact (Apr 13 incident history) |
| Snippet #49 (WP Rocket JS exclude) | GCLID capture script not delayed |
| Asset | Use | Source | Status |
|---|---|---|---|
| Honest-hours chip component | Hero | Audrey designs green-pulse-when-open variant | ✅ Audrey P1 item 1 |
| Dispatch phone illustration | Hero right column | Audrey gradient accent vector P2 or ghost icon P1 | ✅ P1 available |
| Team photo | Optional secondary | Existing Drive library | ✅ Available |
| Map embed | Section 10 P2 | Google Maps Static (BLOCKED Cloud Console enable) | 🔴 P2 blocked |
| Before-we-arrive 6-step infographic | Section 12 P2 | Audrey designs P2 vector | 🤟 P2 Audrey |
| Kalen Step | Anchor on This Page |
|---|---|
| Step 1 Set Expectations | Honest 8 AM hours + 3 booking surfaces set accurate expectations |
| Step 2 Above + Beyond | 3 surfaces (Call+Text+Form) = above-and-beyond accessibility |
| Step 3 Walkthrough | After-hours Daniel explanation walks through the process explicitly |
| Step 4 Reinforce Satisfaction | Response-time widget (P2) reinforces reliability |
| Step 5 Request Review | Post-service trigger not on Contact page (happens on /reviews/ after service) |
| Surface | Where on This Page | Backend + SLA |
|---|---|---|
| ST scheduler iframe | Section 13 Final CTA | ServiceTitan lazy-load, primary surface on /contact-us/ P2 |
| Click-to-call (913) 963-1029 | Hero primary CTA + Section 03 Card 1 + sticky mobile bar + Final CTA | Primary surface. 3CX Queue 810 / Daniel (913) 963-9817 after hours. <10s SLA in hours. |
| Forminator form | Section 06 Forminator restyled with CL-14 | WP plugin → email Ashton+Jordan + Monday.com. 15-min callback SLA during hours. |
After today\'s full wire-up, the BSP contact form drives a 5-stage pipeline from form submit → Gmail/Slack notification → GCLID capture → nightly Google Ads upload. Architecture explained with receipts below.
| Snippet | Name | Purpose | Status |
|---|---|---|---|
| #93 | BSP Contact Form Race-Fix (MutationObserver) | Pre-move form into placeholder before paint · kills 16-sec JS race | ✅ Active |
| #94 | BSP Nonce Refresh OVERRIDE | Fix nonce action mismatch · eliminates "Security check failed" | ✅ Active |
| #95 | Pipeline Override v1 (wrong port) | Hit direct 34.55.179.122:8512 (GCP-firewalled) · failed | ❌ Deactivated |
| #96 | Pipeline Override v2 (morpheus proxy) | Route bridge POST via nginx proxy · correct ST creds · priority 5 | ✅ Active · Captured DB row 10 |
/api/gclid-bridge/ proxy updated from 127.0.0.1:8509 (dead) → 127.0.0.1:8512 (live bridge v2)admin_url(admin-ajax.php) — missing quotes around 'admin-ajax.php'. Under PHP 8.3 undefined constants are fatal.'bsp_contact_form' but #73 refreshes it with action 'bsp_nonce'. Deployed override #94."bridge":null, "st":null. Diagnosed: Snippet #55 hits dead port 8509, uses wrong ST creds (cid.os5jm3p39... vs correct cid.os5jm3m8cw... in .env).bsp-contact-wrapper has dimensions 495×410, visible=true){"success":true,"message":"Thank you!"})TEST_V2_1776724305 | 9135553030)ST lead creation returns 400 "campaignId: Required". Form override #96 sends minimal payload. Need to:
GET /marketing/v2/tenant/.../campaigns)campaignId + switch endpoint from /leads to /bookings (memory Apr 16 confirms bookings is the correct endpoint)Impact while unresolved: Minimal. Email + Slack DM still reach the team. Ashton creates ST lead manually from the notification (how it's worked for weeks).
Estimated fix effort: 30-45 minutes.
Long-term, the Oxygen-based snippet stack (8+ snippets held together with JS hacks and repositioning logic) is fragile. This is the 4th break in 35 days (project-cro-form-recurring-structural-failure.md).
Recommended migration: rebuild /contact-us/ on bricks.callbrightside.com with the form placed natively in a Bricks section.
Logged to Master History as bsp-apr20-contact-form-pipeline-full-fix. This section is source of truth for the pipeline.
Source: BSP_Contact_Page_Playbook.html (fetched 2026-05-01). Critical rule: every hours claim must match 3CX OfficeHours single source of truth. No "24/7" claims, no "always available" claims. Honesty principle is non-negotiable after the April 17 Heather Howard incident.
H1: We Answer When Others Don't. Sub: Real dispatch 8 AM to 9 PM Monday through Saturday. Daniel AI on-call dispatcher for after-hours. Honest hours, no voicemail maze.
Three side-by-side cards.
Card 1. Call. Headline: Call (913) 963-1029. Body: Fastest. Real dispatcher 8 AM to 9 PM Mon to Sat. We pick up in under 10 seconds during hours. Button: Call Now (yellow #FFEA00)
Card 2. Text. Headline: Text (913) 963-1029. Body: SMS to the same number. Dispatcher replies within 10 minutes during hours. Button: Send a Text (blue outline)
Card 3. Form. Headline: Send a Message. Body: Best for non-urgent questions. We will call you back within 15 minutes during hours, or by 8 AM the next morning if submitted after-hours. Button: Open the Form (text link)
H2: When We Pick Up
| Day | Hours | |---|---| | Mon to Sat | 8 AM to 9 PM | | Sun | Closed |
Note: After-hours calls are routed to Daniel, our AI dispatcher. Sundays are emergency-only via Daniel. We do not staff routine service calls on Sunday.
Bright Side Plumbing. 12022 Blue Valley Pkwy, Overland Park, KS 66213. (913) 963-1029.
After-hours emergency line. Daniel AI dispatcher: (913) 963-9817.
(Map embed beneath. Lazy-loaded.)
Heading: Send Us a Message. Sub: We reply within 15 minutes during hours.
Fields.
Button: Send My Message (yellow #FFEA00)
Below button microcopy: We will call you back within 15 minutes during hours.
H2: After Hours? Daniel Is Up.
Call (913) 963-1029 any time. You reach Daniel, our AI dispatcher. Daniel confirms your emergency, pages our on-call master plumber, and texts you back within 15 minutes with the technician's ETA. You are not talking to a voicemail. You are talking to a real-time system that puts a plumber on the road. If it is not a true emergency, Daniel schedules your callback for 8 AM the next morning.
Emergency examples. Burst pipe. Flooding. No water. Gas smell. Sewage backup. Everything else. 8 AM callback.
See faq_seed.md.
Headline: Got a problem? We pick up. Sub: Real dispatch 8 AM to 9 PM. Daniel AI after-hours.
Three buttons.
Live social-proof chip: 4.9 stars. 396 reviews on Google.
Option A (playbook canonical, recommended) H1: We Answer When Others Don't. Sub: Real dispatch 8 AM to 9 PM Monday through Saturday. Daniel AI on-call dispatcher for after-hours. Honest hours, no voicemail maze. Option B (simple direct) H1: Call. Text. Or Send a Message. We Pick Up. Sub: Real dispatch 8 AM to 9 PM Mon to Sat. After-hours emergencies routed via Daniel AI. Option C (honesty stake) H1: No Voicemail Maze. No Fake 24/7. Real Plumbers, Real Hours. Sub: 8 AM to 9 PM Monday to Saturday. Daniel AI on-call for true emergencies after-hours. Option D (urgency-first) H1: Got a Problem? We Pick Up in Under 10 Seconds. Sub: 8 AM to 9 PM Mon to Sat. Same-day dispatch across the KC metro. Option E (community ownership) H1: A Real Person Answers Every Call. From a Real Kansas City Family. Sub: 8 AM to 9 PM Mon to Sat. Daniel AI dispatcher after-hours for emergencies.
Lead with Option A. It carries Robert's preferred honesty stake and aligns with the post April-17-incident voice rule. Hold Option C as a paid-traffic variant for accountability-minded buyers.
Any hero with "24/7", "always on", "always available", "anytime tech dispatch", or "round-the-clock service". After the April 17 Heather Howard incident, these claims are forbidden.
Primary. Call (913) 963-1029 (yellow #FFEA00) Secondary. Send a Text (blue outline) Tertiary. Open the Form (text link)
Call card button. Call Now Text card button. Send a Text Form card button. Open the Form Variants.
Primary. Send My Message (yellow #FFEA00) Variants.
Below-button microcopy. We will call you back within 15 minutes during hours.
Headline: Got a problem? We pick up. Sub: Real dispatch 8 AM to 9 PM. Daniel AI after-hours. Three buttons.
No FAQ seed parsed.
Primary source: BSP_Contact_Page_Playbook.html (fetched 2026-05-01). Brand canon: CLAUDE.md.
| Element | Source | Notes | |---|---|---| | Hero H1 "We Answer When Others Don't" | Playbook §Hero | Verbatim. Honesty stake. | | Subhead "Real dispatch 8 AM to 9 PM" | Playbook §Hero | Verbatim. | | Hours table Mon to Sat 8 AM to 9 PM, Sun closed | Playbook §Hours of Operation | 3CX single source of truth. | | "Hard no Sunday work" rule | Playbook §Hours + Stephanie directive | Hard rule. | | Three contact method cards (Call/Text/Form) | Playbook §Contact Methods & Response Promises | Verbatim copy and SLAs. | | 10-second answer SLA | Playbook §Call card | Verbatim. | | 10-minute text reply SLA | Playbook §Text card | Verbatim. | | 15-minute callback SLA | Playbook §Form card | Verbatim. | | After-Hours Daniel AI explainer | Playbook §Daniel Explainer | Verbatim required. | | Emergency examples list | Playbook §Daniel Explainer | Verbatim. | | Forbidden language ("24/7", "always available", "we'll send tech after-hours") | Playbook §Forbidden Language | Hard guardrail. | | NAP block | Playbook §NAP + CLAUDE.md | Verbatim. | | Daniel AI after-hours number (913) 963-9817 | Playbook §NAP + CLAUDE.md | Verbatim. | | FAQ items | Playbook §FAQ Sample Items + extension | Q6, Q7, Q9, Q10 added by track_d, derived from playbook. | | Final CTA section | Playbook §Final CTA Section | Headline placeholder filled per Audrey workflow. | | Live social proof chip 4.9 stars + 396 reviews | Playbook §Final CTA + GBP API | Verbatim. | | April 17 Heather Howard incident driver | Playbook §Critical Incident Context | Behind every honesty rule on this page. | | No em dashes, no emojis on rendered page | Playbook §Tone & Style Rules + CLAUDE.md | Voice rule. |