Skip to content
AgencyProofby Intelliblitz

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.

Balaji Ponnambalam8 min read
In two facing cases, a crab holds a slotted plate to a lamp while a ferret traces a model shopfront's fascia. One slot and one board are picked out in red, joined by a thread both are watching.

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 factStructured data saysPage copy saysThird surface saysAgreementOwner
Organization nameAgencyProof, with a parent named Intelliblitz"AgencyProof by Intelliblitz" in the headerThe parent site never names AgencyProof at allPartialApp repo
Legal or trading namelegalName: "Intelliblitz LLC""© 2026 Intelliblitz LLC" in the footerThe parent site states no legal name anywhereAgrees where statedApp repo
LogoAn ImageObject at /bimi/logo.svg, declared 512 by 512A wordmark in the headerThe same file serves the mail brand indicatorAgreesApp repo
Canonical home URLhttps://agencyproof.aiNavigation links resolve to the same hostThe parent is named as https://intelliblitz.com, which redirectsDisagreesApp 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 wordingFour wordingsUnassigned
LocationsAbsentAbsentAbsentAgrees by absenceUnassigned
Contact pointAbsentsupport@agencyproof.ai in the footerAbsentDisagreesUnassigned
Connected profilessameAs holds one URL, the parentA header link to the parentThe parent declares nothing in returnOne direction onlyUnassigned
Scroll for more →

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.

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.

IntentionalThe behaviour is a control working as designed.

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.

Four addresses for two organizationsProbable
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.

ProbableThe evidence points one way, but a second signal would settle it.

The service description

Four wordings of what this product does, across four surfaces, none of them wrong:

  1. The organization block: pre-launch website QA and SEO audits for agencies.
  2. The visible hero: "Pre-launch QA for agencies & AI builders".
  3. The meta description: an Intelliblitz app that helps agencies inspect client websites before launch.
  4. A FAQPage block 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.

SurfaceRead byUpdated byLast changed when
Organization blockMachines onlyA deploy of the app repoIn version control, recoverable
Visible page copyPeople, and machines reading textA deploy of the app repoIn version control, recoverable
Meta description and og tagsMachines and link previewsA deploy of the app repoIn version control, recoverable
Canonical linkMachines onlyA deploy of the app repoIn version control, recoverable
robots.txtCrawlers onlyA deploy, per hostnameIn version control, recoverable
The parent sitePeople and machinesWhoever opens the site builderNot recorded
Scroll for more →

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.