# Validation Run: Crystal Blue Plumbing Heating & Air **Date:** 2026-08-14 **Business:** Crystal Blue Plumbing Heating & Air **Location:** Placerville, CA (actual: Loomis, CA — same metro area) **Why chosen:** Plumbing/HVAC (GTM vertical), Placerville/Cameron Park area, never audited before, multi-location chain (tests GBP disambiguation) ## Pipeline Execution ``` multi_scraper.py → audit_engine.py → findings.json + findings.md ``` ## Surface Results | Surface | Status | Notes | |---------|--------|-------| | Google Business Profile | ⚠️ Degraded | Returned `name: "Hours"`, null address, null phone. GBP matched wrong entity. | | Apple Maps | ✅ Good | Full NAP, 4.2★/65 reviews, hours, website URL, phone | | Bing Places | ❌ Failed | Returned no data | | Website | ❌ Failed | HTTP 403 Forbidden (crystalblueplumbing.com) | ## Key Findings (5 total) | # | Severity | Finding | Verdict | |---|----------|---------|---------| | 1 | 🟥 Immediate | Hours mismatch (GBP vs Apple) | **FALSE POSITIVE** — GBP from wrong entity | | 2 | 🟧 High | No website found | PARTIALLY FALSE — URL exists but 403 | | 3 | 🟨 Medium | Review dates unavailable | VALID | | 4 | 🟨 Medium | No description | VALID | | 5 | 🟩 Enhancement | No price level | VALID | ## Issues Observed ### 1. GBP Entity Disambiguation (CRITICAL) GBP scraper returned `name: "Hours"` with null address. Matched wrong GBP listing. Fallback to Apple Maps saved the audit. ### 2. Apple Maps Hours Parsing `12:00 AM-12:00 PM` for all days — likely parsing "Open 24 hours" as midnight-to-noon. ### 3. Website 403 Not Distinguished From "No Website" Should be separate findings: "no_website" vs "website_unreachable". ### 4. Hours Mismatch With Degraded Source Engine flagged hours mismatch but GBP data was garbage. Mismatch detection should skip degraded sources. ## Verdict Pipeline works end-to-end but findings not yet trustworthy without human review. GBP scraper is the biggest risk. **Before production:** 1. GBP entity validation (name match + address present) 2. Hours comparison skip degraded sources 3. Website 403 → distinct finding 4. Apple Maps hours parsing audit ## Artifacts - `multi_surface_2026-08-14.json` — raw scraped data (4KB) - `findings.json` — engine output (3KB) - `findings.md` — markdown report (2.5KB) - `VALIDATION.md` — this file