I corrected my own business's identity in AI search.

Ask an AI engine "who is Eric Captures" and, a few months ago, you'd have gotten the wrong business — a retired brand, the wrong positioning, and a dead domain. So I did the thing I do for clients: I re-engineered the machine-readable layer of my site until the right entity won. Here's the diagnosis, the intervention, and the receipts — including what's still in progress.

By Eric Ryan · San Diego · Updated Aug 2, 2026 · ~7 min read

The short version

The problem: AI was confidently describing the wrong business

Buyers increasingly vet a business by asking an AI engine before they ever load the website. When they asked about mine, the answer was wrong — and wrong in a way that actively cost trust. It described an outdated, generic "commercial, event, and lifestyle" photographer and cited a retired domain as its source, instead of the current San Diego business focused on esthetics studios, salons, and spas.

ChatGPT answer describing Eric Captures with outdated positioning and citing the retired legacy domain as its source
Before An AI engine answering with the retired brand's positioning and sourcing a dead domain.

The diagnosis: fragmented signals, no source of truth

AI answers are only as good as the signals an engine can extract and reconcile. Mine were fragmented:

The intervention: make the right answer the easiest one to extract

You don't argue with an AI engine; you give it a cleaner, better-connected source and make the correct answer the path of least resistance. Four moves.

1 · A connected entity graph

A single JSON-LD @graph that ties the business, the founder, the service, the offers, and the reviews together by @id — one machine-readable object an engine can lift as a unit, instead of guessing from scattered page text.

Trimmed from the homepage <head>
"@graph": [
  { "@type": ["ProfessionalService","PhotographyBusiness"],
    "@id": "…/#business",
    "name": "Eric Captures",
    "areaServed": { "@type": "City", "name": "San Diego" },
    "founder":   { "@id": "…/#eric" },
    "makesOffer":[{ "@id": "…/#offer-social" },{ "@id": "…/#offer-web" }],
    "sameAs": [ "…/instagram.com/ericcapturessd",
                "…/facebook.com/ericcapturessd",
                "…/github.com/ericcaptures" ] },
  { "@type": "Person", "@id": "…/#eric", "name": "Eric Ryan",
    "worksFor": { "@id": "…/#business" } },
  { "@type": "Service", "@id": "…/#service",
    "provider": { "@id": "…/#business" } }
]

2 · An explicit AI-crawler policy

Most sites leave AI crawlers to guess. I named them and welcomed them in robots.txt — the bots that actually drive AI citations get an explicit green light.

From /robots.txt
User-agent: GPTBot          # OpenAI
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ClaudeBot       # Anthropic
Allow: /
User-agent: PerplexityBot   # Perplexity
Allow: /
User-agent: Google-Extended # Google AI
Allow: /
User-agent: bingbot         # Microsoft / Bing AI
Allow: /

3 · Provenance baked into every image

Every delivered file carries synced IPTC/XMP written with exiftool — creator, credit, copyright, a licensor URL, and descriptive keywords. So even when an image travels, it still says who made it and points home. (It's the same layer I sell as Web Bank.)

exiftool readout on a delivered file
Creator            : Eric Captures
Credit             : Eric Captures
Copyright          : © 2026 Eric Captures. All rights reserved.
Web Statement      : https://ericcaptures.com/
Licensor URL       : https://ericcaptures.com/
Creator Work URL   : https://ericcaptures.com
Alt Text (Access.) : Staff applying skincare product at a San Diego esthetics studio
Keywords           : esthetics, treatment, san diego

4 · One entity across every surface

Signals only reinforce each other when they match. I stood up a verified Google Business Profile with a name/URL identical to the homepage graph, and — because a common name collides with other photographers — I consolidated to a single, unique handle (ericcapturessd) across Instagram and Facebook, so the same string repeats everywhere and out-signals the same-name accounts.

The receipts: Google adopted the corrected entity

Answer first: Google now describes the business correctly, and it isn't personalization — the same corrected answer shows up in a clean incognito window with no history. Better still, Google started quoting the site's own copy back ("hybrid photographer and content creator," "deploy-ready") — proof the graph and copy are being machine-extracted, not paraphrased from stale cache.

AI engine describing Eric Captures with outdated positioning, citing the retired legacy domain
Before Retired brand, wrong positioning, dead domain.
Google AI Overview correctly describing Eric Captures as a San Diego hybrid photographer for esthetics studios, salons and spas
After Google's AI Overview, correct — and quoting the site's own words.
Google Images results with Eric Captures' own copyrighted About photo ranked first and attributed to Eric Captures
After The metadata layer paying off: my own copyrighted, IPTC-tagged image ranks #1 in Google Images — and stays credited to me.
Google search results ranking ericcaptures.com first with correct San Diego positioning above same-name accounts
After Organic result #1 with the correct positioning, above accounts that merely share the name.

What's still in progress (because honesty is the point)

A real GEO project isn't a light switch — different engines update on different clocks, and I'd rather show you the true state than a cherry-picked win.

Understanding why one engine leads and another lags — and having the specific levers for each — is the difference between doing GEO and guessing at it.

What this means for your clients

This is the exact work I run for agencies — the connected graph, the crawler policy, the image provenance, and the entity consolidation — pointed at your clients, so they're the business AI cites when a buyer asks. If a photographer can do this for himself, imagine it applied across your roster.