Rich Results: enrich nested ProfessionalService provider on Service schema
What was done
BaseLayout.astro auto-emits a Service JSON-LD block on every service page and every city page, with a nested provider: ProfessionalService describing Bailey Engineering. The nested provider previously carried only name and url, so Google’s Rich Results Test flagged four missing optional fields on every page that used it (e.g., /service-areas/ada-county/boise/):
telephonepriceRangeaddressimage
Fix: factored a single providerNode constant in BaseLayout.astro carrying the full ProfessionalService payload and reused it for both the isServicePage and isCityPage branches. Values mirror the standalone homepage ProfessionalService schema (src/pages/index.astro) so the entity is internally consistent across the site.
Fields now emitted on the nested provider:
name,url(already present)telephone:+12089380013(E.164 format, matches homepage)priceRange:$$-$$$image+logo:https://baileyengineers.com/logos/be_logo_black_blue_font.svgaddress: fullPostalAddress(street, locality Eagle, region ID, postal 83616, country US)
A short comment near the constant flags it as the canonical mirror of the homepage payload, so future drift gets noticed during review.
Why
Google’s Rich Results Test was reporting “4 non-critical issues” on every page that exposed the nested provider. They’re “optional,” not “required,” so the schema technically validated — but for a local-business entity these are exactly the fields that drive Knowledge Panel population and AI overview answers. Skipping them on 30+ city/service pages was leaving local-SEO signal on the table, and Phase 1 of the SEO plan (rich-results-validate) explicitly targets clean Rich Results runs on a homepage + service + city sample.
The change has zero impact on rendered HTML/CSS — only the <script type="application/ld+json"> payload grows by ~250 bytes per page.
Files affected
- Modified:
src/layouts/BaseLayout.astro— addedproviderNodeconstant; replaced the two stub provider literals withprovider: providerNode. - Created:
src/content/devlog/2026-05-07-rich-results-provider-schema-fix.md(this entry).
Verification
npm run buildclean (no Astro / Zod errors).- Manual JSON-LD inspection on
/service-areas/ada-county/boise/and a sample/services/<family>/page to confirm the new fields render in theproviderobject. - Re-run Google Rich Results Test on
/service-areas/ada-county/boise/after deploy — expected: 0 missing-field warnings on the ProfessionalService provider. (Cloudflare caching is off, so RRT will see the new schema as soon as the deploy completes.)