Verdict at a glance
This baseline ran before Shakespeare (content), Tommy (tech SEO + schema), and Frankie (frontend polish) shipped. None of those leads have posted delivery comments on their sub-issues. Mike said go, so the baseline is captured. Re-run after each upstream lands.
P0 defects (block public launch)
1. REJECT Placeholder copy still on all 15/15 city pages. Owner: Shakespeare (GID-15)
UNVERIFIED placeholder scenario, the local crew will replace this with a cleared [City] customer story before public launch.
Confirmed live on every city URL. This is the literal text Carlos flagged as the unblocker. The block sits in the "Local project snapshot" section just above the FAQ on each city page.
| City | URL | Hits |
|---|---|---|
| Sacramento | sacramento-ca | 1 |
| Concord | concord-ca | 1 |
| Auburn | auburn-ca | 1 |
| Antioch | antioch-ca | 1 |
| Chico | chico-ca | 1 |
| Danville | danville-ca | 1 |
| Davis | davis-ca | 1 |
| Fairfield | fairfield-ca | 1 |
| Grass Valley | grass-valley-ca | 1 |
| Lodi | lodi-ca | 1 |
| Pleasanton | pleasanton-ca | 1 |
| Rocklin | rocklin-ca | 1 |
| Stockton | stockton-ca | 1 |
| Tracy | tracy-ca | 1 |
| Yuba City | yuba-city-ca | 1 |
2. REJECT Zero JSON-LD schema on any page. Owner: Tommy (GID-17)
Crawled all 26 key pages. Counted application/ld+json blocks in the rendered HTML. Zero schemas on every page. No LocalBusiness, no Service, no FAQ, no BreadcrumbList. This is Tommy's deliverable; nothing has landed.
3. REJECT /services/, /services/battery-storage/, and /locations/ are identical pages. Owner: Frankie (GID-20) + Tommy (GID-17)
All three routes render the same "Solar Service Areas Across Northern California" content (city grid). There is no actual battery storage service page. The same title is on all three:
<title>Solar Service Areas, 15 Northern California Cities | North Valley Solar Power</title> on /services/, /services/battery-storage/, AND /locations/.
This will cannibalize SEO rankings (canonical conflict) and break user trust when someone clicks Battery Storage and lands on a city list. Fix: either remove the orphan routes or build the real service pages.
4. REJECT /about/ page has no H1. Owner: Tommy (GID-17)
About page has only H2s. SEO basics fail. Likely a missing <h1> wrapper around "Built In Northern California, For Northern California".
P1 defects (fix before launch)
REVISE Brand-name reconciliation
Carlos's brief calls the business "Northern Valley Solar Power" (15 references in GID-9). The actual site uses "North Valley Solar Power" + NVSP consistently across home, about, contact, every city page, and the logo. The brief is wrong, not the site. Update Carlos's coordination brief so downstream agents stop typing the wrong name into copy and schema.
REVISE Footer is dark-themed
Mike's standing rule is "white default, dark is opt-in". The site is white in the hero, content, and CTA areas (PASS), but the footer is a dark navy block on every page. That's a common pattern and arguably fine for footers, but it's worth flagging because the standing rule is strict. Decision: ask Mike whether dark footers are acceptable under the "white default" rule. If not, Frankie inverts the footer.
What is working (PASS)
- PASS Light theme default in hero, content, CTA areas across every page
- PASS Zero em dashes anywhere in any of the 26 scraped pages
- PASS Zero stock photo sources (no Unsplash / Pexels / Pixabay / Stocksnap / Shutterstock / Getty / iStock URLs)
- PASS Image alt text is descriptive and location-specific (sampled Sacramento, every img tag had a meaningful alt)
- PASS Forms on /contact/ and /get-a-quote/ have proper input types (email, tel, text), required attrs, and city/ZIP placeholders
- PASS Home page hero is clean: H1, value prop, dual CTA (Find Local Crew + phone), trust signals (4.8 stars, NABCEP, Tesla Powerwall 3 Partner, 25-yr warranty)
- PASS Mobile layouts render correctly at 375px on home + sampled city pages (no horizontal overflow visible in screenshots)
- PASS 15-city grid on home and locations index renders clean with consistent image treatment
A11y observations
- Image alt text: PASS on sampled city pages, all 24+ images had descriptive alts
- Color contrast: not formally measured this pass (no axe-core run), but visual sweep showed dark text on white throughout content; orange CTAs on white pass eyeball test
- Forms: input labels present via
<label for=>pattern (visible in scraped HTML) - Keyboard navigation: not tested this pass (requires interactive browser session, not Firecrawl)
- Heading hierarchy: /about/ has H2 without preceding H1, which breaks the AT outline (also a P0 SEO defect)
Screenshot evidence. Desktop 1280×900 (full page)














Screenshot evidence. Mobile 375×812 (full page)
Per-lead next-action summary
| Lead | Sub-issue | Verdict | What to fix before re-QA |
|---|---|---|---|
| Shakespeare | GID-15 | REJECT | Kill UNVERIFIED snapshot text on all 15 city pages. Ship real stories, hide the block, or replace with a credible "coming soon" treatment. |
| Tommy | GID-17 | REJECT | Ship JSON-LD on city + service pages (LocalBusiness, Service, FAQ, BreadcrumbList). Add missing H1 on /about/. Decide canonical strategy for the /services/ vs /locations/ duplicate. |
| Frankie | GID-20 | REVISE | Resolve the 3-way duplicate (/services/, /services/battery-storage/, /locations/). Decide on footer theme (light vs dark per Mike's standing rule). No other frontend defects visible yet. |
| Ghost | GID-18 | REVISE | NAP audit looks OK from text scrape (phone (916) 249-5223 and Sacramento HQ consistent), but full GMB schema work is still pending Tommy's schema deployment. Sync with Tommy on LocalBusiness ownership. |
| Einstein | GID-16 | N/A this pass | Not part of QA scope. Re-run after content + schema land. |
How this baseline was captured
- Tool: Firecrawl v2 (
POST /v2/scrape) for both content and screenshots - Why not Playwright: Mike's standing no-local-Playwright rule. Steel CLI npm package is now a deprecated migration shim. Firecrawl is the firecrawl-first default and supports screenshots.
- 26 pages scraped (home, 15 cities, services + battery storage, products, locations, contact, get-a-quote, pricing, nem-3-0, federal-itc, california-incentives, about, faq, blog)
- 20 screenshots captured (14 desktop full-page, 6 mobile full-page)
- Audits run: placeholder text grep, em-dash grep, stock-photo URL grep, JSON-LD count, title/meta/H1 extract, image alt extract, form field extract





