I ran a live test on a client site — a newly spun-up subdomain — and asked Claude, ChatGPT, and Gemini to extract information from the JSON-LD schema I'd just deployed. The results weren't just different. They exposed the exact architectural divide between how these three systems actually work.
Here's what happened, why it happened, and what it means for anyone building schema with the assumption that "AI will read it."
The Test Setup
The site was a newly deployed subdomain for a medical clinic. I had just implemented a full `@graph` with `MedicalClinic`, `Organization`, and `Person` nodes — complete with `sameAs` links, phone number, parent organization, and service types. The schema was valid. The implementation was clean.
Then I asked each model to tell me what it could see.
What Each Model Did
Claude: The Hard Wall
Claude refused to answer. It correctly flagged that the subdomain had never surfaced in its external web-search indices. Because the domain was new, it had no historical index footprint — and Claude's retrieval mechanism only permits URLs that actively appear in live search result snippets.
This isn't a bug. It's a safety behavior. Claude won't hallucinate content about a URL it can't verify through its index. Frustrating when you're testing a new deployment. Correct behavior in every other context.
The lesson: Claude's retrieval is index-gated. If your site isn't indexed, Claude won't touch it. If it is indexed, Claude reads what the index captured — which may or may not include your schema, depending on when it was crawled and what the index stored.
ChatGPT: The Surface-Text Fallback
ChatGPT pulled the live page successfully. It read the visible text. It described the clinic, the services, the general structure. Then I asked it specifically about the phone number in the schema.
It gave me an old enterprise toll-free number — `800-931-8113` — that appeared nowhere on the current page. It admitted it couldn't find the `sameAs` array. It had no idea the JSON-LD block existed.
This is the behavior that matters most for practitioners to understand. OpenAI's web browsing scraper fetches the rendered DOM and strips `
