<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: AgustaON</title>
    <description>The latest articles on DEV Community by AgustaON (@agustaon).</description>
    <link>https://dev.to/agustaon</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4023533%2Fc1074d80-98b1-4f85-a381-96b2ec13a2a3.gif</url>
      <title>DEV Community: AgustaON</title>
      <link>https://dev.to/agustaon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/agustaon"/>
    <language>en</language>
    <item>
      <title>My company ranked #1 on Google but ChatGPT had never heard of us. Here's what I did about it.</title>
      <dc:creator>AgustaON</dc:creator>
      <pubDate>Mon, 20 Jul 2026 08:25:14 +0000</pubDate>
      <link>https://dev.to/agustaon/my-company-ranked-1-on-google-but-chatgpt-had-never-heard-of-us-heres-what-i-did-about-it-241o</link>
      <guid>https://dev.to/agustaon/my-company-ranked-1-on-google-but-chatgpt-had-never-heard-of-us-heres-what-i-did-about-it-241o</guid>
      <description>&lt;p&gt;Last month my manager forwarded me a Slack message from our founder that just said: "Ask ChatGPT what our company does. Then panic."&lt;/p&gt;

&lt;p&gt;So I did. I opened ChatGPT and typed our company name. It confidently told me about a &lt;em&gt;completely different&lt;/em&gt; company with a similar name. Then I asked it to "recommend a good [our category] tool" — the exact thing we sell — and it named three competitors. Not us. Never us.&lt;/p&gt;

&lt;p&gt;Here's the kicker: we rank #1 on Google for our main keywords. Our SEO is genuinely good. And it turns out that means almost nothing to an LLM.&lt;/p&gt;

&lt;p&gt;I went down a rabbit hole for two weeks. This is the practical version of what I learned, with the actual code that moved the needle.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "good SEO" doesn't transfer to AI
&lt;/h2&gt;

&lt;p&gt;Google crawls, indexes, and ranks &lt;em&gt;pages&lt;/em&gt;. Its algorithm is built around links, keywords, freshness, and hundreds of ranking signals. You can win that game with backlinks and on-page optimization.&lt;/p&gt;

&lt;p&gt;LLMs work differently. When you ask ChatGPT or Perplexity "what's the best X," the model isn't ranking a list of pages — it's generating an answer from an internal representation of the world, sometimes augmented with live retrieval. For your business to show up, the model needs to have formed a &lt;strong&gt;clear, confident, consistent understanding&lt;/strong&gt; of what you are.&lt;/p&gt;

&lt;p&gt;That understanding comes from:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;How clearly your own site describes you&lt;/strong&gt; (in plain language, not marketing-speak)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;How consistently you're described everywhere else&lt;/strong&gt; (directories, social profiles, other sites)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Whether machines can parse your site at all&lt;/strong&gt; (structured data, semantic HTML)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We were failing all three, and none of them showed up in a normal SEO audit.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 1: Our homepage was written for humans who already knew us
&lt;/h2&gt;

&lt;p&gt;Our hero section said something like &lt;em&gt;"The intelligent growth platform for modern teams."&lt;/em&gt; Beautiful. Meaningless to a model. An LLM reading that has no idea what we sell.&lt;/p&gt;

&lt;p&gt;The fix was boring but effective: we rewrote the first paragraph of the homepage to be almost aggressively literal. One sentence that a stranger — or a model — could repeat back accurately:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"[Company] is a [exact product category] that helps [specific audience] do [specific outcome]."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's it. No adjectives doing load-bearing work. After the change, re-testing showed the model could actually describe us.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 2: No structured data
&lt;/h2&gt;

&lt;p&gt;This is the technical one and where devs can make the biggest difference fast.&lt;/p&gt;

&lt;p&gt;Most sites have zero &lt;a href="https://greaterthanservices.com/docs/schema-types" rel="noopener noreferrer"&gt;JSON-LD&lt;/a&gt; structured data. It's invisible to human visitors but it's a direct, machine-readable statement of &lt;em&gt;what this entity is&lt;/em&gt;. If you give an AI crawler explicit facts, it doesn't have to guess.&lt;/p&gt;

