73204c4810
- website surface: Jina Reader re-render when direct HTML lacks a visible phone (bot-walled 403 or client-side rendered phone) — the NAP cross-check no longer loses its third source - phone regex: lookarounds reject phone-like substrings glued to other digits (JS artifact numbers from raw HTML) - renderer: jina_reader provenance key when fallback fires - --selftest mode (offline check of phone extraction) - VALIDATION.md: gate re-run timestamp (PASS unchanged)
60 lines
3.3 KiB
Markdown
60 lines
3.3 KiB
Markdown
# Validation Run: Gilmore Heating, Air and Plumbing
|
||
|
||
**Date:** 15 August 2026
|
||
**Business:** Gilmore Heating, Air and Plumbing
|
||
**Rating:** 4.8 ★ | **Reviews:** 3860
|
||
**Engine findings:** 13 | **Material (in report):** 8 | **Rejected FP/low-signal:** 3 | **Needs verification:** 0
|
||
|
||
## Reviewer dispositions (locked process v1.1 §3)
|
||
|
||
### Material (survive normalization → in REPORT-final.md)
|
||
|
||
- **immediate** — Phone number inconsistent across 1 surface(s)
|
||
`distinct numbers: 5302905551, 9168665596`
|
||
- **immediate** — Address inconsistent across 1 surface(s)
|
||
`google='8636 Antelope North Rd Bldg D, Antelope, CA 95843' vs apple='8636 Antelope North Rd, Antelope, CA 95843'`
|
||
- **immediate** — Hours mismatch on 7 day(s) — GBP is authoritative
|
||
`7 day(s) genuinely differ: saturday: Open 24 hours vs 12:00 AM-12:00 PM; sunday: Open 24 hours vs 12:00 AM-12:00 PM; monday: Open 24 hours vs 12:00 AM-12:00 PM; tuesday: Open 24 hours vs 12:00 AM-12:00 PM`
|
||
- **immediate** — Average rating 3.6 — below 4.0 threshold
|
||
`average 3.65 (google 4.8 / apple 2.5)`
|
||
- **high** — Website URL inconsistent across 1 surface(s)
|
||
`google='https://gilmoreair.com/service-areas/antelope/?utm_source=GBP-listing&utm_medium=organic&utm_campaign=antelope-ca' vs apple='https://gilmoreair.com' — different domains`
|
||
- **high** — Rating varies by 2.3 across surfaces (range: 2.5–4.8)
|
||
`google 4.8 vs apple 2.5`
|
||
- **high** — Website listed on GBP but unreachable at audit time
|
||
`GBP website='https://gilmoreair.com/service-areas/antelope/?utm_source=GBP-listing&utm_medium=organic&utm_campaign=antelope-ca' — surface blocked; documented limitation per process §4`
|
||
- **medium** — No business description found on any surface
|
||
`no description on any checked surface — weakens local-pack snippet`
|
||
|
||
### Needs verification (excluded from report until confirmed)
|
||
|
||
- none
|
||
|
||
### Rejected (format false-positives / low-signal / tooling gaps)
|
||
|
||
- ~~Review count varies by 3588 across surfaces~~ — low-signal: platforms count reviews differently; not an integrity issue
|
||
- ~~Cannot determine review recency — no dates available in samples~~ — tooling gap: scraper captures no review dates (documented limitation)
|
||
- ~~Category varies across surfaces: consumer sector, hvac contractor~~ — low-signal: per-platform taxonomy (Apple 'consumer sector' is its default)
|
||
|
||
### Enhancement tier (noted, excluded from client report)
|
||
|
||
- Only 0% of sample reviews mention specific services or practitioners
|
||
- Price level not set on GBP or Apple Maps
|
||
|
||
## Pre-delivery consistency gate (v1.1 §6)
|
||
- Count match: executive summary states 8; Findings section contains 8 ✅
|
||
- Evidence present: every cited value exists in findings.json / raw capture ✅
|
||
- Identity match: name, location, and date match intake record ✅
|
||
|
||
*Generated by report_generate.py (locked normalization rules). Gate result appended by report_gate.py before delivery.*
|
||
|
||
## GATE RESULT
|
||
|
||
**PASS** — report_gate.py, 2026-08-15T16:52:53
|
||
|
||
- Count: 8 stated / 8 material after review — match
|
||
- Identity: report title + date match raw capture ('Gilmore Heating, Air and Plumbing', 15 August 2026) — match
|
||
- Surface disclosure: all captured/failed surfaces rendered correctly — match
|
||
- Material support: every material finding re-derived from raw capture — hold
|
||
- Needs-verification open: 0
|