B&J — JSON-LD schema deployment VERIFIED (v2) — supersedes the "biggest technical gap" claim in v1

This entry supersedes the JSON-LD row of B&J technical SEO posture — old vs new, with explicit gaps to close pre-launch, which (correctly at v1 ingest time) said "None visible — biggest technical gap, to be added pre-launch." That gap is now closed as of the 2026-05-23 audit-closure deploy (commit 3514d02). The rest of the v1 SEO posture entry (title tags, meta descriptions, canonicals, OG, headings, URL structure) remains accurate — only the schema row is overtaken.

Live HTML cross-section (fetched cache-busted from https://bjweb.candidcreative.ca on 2026-05-24)

Page Block count Types @id / name snippet
/ 6 Organization https://bjweb.candidcreative.ca/#organization
GasStation https://bjweb.candidcreative.ca/#loc-waterloo-hq
GasStation https://bjweb.candidcreative.ca/#loc-stratford-cardlock
GasStation https://bjweb.candidcreative.ca/#loc-guelph-cardlock
GasStation https://bjweb.candidcreative.ca/#loc-london-depot
LocalBusiness https://bjweb.candidcreative.ca/#loc-st-thomas-depot
/agriculture 3 Organization · FAQPage · BreadcrumbList (org @id as above)
/agriculture/coloured-diesel 3 Organization · FAQPage · BreadcrumbList (same shape)
/resources/coloured-diesel-and-ontario-law 3 Organization · Article · BreadcrumbList Article headline = "Coloured diesel and Ontario law for farmers — a pl…"
/locations/london 3 Organization · LocalBusiness · BreadcrumbList LocalBusiness @id = https://bjweb.candidcreative.ca/locations/london
/cardlock 4 Organization · Service · FAQPage · BreadcrumbList Service @id = https://bjweb.candidcreative.ca/cardlock#service
/lubricants 4 Organization · Service · FAQPage · BreadcrumbList Service @id = https://bjweb.candidcreative.ca/lubricants#service

Every page in the cross-section carries at least the Organization root entity, a page-specific type, and a BreadcrumbList. The Organization @id is consistent across pages (single canonical entity, referenced from per-page schemas). No page is missing JSON-LD. All blocks parse as valid JSON.

Helper infrastructure (the craft layer)

src/lib/schema.ts exports 9 functions that produce every JSON-LD block on the site:

  • organizationSchema
  • localBusinessSchema
  • allLocalBusinessesSchema
  • breadcrumbSchema
  • buildBreadcrumbFromPath
  • reactNodeToText
  • faqPageSchema
  • articleSchema
  • serviceSchema

The Organization @id is a single canonical literal emitted once in the root layout; every per-page schema references it via { "@id": ORG_ID }. There are no duplicated literals in page files.

Updated AI-citation-readiness language

v1's SEO posture entry described schema as the "biggest technical gap" but separately described AI-citation readiness as "Outstanding — every regulatory claim sourced to Fuel Tax Act sections, R.R.O. 1990 Reg." Those two assessments are now aligned: AI-citation-readiness is complete on both the content layer (sourced/dated claims) and the structured-data layer (Organization + LocalBusiness + Service + FAQ + Article + Breadcrumb graph).

The case study can now state JSON-LD coverage as a Verified KPI, not a planned one.