Skip to content

Case study

Making a 270-Page Site Citable by AI

A site that was 84% without structured data got validated schema on its priority pages, corrected hreflang across both languages, and fixes at the template level.

Project
AEO and GEO technical lead
Industry
Cybersecurity / AEO and GEO
Role
Technical lead, AEO / GEO
  • Python
  • JSON-LD
  • hreflang / x-default
  • Search Console
  • AI visibility data

The context

A B2B cybersecurity hardware vendor with a bilingual English/German site of about 270 pages on an enterprise CMS. The work ran in three technical phases: audit, implementation and monitoring.

The problem

The vendor wanted to be cited by AI assistants, and to know exactly why competitors were being cited instead.

  • About 84% of pages had no structured data
  • Gaps in hreflang coverage across English and German
  • Template-level defects repeated across whole content types

My responsibility

  • Built a reproducible crawler and audit toolkit in Python covering structured data, hreflang and x-default, canonicals, the internal-link graph, orphans, redirects, titles and meta, headings, alt text, image weight and response time
  • Ran the technical audit and an AI-citability review, with a competitor citation-gap teardown
  • Wrote implementation-ready specs: JSON-LD blueprints per schema type, 45 validated blocks for 27 priority pages, a hand-verified EN/DE hreflang plan, an internal-linking plan and a content gap analysis
  • Rolled out schema, hreflang and x-default fixes and template corrections in the CMS, with structured-data partials and post-publish verification tooling, then monitored technical health after launch

Architecture

  1. Sitemap~270 pages
  2. CrawlerPython toolkit
  3. AuditSchema · hreflang
  4. QA passEvery number re-derived
  5. Specs45 JSON-LD blocks
The audit pipeline. No figure leaves the QA pass until it has been worked out a second time.

Key decisions

  • A reproducible toolkit, not screenshots

    Every finding comes from a crawler and audit toolkit in Python, so it can be re-run rather than screenshotted.

  • Template-level defects first

    Template-level defects were prioritised, because one fix corrects an entire content type.

  • Re-derive every number

    Before anything reached the client, every headline number was independently re-derived in a QA pass.

Technical challenges

  1. 1.Why competitors get cited

    An AI-citability review found what the content AI assistants already cite has in common, and a competitor citation-gap teardown isolated what cited competitors do differently.

  2. 2.A site-wide schema gap

    About 84% of pages had no structured data. JSON-LD blueprints per schema type closed it on the 27 priority pages first.

  3. 3.Errors in our own figures

    The QA pass caught three small inaccuracies in the audit's own figures before delivery, which is the reason it exists.

Results

  • Validated schema on the priority pages of a site that was 84% without structured data
  • 45 validated JSON-LD blocks for 27 priority pages
  • Hreflang corrected across both languages, and fixes made at the template level
  • 3 errors in the audit's own figures caught in QA before delivery

Need a HubSpot site or migration done properly?

From CMS themes and portal merges to AEO audits, I fix problems where they start and measure what changes.