&lt;p&gt;Here's the minimum I'd add to any company homepage — a &lt;code&gt;&amp;lt;script type="application/ld+json"&amp;gt;&lt;/code&gt; block in the &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"application/ld+json"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@context&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://schema.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Organization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Your Company&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://yourcompany.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;description&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;A one-sentence, plain-language description of exactly what you sell and who it's for.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sameAs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.linkedin.com/company/yourcompany&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://twitter.com/yourcompany&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://github.com/yourcompany&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;sameAs&lt;/code&gt; array matters more than it looks — it links your entity to every other profile that describes you, which reinforces consistency (problem 3).&lt;/p&gt;

&lt;p&gt;If you sell specific products, add &lt;code&gt;Product&lt;/code&gt; schema too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"application/ld+json"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@context&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://schema.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Product&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Product Name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;description&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;What it does, in plain language.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;brand&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Brand&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Your Company&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;offers&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Offer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;price&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;4.99&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;priceCurrency&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;USD&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;availability&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://schema.org/InStock&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For content pages, &lt;code&gt;FAQPage&lt;/code&gt; and &lt;code&gt;Article&lt;/code&gt; schema help LLMs extract answers directly. The pattern is always the same: &lt;strong&gt;stop making the machine infer, and just tell it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Validate everything with Google's Rich Results Test or Schema.org's validator before shipping — malformed JSON-LD does nothing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem 3: We described ourselves five different ways
&lt;/h2&gt;

&lt;p&gt;Our website said one thing, our LinkedIn bio said another, our Crunchbase entry was three years out of date, and our Twitter bio was a joke (literally, it was a pun). To a model trying to build a confident picture, that inconsistency is noise. It'll favor a competitor whose story is the same everywhere.&lt;/p&gt;

&lt;p&gt;Fixing this wasn't code — it was a boring afternoon of copy-pasting one canonical description into every profile we own. But it measurably helped.&lt;/p&gt;

&lt;h2&gt;
  
  
  The part where I admit I used a tool
&lt;/h2&gt;

&lt;p&gt;I could check some of this manually — read our own copy, eyeball the markup, run the schema validators. But two things were painful to do by hand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Writing correct JSON-LD for every page type&lt;/strong&gt; from scratch, matching the right schema.org vocabulary&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Actually measuring&lt;/strong&gt; whether AI assistants mention us — you can't eyeball that, you have to query them with real buyer questions and check the answers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A teammate pointed me at &lt;a href="https://greaterthanservices.com" rel="noopener noreferrer"&gt;Greater Than Services&lt;/a&gt;, which runs an audit specifically for this (they split it into CRO / GEO / ASO — human, AI-search, and AI-agent readability). The useful part for me as a dev: instead of a report that says "add structured data," it generates the actual JSON-LD and meta tags for your specific site, ready to paste. It also runs the "does AI name you" test automatically across a few assistants, which is the measurement I couldn't be bothered to script myself.&lt;/p&gt;

&lt;p&gt;The free preview was enough to see our scores; the full report was a few dollars. I'm not affiliated with them — it just saved me from writing schema by hand for 6 page types, so it's earned a mention. There are other ways to do this; that's the one that worked for me. If you'd rather DIY, everything above is the manual path.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 30-second test you should run right now
&lt;/h2&gt;

&lt;p&gt;Regardless of tooling, do this before you close the tab:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open ChatGPT (or Perplexity, or Gemini).&lt;/li&gt;
&lt;li&gt;Type: &lt;strong&gt;"What does [your company] sell, and who is it for?"&lt;/strong&gt; — do &lt;strong&gt;not&lt;/strong&gt; paste your URL.&lt;/li&gt;
&lt;li&gt;Read what comes back.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If it's vague, wrong, or blank, that's not a hypothetical future problem. That's real prospects, right now, asking an AI for exactly what you sell and getting pointed at someone else.&lt;/p&gt;

&lt;p&gt;We went from "ChatGPT thinks we're a different company" to "ChatGPT describes us correctly" in about two weeks, mostly with the three fixes above. The code part — structured data — was genuinely the highest-leverage thing, which is why I'm writing this on dev.to and not on LinkedIn.&lt;/p&gt;

