This week a prospective customer shared their ChatGPT conversation about us. They asked whether agentready.market is trustworthy and what it costs. ChatGPT answered confidently β€” with somebody else’s facts. It attributed a $19/month Pro plan to us, described a Stripe/Clerk/Vercel stack we don’t run, said it couldn’t find our legal entity, and when challenged, claimed our domain “redirects” to agent-ready.dev β€” a different, unaffiliated product. It never retrieved our actual pricing page, our actual operator, or our actual product.

We build agent-readiness audits for a living. Our own homepage serves valid Product JSON-LD, an llms.txt with an explicit disambiguation section, an A2A agent card and an ARD catalog. None of it prevented this. That’s worth dissecting honestly.

The namespace is crowded, and the assistant merged it

“AgentReady” is not a unique name. A quick sweep finds at least five unrelated products sharing it: agent-ready.dev (a website agent-readability checker with its own Free/Pro plans), agentready.cloud (a token-compression API with an “LLMO Auditor”, also on Product Hunt), agentready.org (an open standard for agent readiness), agentready.site, and a Shopify app. An assistant answering “is agentready.market reliable?” retrieves whatever the search index ranks for the name β€” and the index had richer, older material about the twins than about us. The assistant then fused the entities: our domain, their prices, their stack, their (missing) legal pages.

This is an entity-resolution failure at the retrieval layer, and it’s the layer most “AI readiness” work never touches.

Why our structured data didn’t save us

Two reasons, both fixable:

  • The facts weren’t on the pages the question lands on. Our price lived in JSON-LD on the homepage β€” but a pricing question retrieves pricing pages, and our /pricing carried no machine-readable price at all. Our legal entity lived on /about β€” one page, nowhere else. The twin’s pricing page, meanwhile, answers “AgentReady pricing” queries directly.
  • Disambiguation lived in files agents must choose to fetch. llms.txt and agent-card.json only work when an agent deliberately pulls them. A consumer assistant doing a quick web search never does β€” it reads the search index’s view of the crowded name and picks the strongest entity.

What we shipped

The correction is boring and structural, which is the point:

  • The Offer moved to where the question lands: /pricing and the homepage now share one Product/Offer JSON-LD source β€” our real monthly and yearly prices in EUR, with the seller linked to the organization node. One partial, two pages, no drift. The numbers themselves live in one place (/pricing) and every machine surface renders from it.
  • The organization got a legal identity everywhere: legalName, foundingLocation and sameAs anchors on every page that names us, not just /about.
  • A name-twin FAQ, visible and extractable: /about now answers the three questions ChatGPT got wrong β€” same-name products, real price, real operator β€” in plain text and matching FAQPage JSON-LD.
  • Price and operator in the headless surfaces too: the agent card, the AI catalog and llms.txt now state the price, the operator, and that any other price attributed to “AgentReady” belongs to an unaffiliated product.
  • A regression suite pins all of it: if a template edit ever drops the price or the entity from a surface agents read, the build fails.

The merchant lesson

If your store shares a name with anything β€” a bigger brand, a foreign twin, a defunct product β€” assistants will eventually merge you. Perfect JSON-LD on pages nobody retrieves doesn’t help. The checklist that does: put the machine-readable answer on the page its question lands on (price on the pricing page, entity on every page), say who you are not in extractable form, and check what the assistants actually answer about you β€” not what your markup validator says.

Sources

An agent that can’t tell who you are will never get as far as buying from you β€” identity is transaction-readiness, too.