Investigation
When your structured data and your page copy describe different companies
A site can carry a clean organization block, a canonical URL and a logo reference while its pages describe a different company under a different name. Machines read one surface, people read the other, and the disagreement stays invisible until somebody checks both.

On 2026-07-28 I opened the two sites this company publishes, read their organization markup against their visible copy, and wrote down every place the two answers differ. Both sites are ours. Everything below is first-party evidence, including the parts that do not flatter us.
The organization block is not a summary of the page. It is a second description of the same company, written in a different language, addressed to a reader who never sees the page. When the two describe different companies, adding a third block does not settle the argument. It records it.
| Identity fact | Structured data says | Page copy says | Third surface says | Agreement | Owner |
|---|---|---|---|---|---|
| Organization name | AgencyProof, with a parent named Intelliblitz | "AgencyProof by Intelliblitz" in the header | The parent site never names AgencyProof at all | Partial | App repo |
| Legal or trading name | legalName: "Intelliblitz LLC" | "© 2026 Intelliblitz LLC" in the footer | The parent site states no legal name anywhere | Agrees where stated | App repo |
| Logo | An ImageObject at /bimi/logo.svg, declared 512 by 512 | A wordmark in the header | The same file serves the mail brand indicator | Agrees | App repo |
| Canonical home URL | https://agencyproof.ai | Navigation links resolve to the same host | The parent is named as https://intelliblitz.com, which redirects | Disagrees | App repo |
| Service description | "Pre-launch website QA and SEO/AEO audits for agencies" | "Pre-launch QA for agencies & AI builders" | The meta description gives a third wording | Four wordings | Unassigned |
| Locations | Absent | Absent | Absent | Agrees by absence | Unassigned |
| Contact point | Absent | support@agencyproof.ai in the footer | Absent | Disagrees | Unassigned |
| Connected profiles | sameAs holds one URL, the parent | A header link to the parent | The parent declares nothing in return | One direction only | Unassigned |
Half those rows have no owner. That is the finding.
{
"@type": "Organization",
"@id": "https://agencyproof.ai/#organization",
"name": "AgencyProof",
"legalName": "Intelliblitz LLC",
"url": "https://agencyproof.ai",
"logo": {
"@type": "ImageObject",
"url": "https://agencyproof.ai/bimi/logo.svg",
"width": 512,
"height": 512
},
"parentOrganization": {
"@type": "Organization",
"name": "Intelliblitz",
"url": "https://intelliblitz.com"
},
"sameAs": ["https://intelliblitz.com"]
}
That is the block as served, with the description and the sibling WebSite block elided. It is valid. Read it beside the pages and eight questions open.
Organization name
schema.org defines name as, simply, the name of the item. Ours says AgencyProof. The header says "AgencyProof by Intelliblitz". Those are compatible readings of one company: a product name and its house.
The third surface is where it stops being tidy. The parent site, www.intelliblitz.com, mentions AgencyProof zero times. A machine reading the parent finds a company that builds business intelligence systems and has no product. A machine reading the child finds a product that belongs to that company. One of those descriptions is incomplete, and it is not the one with the markup.
Legal and trading name
legalName is defined as the official name of the organization, the registered company name. Ours reads Intelliblitz LLC, and the footer of the same site says the same thing. Two surfaces, one answer.
The parent site never states it. Neither the copy nor the markup carries LLC, because the parent carries no organization markup at all.
A trading name that differs from a legal name is normal and is not a defect. The disposition applies to the difference between AgencyProof and Intelliblitz LLC, which is deliberate. It does not extend to the parent's silence, which nobody decided.
The logo file
logo takes an ImageObject or a URL. Ours points at a 414 byte SVG that resolves, whose viewBox matches the declared 512 by 512, and which is the same file used as the brand indicator on outgoing mail. Three surfaces, one asset, no drift.
This row makes a point about the other seven. Consistency here was not achieved by review. It was achieved because one file is referenced by every surface, so there is nothing to reconcile. Wherever an identity fact is retyped rather than referenced, it will eventually differ.
The canonical home URL
Here is the sharpest disagreement in the set, and it is entirely ours.
canonical https://agencyproof.ai
parentOrganization https://intelliblitz.com 308 to https://www.intelliblitz.com/
sameAs[0] https://intelliblitz.com 308 to https://www.intelliblitz.com/
parent canonical https://www.intelliblitz.com/
staging host agencyproof.intelliblitz.com 308 to https://agencyproof.ai/EstablishesThe child site names the parent at a URL that redirects, and the parent declares a different URL for itself. Two surfaces state the parent's address differently.
Does not establishThat any consumer of the markup is confused by it, that following the redirect fails, or that resolving the strings changes any outcome. This is an internal inconsistency, observed.
RFC 6596 is careful about what a canonical link does. It designates the preferred version of a resource, the author's preferred version, and the target must identify content that is duplicative of or a superset of the referring content. It is a statement about which address the author prefers. It is not a statement that every other surface uses that address, and nothing enforces the connection.
Our own markup proves the gap. The parent prefers the www form with a trailing slash. Our block names the apex without one. Both resolve, because a 308 sits in between. The strings still differ, and a system comparing strings is not obliged to follow a redirect before deciding they are the same thing.
RFC 9309 sharpens it further. Crawler rules live per authority, at /robots.txt, and a redirected robots file must be parsed and its rules followed in the context of the initial authority. Our staging host redirects its robots file to production, so production's rules govern a hostname whose name appears nowhere in them. That is one more surface stating the identity, and one more place it can be stated differently.
The service description
Four wordings of what this product does, across four surfaces, none of them wrong:
- The organization block: pre-launch website QA and SEO audits for agencies.
- The visible hero: "Pre-launch QA for agencies & AI builders".
- The meta description: an Intelliblitz app that helps agencies inspect client websites before launch.
- A
FAQPageblock on the same page, restating the service again in answer form.
A service description is not only an identity statement. It is also a claim about capability, which is a different discipline with a different standard of proof, covered in who signs off the claims in AI-drafted copy. Both jobs land on the same sentence, and it is usually written by whoever needed a sentence that day.
Locations
address takes a PostalAddress or text. Neither site carries one, in markup or in copy. The surfaces agree, and they agree on nothing.
Absence is a legitimate answer for a distributed company with no public office. It is only a problem when it is accidental, and the way to tell the difference is to ask whether anyone decided. Nobody decided this.
The contact point
contactPoint is absent from the markup. The footer carries a support address a human can read. So the fact exists on the surface people use and not on the surface machines use, which is the exact inverse of the usual failure and is just as much a gap.
Connected profiles
schema.org defines sameAs as the URL of a reference web page that unambiguously indicates the item's identity. Ours holds one entry, and that entry is the parent, which is already stated as parentOrganization. The relationship is asserted once, in one direction, by the smaller party. Nothing on the parent points back.
That is the shape most of this sheet takes. The child site does the identity work and the parent site does none of it, which has nothing to do with markup quality and everything to do with who touches each surface.
| Surface | Read by | Updated by | Last changed when |
|---|---|---|---|
| Organization block | Machines only | A deploy of the app repo | In version control, recoverable |
| Visible page copy | People, and machines reading text | A deploy of the app repo | In version control, recoverable |
| Meta description and og tags | Machines and link previews | A deploy of the app repo | In version control, recoverable |
| Canonical link | Machines only | A deploy of the app repo | In version control, recoverable |
| robots.txt | Crawlers only | A deploy, per hostname | In version control, recoverable |
| The parent site | People and machines | Whoever opens the site builder | Not recorded |
The last row is why this happens. One surface has a history and five reviewers; another has neither. Both speak for the same organization.
Two details from the parent show how invisible this drift is. Every Open Graph property on that page appears twice, and its service wording differs between the meta description and the visible copy: one lists workflow automation, the other does not. Neither is a defect a visitor would notice. Both are the canonical mismatch at a smaller scale.
Here is what AgencyProof does with entity signals, stated exactly: it checks entity and crawler signals that help assistants interpret the site, and it checks whether an optional llms.txt guidance file is present. Entity and crawler signals can reduce ambiguity. They do not guarantee rankings, citations or recommendations by an AI system. The engine can tell you an organization block is present or missing. It cannot tell you the block disagrees with the paragraph next to it, because judging whether two descriptions of a company are the same description is a reading task, not a parsing task. That is the work in this article, and it is done by a person.
Which leaves one question worth taking to a client, and it is not a request to review their structured data. Nobody outside this trade can answer that. Ask instead what the whole sheet is testing: if a stranger looks you up, what is the one sentence you want them to come away with, and who on your side owns it. The first half tells you what every surface should say. The second tells you who to send this sheet to when they do not.
Provenance
- Written by
- Balaji PonnambalamFounder, AgencyProof
- Technical review
- Written and self-reviewed against the codebaseAgencyProof is a one-person engineering team; there is no second reviewer to claim.
- Published
- Evidence basis
- Examples come from AgencyProof's own sites, scanned by us.
Every product claim in an article is checked against the AgencyProof source tree before publication, and traced to the code path that implements it. Where the article describes a method rather than a shipped behaviour, it says which it is.
Related reading
Launch ManualAI copy states everything with equal confidence. Someone still signs it.
AI copy states experience, security and results with equal confidence. Sort the claims, find the evidence, name the owner.
Launch ManualThe redirect map a redesign needs before the new site goes live
A replacement site can strand campaign links, bookmarks and old service URLs. Build the redirect inventory first.
Audit LabWe audited our own website. Here is what the scanner got wrong
Four failure classes our own engine review found, what the evidence actually supported, and the adjudication rule each mistake produced.