&lt;p&gt;Ship the JSON-LD. Fix your copy. Be consistent. The models are already answering questions about your business — you just want to be in the answer.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ran into weird edge cases with schema for a specific page type? Drop them in the comments — happy to compare notes.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>seo</category>
      <category>ai</category>
      <category>javascript</category>
    </item>
    <item>
      <title>We looked at where AI actually gets its answers. Your homepage barely matters.</title>
      <dc:creator>AgustaON</dc:creator>
      <pubDate>Mon, 20 Jul 2026 08:24:45 +0000</pubDate>
      <link>https://dev.to/agustaon/we-looked-at-where-ai-actually-gets-its-answers-your-homepage-barely-matters-h18</link>
      <guid>https://dev.to/agustaon/we-looked-at-where-ai-actually-gets-its-answers-your-homepage-barely-matters-h18</guid>
      <description>&lt;p&gt;If you've read anything about "getting cited by AI" in the last year, the advice was probably some combination of: add structured data, write clearer copy, fix your headings. All reasonable. We build a tool that does exactly that kind of analysis, so I'm biased toward it being useful.&lt;/p&gt;

&lt;p&gt;Then we started logging &lt;em&gt;where&lt;/em&gt; the AI answers were actually pulling from — the source types cited when an assistant answers a buying question in a given category — and the data made me rethink the priority order.&lt;/p&gt;

&lt;p&gt;Company homepages were rarely the primary source.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the citation mix actually looks like
&lt;/h2&gt;

&lt;p&gt;When you ask ChatGPT, Perplexity, Gemini, or Claude something like "best project management tool for a small agency," the model (usually with web search on) assembles an answer from retrieved documents. Log what those documents are across a category and a pattern shows up fast. Roughly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Review platforms&lt;/strong&gt; — G2, Capterra, Trustpilot, category-specific review sites&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Industry directories&lt;/strong&gt; — niche listings, "best X tools" databases&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Editorial roundups&lt;/strong&gt; — blog posts titled "12 best X for Y in 2026"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forums and communities&lt;/strong&gt; — Reddit threads, Stack Overflow, niche forums&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Brand-owned sites&lt;/strong&gt; — usually the &lt;em&gt;smallest&lt;/em&gt; slice&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The exact mix varies a lot by category — developer tools skew heavily toward forums and GitHub, local services skew toward review sites and maps — but brand sites consistently underperform the intuition.&lt;/p&gt;

&lt;p&gt;This makes sense once you think about retrieval rather than ranking. The model isn't looking for the most authoritative page about &lt;em&gt;you&lt;/em&gt;. It's looking for documents that compare options in your category. Your homepage says "we're the best." A G2 category page says "here are 40 tools, ranked, with reviews." Guess which one is more useful for answering a comparison question.&lt;/p&gt;

&lt;h2&gt;
  
  
  The uncomfortable implication
&lt;/h2&gt;

&lt;p&gt;You can have perfect technical SEO, flawless JSON-LD, a beautifully clear homepage — and still be absent from the answer, because the answer was assembled from four sources you're not on.&lt;/p&gt;

&lt;p&gt;That doesn't make on-page work pointless. It makes it &lt;strong&gt;necessary but not sufficient&lt;/strong&gt;, and it changes the order you should do things in:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Be present&lt;/strong&gt; on the source types your category's answers are built from&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Be parseable&lt;/strong&gt; so that when the model does encounter you, it correctly understands what you are&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Most advice covers step 2 exclusively. Step 1 is unglamorous, non-technical, and does more.&lt;/p&gt;

&lt;h2&gt;
  
  
  The technical half (step 2) — what actually helps
&lt;/h2&gt;

&lt;p&gt;Since this is dev.to, here's the part you can ship this afternoon.&lt;/p&gt;

&lt;h3&gt;
  
  
  Make your entity unambiguous
&lt;/h3&gt;

&lt;p&gt;The single highest-leverage markup is &lt;code&gt;Organization&lt;/code&gt; schema with a populated &lt;code&gt;sameAs&lt;/code&gt;. It links your site to every other profile that represents you — which is exactly how a retrieval system corroborates that scattered mentions are the same entity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"application/ld+json"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@context&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://schema.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Organization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Your Company&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;url&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://yourcompany.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;description&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;One plain sentence: what you sell and who it's for.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sameAs&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.g2.com/products/your-company/reviews&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.crunchbase.com/organization/your-company&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://github.com/yourcompany&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://www.linkedin.com/company/yourcompany&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note what's in that &lt;code&gt;sameAs&lt;/code&gt; array: the review site and the directory. You're explicitly connecting yourself to the sources that actually get cited.&lt;/p&gt;

