Structured data for AI search is not a list of types to add to a page. It is one graph describing one company, and almost all of its value comes from the connections between nodes rather than from their number. 94% of the sites in our dataset had no JSON-LD at all, so most of the opportunity is still in the basics.

three rules that cover most of it

one organisation, referenced everywhere

Describe your company once, give that node a stable identifier, and have every other node point at it rather than re-describing the company. The most common failure we find is not missing markup but disconnected markup: an Organization on the homepage and a separate publisher block on the blog, unlinked, describing the same company in slightly different words. To a parser that is two weak entities instead of one strong one.

external references that exist

sameAs is where you point at the profiles that confirm you are real. It only works if the URLs resolve. Empty is fine while you are building them; pointing at pages that do not exist is a broken claim about your own identity.

agreement with the visible page

Whatever the markup says, the page must say too. Ratings without reviews on the page, FAQ answers that differ from the visible text, prices that contradict the pricing section — each of these is a reason for structured data to be ignored wholesale. We have found contradictions like these on sites whose SEO reports were clean, because validators check syntax rather than truth.

what to build, in order

a minimal graph that does real work
nodewhat it carrieswhy it matters
OrganizationName, alternate names, URL, email, founding year, description, sameAs, founderThe entity everything else attaches to
WebSiteURL, name, publisher pointing at the organisationTies the pages into one site-level entity
Article / WebPageHeadline, description, dates, image, author, mainEntityOfPageMakes a document quotable and attributable
FAQPageQuestions and answers matching the visible text exactlyThe format models lift most readily
BreadcrumbListPosition of the page in the siteCheap structural context

the type trap

Choosing a type that implies something untrue costs you. A service business with no physical location marked up as a local business implies an address that does not exist; the honest choice is a plain Organization. We changed our own markup for exactly this reason. Pick the type that describes what you are, not the one with the most properties.

how to check it properly

  1. Validate the syntax — necessary, not sufficient.
  2. Print every node and confirm each one references the organisation identifier rather than repeating it.
  3. Diff the markup text against the visible text, especially FAQ answers.
  4. Open every sameAs URL and confirm it returns 200.
  5. Ask an engine to describe your company and check every fact it states against your own markup.

The wider technical layer is on technical GEO, and the terms used here are defined in the glossary.