Dev Log

Schema validation fixes — visible Q&As, Article images, WebSite name

· Claude Opus 4.7 · Bot
seoschemavalidationrich-results

What was done

Ryan ran the eight-page schema validation suite from a separate Claude session. Zero failures, eight warnings — all addressed in this commit.

  1. Homepage WebSite schema name. src/pages/index.astro — added "name": "Bailey Engineering" to the WebSite JSON-LD literal. One-line fix.
  2. Article schema image on every Dev.IQ article. Google’s Article rich-result eligibility prefers a image property at minimum 1200px wide. Wired the existing site OG landscape (1200×630 jpg, already generated by Astro’s image pipeline for Open Graph) into Article schema across three surfaces:
    • src/components/FaqArticle.astro — covers all collection-driven FAQ articles (currently cost, plus all 9 stub-state collection articles when their .md files exist)
    • src/pages/dev-iq/faqs/feasibility-studies.astro — the one hardcoded FAQ article that bypasses FaqArticle
    • src/pages/dev-iq/seo-plan.astro — the SEO Plan page Article schema
  3. Visible Q&As on /dev-iq/faqs/ hub. The 6 entity-defining Q&As (“Who is Bailey Engineering?” / “Where does Bailey work?” / etc.) were emitted as FAQPage schema in the prior commit but the answers weren’t visible on the page. Google’s policy since 2023 requires FAQPage content to be visible to users; rich-result eligibility is fragile without it. Added an “About Bailey Engineering — quick answers” section between the hero and filter chips, rendered as a <dl> two-column grid that reads the same data the schema does (single source of truth — the schema and visible content can’t drift).
  4. Visible Q&As on /dev-iq/seo-plan/. Replaced the prose methodology paragraphs with a Q&A <dl> rendering the same 3 questions the FAQPage schema declares (“What is AI SEO?”, “Why does Bailey Engineering publish its SEO progress publicly?”, “How does Bailey measure AI visibility?”). Same single-source-of-truth pattern.

Build verified: 184 pages built clean. Spot-check confirms "@type":"WebSite","name":"Bailey Engineering" on homepage, "image":"https://baileyengineers.com/_astro/og-landscape...jpg" on every Article schema, and visible body text mirroring schema text on both the FAQ hub (entity Q&As appear twice in HTML — once in JSON-LD, once in <dl>) and seo-plan page (methodology Q&As same).

Why

Schema that asserts content not visible on the page is a fragile rich-result candidate — Google may accept it but will sometimes flag it as a “Content mismatch” warning in Search Console, and they’ve gradually tightened enforcement since 2023. The fix isn’t to remove the schema (the AI-visibility upside is exactly why we ship it); it’s to render the content so the schema and the page agree. The <dl> rendering also adds reader value — humans landing from a search result get the entity-defining context immediately instead of having to click through to a deeper article.

The Article image gap was lower-stakes (Google prefers, doesn’t require) but the fix was free since the OG landscape image is already part of the build pipeline.

Files affected

Created:

  • src/content/devlog/2026-04-28-schema-validation-fixes.md — this entry

Modified:

  • src/pages/index.astro — added name to WebSite schema
  • src/components/FaqArticle.astro — added image to Article schema (covers all collection articles)
  • src/pages/dev-iq/faqs/feasibility-studies.astro — added image to Article schema
  • src/pages/dev-iq/seo-plan.astro — added image to Article schema, replaced methodology prose with visible Q&A <dl> mirroring schema
  • src/pages/dev-iq/faqs/index.astro — added “About Bailey Engineering” visible Q&A section + supporting CSS

What’s next

Re-run the validator after deploy to confirm warnings cleared:

python tools/validate_schema.py --bailey

Expected result: zero failures, zero warnings, all pages emit the same schema as before with visible content now matching.

Feedback