&lt;h3&gt;
  
  
  Write passages that survive extraction
&lt;/h3&gt;

&lt;p&gt;Retrieval works on chunks, not pages. A paragraph that only makes sense after reading the three above it is a bad chunk. A self-contained paragraph that answers one question is a good one.&lt;/p&gt;

&lt;p&gt;Practically, that means:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Bad: requires context to be useful --&amp;gt;&lt;/span&gt;
&lt;span class="gu"&gt;## How it works&lt;/span&gt;
It integrates seamlessly and handles this automatically for you.

&lt;span class="c"&gt;&amp;lt;!-- Good: survives being ripped out of context --&amp;gt;&lt;/span&gt;
&lt;span class="gu"&gt;## How does [Product] handle rate limiting?&lt;/span&gt;
[Product] applies a token bucket per API key, defaulting to 100
requests per minute. Limits are configurable per plan, and 429
responses include a Retry-After header.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second one can be lifted directly into an answer with attribution. The first can't be lifted at all.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;FAQPage&lt;/code&gt; schema formalizes this — it's a machine-readable declaration of "here is a question and here is its self-contained answer":&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"application/ld+json"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@context&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://schema.org&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;FAQPage&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mainEntity&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Question&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;How does the API handle rate limiting?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;acceptedAnswer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Answer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;A token bucket per API key, defaulting to 100 requests per minute, configurable per plan. 429 responses include a Retry-After header.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}]&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Don't block the crawlers you want
&lt;/h3&gt;

&lt;p&gt;Easy to get wrong, especially if someone added a blanket rule during a scraping panic. Check your &lt;code&gt;robots.txt&lt;/code&gt; for the AI crawlers you actually want indexing you (&lt;code&gt;GPTBot&lt;/code&gt;, &lt;code&gt;PerplexityBot&lt;/code&gt;, &lt;code&gt;ClaudeBot&lt;/code&gt;, &lt;code&gt;Google-Extended&lt;/code&gt;, among others). Blocking them is a legitimate choice — just make sure it's a &lt;em&gt;choice&lt;/em&gt; and not a leftover.&lt;/p&gt;

&lt;h3&gt;
  
  
  Comparison pages are retrieval bait
&lt;/h3&gt;

&lt;p&gt;If the cited documents are mostly comparison content, one thing you control is publishing genuinely useful comparison content yourself. An honest "X vs Y" page — including where you lose — is far more likely to be retrieved for a comparison query than a features page. It also tends to be the highest-intent traffic you'll get.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest caveats
&lt;/h2&gt;

&lt;p&gt;Two things worth saying plainly, because a lot of content in this space overclaims:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nobody can guarantee AI citations.&lt;/strong&gt; You can improve the signals that correlate with being retrieved and understood. You cannot control what any model outputs next week. Anyone selling you a promised ranking in ChatGPT is selling you something they can't deliver.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is a moving target.&lt;/strong&gt; Retrieval behavior differs across engines and changes with model updates. What I described is a snapshot, not a law. Measure your own category rather than trusting a generic list — including this one.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to check your own category
&lt;/h2&gt;

&lt;p&gt;Free version, takes ten minutes: open each of the four assistants, ask three or four buying questions a customer in your category would ask, and note which domains get cited. Not which companies get named — which &lt;em&gt;domains get linked&lt;/em&gt;. Tally them. The pattern usually appears within a dozen questions.&lt;/p&gt;

&lt;p&gt;If you'd rather not do it by hand, &lt;a href="https://greaterthanservices.com" rel="noopener noreferrer"&gt;Greater Than Services&lt;/a&gt; (what I work on) runs those queries across ChatGPT, Perplexity, Gemini and Claude and gives you the source-type breakdown for your specific category, plus the schema fixes as copy-paste code. Free preview, no signup. But the manual method above genuinely works and costs nothing — the point of this post is the finding, not the tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Your homepage's job is to be unambiguous when a model encounters it. Getting &lt;em&gt;encountered&lt;/em&gt; mostly happens elsewhere — on the review sites, directories, roundups and forums that AI answers are actually assembled from.&lt;/p&gt;

&lt;p&gt;Fix the markup. Then go get listed.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Curious what the citation mix looks like in other categories — if you run the manual check for yours, drop what you find in the comments. Especially interested in whether dev-tool categories really are as forum-heavy as they look.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>seo</category>
      <category>ai</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
