# Finding 051: Structured-data conflict comparison shows visible text dominated ChatGPT while Claude exposed meta text

## Date

2026-07-01

## Status

Published

## Summary

Findings 041-050 completed the p20 and p21 structured-data conflict prompt
sets across ChatGPT, Claude, Gemini, Perplexity, and Copilot/Bing. The p20
fixture visibly told the assistant that metadata and JSON-LD disagreed with
the page body. The p21 fixture removed that visible conflict cue while still
serving separate visible, meta-description, and JSON-LD codes in the raw page.

Across the two completed sets, ChatGPT and Claude were the only clients with
confirmed target-page hits in both variants. ChatGPT reported only the visible
page code in both p20 and p21. Claude reported the visible page code and the
meta-description code in both p20 and p21, while leaving JSON-LD unobserved in
its extracted content. Gemini, Perplexity, and Copilot/Bing did not produce
confirmed target-page hits in these p20/p21 runs, so their structured-data
treatment cannot be inferred from this pair.

## What does this mean?

For site owners and researchers, these paired tests show that a successful assistant page fetch does not mean every hidden page signal influenced the answer. In this lab, ChatGPT stayed on visible body text even when metadata and JSON-LD were present, while Claude also surfaced the meta description but still did not expose JSON-LD. Other clients failed or declined retrieval in these runs, so there was no evidence that they inspected either visible or hidden page content.

## Method

This comparison reviews the published p20 and p21 finding set:

- p20 visible structured-data conflict: Findings 041-045.
- p21 hidden structured-data conflict: Findings 046-050.
- Response artifacts:
  `research/manual-client-runs/browser-tasks/responses/*-p20.response.json`
  and
  `research/manual-client-runs/browser-tasks/responses/*-p21.response.json`.
- Public evidence bundles:
  `public/api/v1/evidence/finding-041.json` through
  `public/api/v1/evidence/finding-050.json`.

Each underlying run used a fresh AI-client chat or native private/temporary
thread, logged the copied model answer with `npm run manual-client:log`, and
reviewed direct-origin events by `promptCode`, `sourcePromptId`,
`confirmedHitFromPrompt`, `rawEventIds`, and bounded timestamp windows.

## Comparison Matrix

| Client | p20 outcome | p21 outcome | Comparison |
|---|---|---|---|
| ChatGPT | Confirmed target hit. Reported `VISIBLE-SILVER-30`; metadata and JSON-LD not exposed. | Confirmed target hit. Reported `VISIBLE-PLUM-47`; metadata and JSON-LD not exposed. | Removing the visible conflict cue did not make hidden metadata or JSON-LD appear in the answer. |
| Claude | Confirmed target hit plus `/robots.txt`. Reported `VISIBLE-SILVER-30` and `META-TEAL-55`; JSON-LD unobserved. | Confirmed target hit plus `/robots.txt`. Reported `VISIBLE-PLUM-47` and `META-AMBER-16`; JSON-LD unobserved. | Claude exposed meta-description text in both variants, including when the visible page no longer announced a conflict. |
| Gemini | Bounded target no-hit. No exact attempt, fixture-path, or `/robots.txt` event during the prompt window. | Bounded target no-hit. No exact attempt, fixture-path, or `/robots.txt` event during the prompt window. | The pair shows retrieval failure or refusal, not structured-data handling. |
| Perplexity | Target-page no-hit with ancillary PerplexityBot requests for `/robots.txt` and `/`. | Clean bounded no-hit with no exact target, `/robots.txt`, root, or Perplexity-origin event. | Ancillary origin activity appeared in p20 but not p21; neither run fetched the target page. |
| Copilot/Bing | Clean bounded no-hit. The client reported invalid tool invocation during retrieval attempts. | Clean bounded no-hit. The client said it could not open or fetch the target URL. | Both runs are no-retrieval outcomes, so hidden-field behavior remains untested for this surface. |

## Interpretation

The useful split is between target-page retrieval and hidden-signal exposure.
ChatGPT and Claude both opened the supplied page in both variants, but their
answer surfaces differed. ChatGPT stayed with visible body text and did not
expose meta-description or JSON-LD codes. Claude exposed the meta-description
code as a separate extracted field in both variants, including p21 where the
visible copy did not announce a conflict. Neither confirmed-hit client exposed
the JSON-LD code.

The p21 variant strengthens the interpretation of Claude's meta-description
behavior because the visible page no longer tells the assistant that metadata
contains a different code. It does not prove raw HTML or DOM access, because
Claude described a markdown-like extraction view and left JSON-LD unobserved.
For ChatGPT, the p21 result strengthens the visible-content interpretation:
the hidden meta and JSON-LD codes were present in preflighted raw HTML, but the
answer still reported only the visible code.

Gemini, Perplexity, and Copilot/Bing should not be placed in a hidden-signal
matrix from these attempts. Their p20/p21 answers and origin reviews did not
confirm target-page retrieval. The Perplexity p20 ancillary `/robots.txt` and
root activity is evidence of prompt-window origin contact, not evidence that
the structured-data target page was fetched or inspected.

## Limitations

- This comparison covers one p20 and one p21 attempt per client, with the
  logged account, tier, mode, and time windows from Findings 041-050.
- The prompts supplied exact target URLs, so these are direct-opening tests,
  not independent discovery tests.
- The comparison separates answer content from direct-origin hits. A model's
  `fetched:true` or `fetched:false` field is not treated as proof without the
  matching origin review.
- The p21 prompt still explicitly asks for visible, meta-description, and
  JSON-LD fields. It removes the visible conflict cue, but it is still a
  directed hidden-field inspection prompt.
- The absence of JSON-LD in answers does not prove JSON-LD was inaccessible to
  the underlying service in general; it only shows that the copied answers did
  not expose it in these runs.

## Publication Thesis Verification

- Thesis: In the completed p20/p21 structured-data conflict sets, ChatGPT
  exposed only visible page text on confirmed hits, Claude exposed visible text
  plus meta-description text, and neither exposed JSON-LD; Gemini,
  Perplexity, and Copilot/Bing did not produce target-page hits for this pair.
- Source: Findings 041-050, copied answer artifacts, browser-task response
  files, and public evidence bundles for the same finding range.
- Method: Compare each client's p20 and p21 response fields, origin-review
  status, raw event ids, and timestamp windows while separating exact
  target-page hits from ancillary origin activity.
- Bias: The comparison uses one run per client per variant, with single
  accounts and observed product modes. Results can change by tier, model,
  region, time, or client retrieval state.
- Consensus: Consistent with the individual p20 and p21 thesis-verification
  sections: ChatGPT p20/p21 both visible-only, Claude p20/p21 both visible plus
  meta-description, Gemini p20/p21 no-hit, Copilot p20/p21 no-hit, and
  Perplexity no target-page hit in either run.
- Invalidation: A corrected response artifact, mismatched raw event review,
  fixture serving error, or same-condition rerun that exposes JSON-LD or
  changes target-hit status would weaken the comparison.
- Verdict: Supported for the published p20/p21 corpus. The comparison should
  remain scoped to these controlled-browser attempts.
- Additional tests suggested: add a still more neutral hidden-field prompt that
  asks for a short page-quality answer without naming metadata or JSON-LD, and
  rerun only clients that can produce confirmed target-page hits.

## Next steps

- Prepare a neutral hidden-signal fixture or prompt variant for ChatGPT and
  Claude that does not name meta-description or JSON-LD in the prompt.
- Keep Perplexity and Copilot/Bing reruns as retrieval-mode checks rather than
  hidden-field comparisons until they produce target-page hits.
