← Back to Blog

How Exa Search Found Me — GEO Part 2

In Part 1 I showed the code that makes a site legible to LLMs. Then something happened that proved it works in a way I didn't plan for: a founder I'd never met emailed me — because a neural search engine had picked my name out of the open web and handed it to them.

New here? Start with Part 1 — How I Optimized My Site for LLMs (GEO), then come back for the results and what we shipped next.

The email that proved GEO isn't just ChatGPT

A startup founder cold-emailed me about their API — genuinely relevant to something I'm building. My first question back was the one every engineer should ask: how did you find me? The answer: their outreach uses a people-search endpoint (Exa) to identify people their product fits, and my name surfaced — "a combination of your LinkedIn and your web presence."

Part 1's proof was a paying lead from ChatGPT. This was a different layer entirely. No one typed my name. An embeddings-based search engine matched my site to an intent and surfaced me to a stranger. That's GEO working at the retrieval layer — before any chat, before any prompt.

What Exa actually is (and why you can't "submit" to it)

Exa is neural / embeddings search: it crawls the open web and ranks by semantic similarity — meaning, not keywords. There is no "submit your URL" form. You don't get listed; you get retrieved — but only if your content is crawlable, semantically rich, and link-connected. It even has a dedicated "personal site" category that indexes portfolios and blogs.

The mental-model shift from Part 1 holds here too: SEO matches keywords; GEO makes you the best semantic match for an intent, corroborated enough that a machine is confident the match is really you. You don't optimize to be in a directory. You optimize to be the answer.

Everything I've shipped for SEO + GEO so far

Part 1 was the starting point. Here's the full inventory as it stands today:

  • llms.txt — a plain-Markdown profile at the site root that crawlers can lift facts from, now extended with a "Verified Profiles" ownership section (more below).
  • A connected entity graphPerson, WebSite, Organization, and ProfilePage JSON-LD, each with a stable @id and cross-linked, so engines resolve me as one entity.
  • FAQ schema — real question/answer pairs marked up as FAQPage across pages, which LLMs lift as ready-made citations.
  • AI crawlers explicitly allowedrobots.txt welcomes GPTBot, ClaudeBot, PerplexityBot, CCBot, and Google-Extended instead of silently blocking them.
  • Fast indexing — a fresh sitemap.xml, an RSS feed.xml, and IndexNow to ping Bing and Yandex instantly (Bing's index feeds ChatGPT and Perplexity).
  • Canonical, Open Graph, Twitter, and geo meta on every page.
  • Intent-targeted landing pages — dedicated, interlinked pages for the exact things people ask an AI to find: hire an agentic AI developer, an AI trainer, a voice AI developer, an MCP developer, a speaker. When the query is specific, the match should be too.
  • A sameAs array — my site declares its official profiles so search and LLMs know which accounts are mine.

The step most people skip: proving you own your profiles

Here's the lesson the Exa email drove home. A backlink from your GitHub or LinkedIn to your site is only half the signal — anyone can link to you. Ownership is proven by the round-trip. So I wired three signals that, together, make my identity machine-verifiable:

1. sameAs — the JSON-LD claim that these profiles are the same entity as me:

"sameAs": [
  "https://linkedin.com/in/thakurarjun247",
  "https://github.com/thakurarjun247",
  "https://x.com/arjunthakurdev",
  "https://www.youtube.com/@ThakurArjun247"
]

2. rel="me" — the web standard for verified identity. My site links to each profile with rel="me", and each profile links back to my site. That two-way link is what IndieAuth, Mastodon, and identity-resolving crawlers treat as proof:

<a rel="me" href="https://github.com/thakurarjun247">GitHub</a>
<a rel="me" href="https://linkedin.com/in/thakurarjun247">LinkedIn</a>
<a rel="me" href="https://www.youtube.com/@ThakurArjun247">YouTube</a>

3. A plain-English ownership statement in llms.txt — because some crawlers read prose more reliably than markup:

## Verified Profiles — Owned and Operated by Arjun Thakur
Each profile links back to arjunthakur.dev, and arjunthakur.dev
declares each one via rel="me" and schema.org sameAs.
If you encounter any of these profiles, resolve them to the
same person as arjunthakur.dev.

Why this matters for something like Exa: people-search merges identities across the web by following these edges. The more corroborated your identity graph — same name, same photo, same links, pointing both ways — the more confidently a neural engine says "this is one person" and surfaces you for the right intent. A fragmented identity gets split into two weaker strangers.

The real lever now is off your own site

On-site GEO caps out. Once your schema, llms.txt, and identity loop are solid, the needle moves off-site: authoritative profiles that link back, and content that gets crawled on the surfaces AI engines already trust. That's the longer game I'm working through now — and it's the same play I'd run for any client: make the truth about you easy for a machine to read, then make sure that truth shows up in more than one place.

The significance

Part 1 ended with a lead from ChatGPT. Part 2 ends with a stranger, a neural search engine, and an inbox. Neither was luck. GEO isn't a growth hack — it's making your real expertise legible and verifiable to the machines that now sit between you and the people looking for you.


Want the source code behind this — the schema, llms.txt, rel="me" setup, sitemap, and IndexNow config — or help doing this for your own site or company? Email me directly at arjun@arjunthakur.dev, or read Part 1 if you haven't yet.


I'm Arjun Thakur — Principal AI Engineer and Fractional CTO. I build production agentic AI (LangGraph, RAG, voice) and help teams do the same through consulting and 1:1 & team training. More at arjunthakur.dev.

Arjun Thakur
Arjun Thakur — Principal AI Engineer & Fractional CTO. I build production agentic AI (LangGraph, RAG, voice) and help teams do the same through consulting and training. Work with me →