By Scott Finney • May 12, 2026
A regional consulting firm had a 30-page static website with structured data on most pages. The homepage had Organization and FAQPage schema. Event pages had Event markup. Blog posts had Article schema. On paper, structured data was handled.
It wasn't.
A closer look revealed inconsistencies that undermined the entire entity graph. Seven pages — services, workshops, a recruitment page, the contact page — had nothing beyond a BreadcrumbList. Six location pages serving metro areas lacked WebPage and SpeakableSpecification markup, making them invisible to voice search and AI citation. The @id references that should have connected entities across the site were fragmented: the founder was defined with one identifier on one page and referenced with a different identifier on another. One archived event page used a bare domain while the rest used www — technically two different entities in JSON-LD.
The result: a site that looked schema-aware but wasn't actually maximizing its visibility in rich results, AI answer engines, or voice search.
The first step wasn't touching the site. It was reading ten existing internal reference documents to understand what the team already knew about schema and where the gaps were. The SEO reference had a schema section with four basic JSON-LD templates — useful but shallow. The geo-optimization reference mentioned schema for entity clarity but deferred to the SEO doc for details. None of the other eight documents addressed structured data at all.
Simultaneously, third-party tools were mapped. ClassySchema.org was evaluated for its full capabilities: a HowTo generator, FAQPage generator, Video generator, SpecialAnnouncement generator, and a Structured Data Visualiser that accepts raw HTML or fetches a live URL. These were cataloged alongside Google's Rich Results Test and the Schema.org validator to create a generate-validate-deploy workflow.
The output: a comprehensive reference document covering 20+ page-type-to-schema-type mappings, copy-paste JSON-LD templates for every relevant type, a completeness audit checklist, and the full tool integration workflow. This became the playbook for everything that followed.
With the reference framework in place, the first round of changes targeted the most visible gaps. Seven pages received new or upgraded schema:
WebPage upgraded to AboutPage with mainEntity linking to the OrganizationContactPage schema with SpeakableSpecificationWebPage with SpeakableWebPage plus JobPosting schema with proper employment type, location, and hiring organization referencesItemList with all articles, Speakable added to existing CollectionPageItemList with all location pagesRather than assuming the first pass was clean, a full @id connectivity audit was run across all 32 HTML files. Every entity definition and every entity reference was cataloged and cross-checked.
Five issues surfaced:
@id values for the same person.www. In JSON-LD, those are two different entities.LocalBusiness block had no @id, making it invisible to the entity graph.#founder Person was only defined in the contact page, not on the homepage where the Organization lived.Each issue was fixed: a canonical #founder Person was defined on the homepage with sameAs linking to external profiles, the LocalBusiness got an @id and connected its founder property via reference, and all domain inconsistencies were standardized.
A second complete audit checked every HTML file for three things: does it have a page type (WebPage, AboutPage, etc.), does it have SpeakableSpecification, and does it have BreadcrumbList. This surfaced a final layer of gaps:
LocalBusiness and BreadcrumbList but no WebPage or SpeakableArticle but no SpeakableFAQPage but no WebPage or SpeakableBreadcrumbList (added WebPage with SubscribeAction)BreadcrumbListWebPage and SpeakableAll 22 files were updated in this final pass.
Total JSON-LD blocks across site: ~55 → 90
Pages with WebPage/AboutPage/ContactPage type: 9 → 30
Pages with SpeakableSpecification: 8 → 28
Pages with only BreadcrumbList (no primary schema): 7 → 0
Unique schema types deployed: ~10 → 18
@id connectivity issues: 5 → 0
Domain inconsistencies in URIs: 8 occurrences → 0
Reusable schema reference docs created: 1 (with 20+ templates)
Files modified: 22
Estimated manual effort (senior SEO consultant): ~40 hours
Actual session time: Under 1 hour
Every page on the site now tells search engines and AI models exactly what it contains, who published it, and how it connects to the rest of the site. Before, a voice assistant or AI answer engine reading the FAQ page would see questions and answers but wouldn't know who published them or what organization they belonged to. Now that metadata is explicit on every page.
The location pages — critical for local search visibility — went from bare LocalBusiness entries to fully connected entities with WebPage, Speakable content markers, and an ItemList on the index page that tells search engines "these six pages are a set." The same pattern was applied to the blog index and its articles.
The reusable reference document means the next time a page is added to the site — a new case study, a new event, a new location — the schema decision is already made. The template exists, the validation workflow is documented, and the entity graph conventions are established. Schema went from something that had to be figured out each time to something that follows a pattern.
I decided what mattered: that schema coverage should be maximized, that ClassySchema.org should be evaluated as a tool ecosystem, and that the output should include a reusable reference for future projects. I also directed the re-audit after the first implementation pass — recognizing that one round of changes wasn't enough to claim completeness.
The AI handled execution at a pace that made multiple audit-implement-reaudit cycles practical within a single session:
@type declarations and built the gap table.@id definition and reference across 32 files, identified five connectivity issues, and fixed each one.When implementation takes minutes instead of hours, you can afford to audit, implement, re-audit, and implement again in the same sitting. The planning conversation — deciding what to build and why — took longer than any single round of implementation. That's the ratio you want: human judgment as the bottleneck, not human typing.
Having schema on your pages isn't the same as having schema that works. If your entity graph is fragmented — different IDs for the same person, domain mismatches between pages, key pages missing page types — search engines see disconnected fragments instead of a coherent site.
The gap between "we have structured data" and "our structured data is connected and complete" is where visibility gets left on the table.
Free AI assessment. Find out where your structured data has gaps you can't see.
Get Free Assessment →