<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[FrontendWithPratik]]></title><description><![CDATA[FrontendWithPratik]]></description><link>https://frontend-with-pratik.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 17:25:28 GMT</lastBuildDate><atom:link href="https://frontend-with-pratik.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[I Read Google’s Official AI Search Guide So You Don’t Have To. Here’s What Actually Matters]]></title><description><![CDATA[Google I/O 2026 just wrapped up and Search Agents are the talk of the town. I spent the past few days going through Google's official documentation and wrote up everything that actually matters for yo]]></description><link>https://frontend-with-pratik.hashnode.dev/i-read-google-s-official-ai-search-guide-so-you-don-t-have-to-here-s-what-actually-matters</link><guid isPermaLink="true">https://frontend-with-pratik.hashnode.dev/i-read-google-s-official-ai-search-guide-so-you-don-t-have-to-here-s-what-actually-matters</guid><category><![CDATA[Frontend Development]]></category><category><![CDATA[SEO]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[AI]]></category><category><![CDATA[Google]]></category><category><![CDATA[["google-io-2026"]]></category><dc:creator><![CDATA[Pratik Goswami]]></dc:creator><pubDate>Fri, 22 May 2026 09:34:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a0da80cb1ed7bce01d1874c/499eec4e-7424-4857-827b-2f2f83b563e8.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Google I/O 2026 just wrapped up and Search Agents are the talk of the town. I spent the past few days going through Google's official documentation and wrote up everything that actually matters for your website. Originally published on Medium, but Hashnode feels like the right place to bring this given how many builders and indie developers are here who will run into this problem sooner than most.</em></p>
<hr />
<p>Agentic Search Optimization, Answer Engine Optimization, Generative Engine Optimization - the terminology changes depending on who you follow, but the panic underneath it is the same: <em>Google has changed, agents are reading your site, and if you are not optimizing for it, you are invisible.</em></p>
<p>So developers have been doing what developers do. They are adding <code>llms.txt</code> files. They are "chunking" their content. They are rewriting copy specifically for AI models. Some are even paying for tools that promise to get their site cited by ChatGPT.</p>
<p>Here is the thing. Google just published an official guide on how to optimize your website for generative AI features on Google Search. I read it cover to cover. Most of what the internet is selling you isn’t what search engines are looking for. This article highlights what can actually boost your visibility to such agents.</p>
<hr />
<h2>First, a Quick Recap on Why This Matters</h2>
<p>If you read my previous article, <a href="https://medium.com/@prtkgoswami8/your-portfolio-is-invisible-heres-how-i-fixed-mine-193b1f503fc7">Your Portfolio Is Invisible. Here’s How I Fixed Mine</a>, feel free to skip this section as you already know the core idea. Your site has two types of readers: humans and machines. And increasingly, it is the machines that decide whether the humans ever find you.</p>
<p>SEO (Search Engine Optimization) is about helping crawlers like Googlebot index and rank your content so people find you in search results.</p>
<p>AEO (Answer Engine Optimization) is about helping AI systems form an accurate and confident understanding of your site, so they can surface it when someone asks a relevant question.</p>
<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f7h09r1kcwfxz1zf5t5i.png" alt="SEO Vs AEO: SEO gets you on the map. AEO makes you a landmark." style="display:block;margin:0 auto" />

<p>The difference matters more now than it did a year ago. Google is actively building Search Agents. These are autonomous systems that can perform tasks on behalf of users. Whether it be booking a reservation, comparing products or researching services; to do any of that, the agent first has to read, understand, and trust your site. If it cannot do that, it will not recommend you and that is the whole problem.</p>
<hr />
<h2>What Google Actually Says</h2>
<p>Google has created a guide titled Optimizing your website for generative AI features on Google Search. It is the official position from Google Search Central and it serves as a guide to optimize a website for the new Search Agents.</p>
<blockquote>
<p>From Google’s perspective, optimizing for generative AI search is optimizing for the search experience, and thus still SEO.</p>
</blockquote>
<p>It means the same foundational principles that have always made a site rank well - original content, clean structure and good performance - are still what matter. The difference is in how those principles are applied in a world where an AI model is summarizing your page rather than a user clicking through to read it.</p>
<hr />
<h2>Part 1: What Actually Moves the Needle</h2>
<h3>1. Non-Commodity Content</h3>
<p>This is the section that gets the most emphasis in the Google guide and the least attention in most AEO tutorials.</p>
<p>Google uses the phrase “valuable, non-commodity content” and it is worth understanding what they mean.</p>
<p>Commodity content is a summary of information that already exists. It answers a question accurately, but it could have been written by anyone or generated by an AI model. The content has neither a point of view nor a first-hand experience. It does not tell you something you could not find in the first five results for the same query.</p>
<p>Non-commodity content is the opposite. It can include a first-hand review, case study with real numbers or an expert take that reflects genuine experience in the field. Something that provides a unique viewpoint.</p>
<p>Here is the uncomfortable truth. The content most developers are cranking out to “rank for AI” is precisely what AI models are trained to ignore. If you are writing blog posts that restate what the documentation already says, you are producing commodity content. The irony is that the shortcut most people reach for, using AI to generate more content faster, tends to produce the exact type of content that generative AI systems are trained to look past.</p>
<p>Your perspective is the signal. The depth you bring from actually having built, shipped, and debugged something, is what makes your content worth citing.</p>
<h3>2. Clear Technical Structure</h3>
<p>This part will be familiar if you read the SEO article, but the reasoning has a new layer to it now.</p>
<p>Google’s AI systems use the same underlying infrastructure as traditional search. That means the same technical requirements apply. A page has to be indexed and eligible to appear in Google Search before it can appear in AI Overviews or be used by a Search Agent.</p>
<p>The checklist looks like this.</p>
<p><strong>Semantic HTML</strong>. This is still the highest-leverage change most developers can make. When your markup uses <code>&lt;article&gt;</code>, <code>&lt;section&gt;</code>, <code>&lt;nav&gt;</code>, <code>&lt;h1&gt;</code> through <code>&lt;h3&gt;</code>, and <code>&lt;main&gt;</code> correctly, a crawler reads your page like an outline. Without them, it reads a flat document and has to guess what matters. The Google guide specifically notes that while perfectly semantic HTML is not required, it is generally a good idea because it helps multiple types of users, including AI systems that parse and navigate your page structure.</p>
<p><strong>Crawlable content</strong>. If your content only renders after a user interaction, a state toggle, a tab click, or a modal open, it effectively does not exist to a crawler. Googlebot crawls the initial DOM, not the post-interaction state. Audit your site for content that is conditionally rendered and refactor it so the important information is present in the initial HTML.</p>
<p><strong>Sitemap and robots hygiene</strong>. A sitemap provides a guide to the crawlers about every page on your site so nothing gets missed. A robots file tells crawlers which pages they are and are not allowed to visit. Both are small files that have an outsized impact.</p>
<p>Good page experience. Google’s guide explicitly links page experience as an AI search signal. Thus, Core Web Vitals like LCP (Largest Contentful Paint), which measures how long it takes for the largest visible element to load, has a major impact. A slow site is not just a UX problem, it is a visibility problem.</p>
<h3>3. Structured Data (The Right Way to Think About It)</h3>
<p>There is a nuance here that most articles miss. While structured data is not required for generative AI search, it is still a good idea to use it responsibly as it is a part of improving the overall SEO strategy. In other words there is no special <em>schema.org</em> that can give you an edge with AI search, but it does help with being eligible for rich results on Google Search.</p>
<p>Generative AI search is built on top of the same index as traditional search. A site that is well-optimized for rich results tends to also be better represented in AI responses. Structured data gives crawlers explicit, machine-readable facts about your content rather than making them infer those facts from your prose.</p>
<p>A <code>Person</code> schema on a portfolio tells Google your name, your role, your employer, and your social profiles in one structured block. A <code>Product</code> schema on an e-commerce page gives price, availability, and reviews in a format that leaves nothing to interpretation.</p>
<p>For a personal site, the most useful schemas are <code>Person</code>, <code>WebSite</code>, and <code>SoftwareApplication</code> if you are showcasing projects. For a commercial site, focus on <code>Organization</code>, <code>Product</code>, <code>FAQPage</code>, and <code>LocalBusiness</code> if applicable.</p>
<p>The goal is not to stuff your page with schema, rather to shine the spotlight on your most important facts.</p>
<hr />
<h2>Part 2: The Myths Worth Dropping</h2>
<p>I want to go through it because these myths are widespread, and I believe acting on them is a waste of time at best, counterproductive at worst.</p>
<h3>llms.txt is not a signal</h3>
<p>This has been circulating as the hot new AEO tactic. The idea is that you create a machine-readable file at your domain root describing your site for LLMs, similar to how <code>robots.txt</code> works for crawlers. Google’s guide is clear to highlight that you do not need to create <code>llms.txt</code> or any other "special" markup for AI. While they will be crawled and indexed, they don’t provide any advantage to improving visibility.</p>
<h3>Chunking content does not help</h3>
<p>The theory is that breaking your pages into smaller pieces helps AI systems process them more easily. Google explicitly highlights this as a myth, as their systems can handle multiple topics on a single page and surface the relevant piece to users. There is no ideal page length for generative AI search. So make pages for your audience, not for the AI.</p>
<h3>You do not need to write for AI keywords</h3>
<p>AI systems can understand synonyms. They understand the general meaning of a query and match it to relevant content even when the phrasing does not match. You do not need to worry about capturing every variation of how someone might search for your topic.</p>
<h3>Seeking inauthentic “mentions” does not work</h3>
<p>Some tools and guides push you to get your brand mentioned in blog posts, forums, and discussion threads across the web, with the reasoning that it will help AI systems associate your brand positively.</p>
<p>Google addresses this directly. Their core ranking systems focus on <strong>high-quality</strong> content while others focus on <strong>blocking spam</strong>. Their generative AI feature depends on both. Thus, pushing for bulk mentions may be harming visibility instead of boosting it.</p>
<hr />
<h2>Part 3: The Part Most Guides Are Not Writing About Yet</h2>
<p>AI agents are autonomous systems that can perform tasks on behalf of users - not just answer questions, but take actions. A browser agent, for example, can visit your website, analyze visual renderings (like screenshots), inspect the DOM structure, and interpret the accessibility tree, all to gather the information before reporting back to the user.</p>
<p>Google’s agent-friendly guidelines come down to one principle: if an agent cannot see it clearly and click it confidently, it will skip it.</p>
<p>Google links to a separate guide on <a href="https://web.dev/articles/ai-agent-site-ux">agent-friendly website best practices</a>. Although it is worth reading alongside this, here is a summary of the best practices:</p>
<ul>
<li><p>Use <code>&lt;button&gt;</code> and <code>&lt;a&gt;</code> tags for interactive elements. If you must use a <code>&lt;div&gt;</code>, give it <code>role="button"</code> and a <code>tabindex</code>. Agents are trained to recognize semantic HTML as actionable.</p>
</li>
<li><p>Set <code>cursor: pointer</code> in CSS on clickable elements. This is treated as an explicit actionability signal.</p>
</li>
<li><p>Keep your layout stable. Agents that take screenshots get confused by elements that shift position across pages, like a cart button that appears in a different location per product category.</p>
</li>
<li><p>Always link <code>&lt;label&gt;</code> tags to their inputs using the <code>for</code> attribute. This tells the agent what a form field is actually for.</p>
</li>
<li><p>Make sure interactive elements are larger than 8 square pixels. Visual analysis filters out anything smaller, so a tiny button effectively does not exist to an agent.</p>
</li>
<li><p>Remove transparent overlays and ghost elements. If a layer covers an interactive element, even a fully transparent one, the agent may discard the node underneath it entirely.</p>
</li>
</ul>
<p>Additionally, the <a href="https://ucp.dev/latest/specification/overview/">Universal Commerce Protocol (UCP)</a> is emerging as a standard that will allow Search Agents to do significantly more on commercial sites. If you run an e-commerce site or any site where a user might want to complete a transaction, this is something to track.</p>
<p>This is not something you need to act on today. But it is the direction things are heading, and being aware of it now means you are not late to the party.</p>
<hr />
<h2>The Summary: What to Actually Do</h2>
<p>The foundation has not changed.</p>
<ol>
<li><p>Build a site that is technically clean, fast, crawlable, and can be indexed.</p>
</li>
<li><p>Create content that has a real point of view and provides something a generic summary cannot.</p>
</li>
<li><p>Make your most important facts explicit through structured data.</p>
</li>
</ol>
<img src="https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dot16ykbvscy6jsx9kw3.png" alt="Practical checklist for both personal and commercial sites" style="display:block;margin:0 auto" />

<hr />
<h2>References</h2>
<ol>
<li><p><a href="https://blog.google/products-and-platforms/products/search/search-io-2026/#powerful-ai">A new era for AI Search</a></p>
</li>
<li><p><a href="https://developers.google.com/search/docs/fundamentals/ai-optimization-guide">Optimizing your website for generative AI features on Google Search</a></p>
</li>
<li><p><a href="https://web.dev/articles/ai-agent-site-ux">Build agent-friendly websites</a></p>
</li>
<li><p><a href="https://schema.org/docs/full.html">Schema.org. Full type hierarchy.</a></p>
</li>
<li><p><a href="https://medium.com/@prtkgoswami8/your-portfolio-is-invisible-heres-how-i-fixed-mine-193b1f503fc7">Your Portfolio Is Invisible. Here is How I Fixed Mine.</a></p>
</li>
</ol>
]]></content:encoded></item><item><title><![CDATA[Your Portfolio Is Invisible. Here’s How I Fixed Mine.]]></title><description><![CDATA[Everyone is building. AI tools have made it trivially easy to spin up a beautiful portfolio or product site in an afternoon and deploy it to Vercel or Netlify before dinner. But here is the thing nobo]]></description><link>https://frontend-with-pratik.hashnode.dev/your-portfolio-is-invisible-heres-how-i-fixed-it</link><guid isPermaLink="true">https://frontend-with-pratik.hashnode.dev/your-portfolio-is-invisible-heres-how-i-fixed-it</guid><category><![CDATA[SEO]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Career]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Frontend Development]]></category><dc:creator><![CDATA[Pratik Goswami]]></dc:creator><pubDate>Wed, 20 May 2026 13:37:36 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/6a0da80cb1ed7bce01d1874c/6a130a5a-3865-45e9-b0a6-ef19e72e0b24.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Everyone is building. AI tools have made it trivially easy to spin up a beautiful portfolio or product site in an afternoon and deploy it to Vercel or Netlify before dinner. But here is the thing nobody talks about: <strong>Vercel gives you a URL. It does not give you an audience.</strong></p>
<p>I learned this firsthand. I have had a personal website at <a href="http://pratikgoswami.dev">pratikgoswami.dev</a> for years. It looked great - it had my projects, experience, contact details - but the only people who ever visited it were recruiters who already had my resume or connections who clicked through from my LinkedIn. The site was essentially a <strong>private document with a public URL</strong>.</p>
<p>Then, in late April 2026, I spent two days fixing that. Here is exactly what I did and what happened after.</p>
<hr />
<h2>First, Understand Who You Are Actually Building For</h2>
<p>Most developers optimize their site for one audience: humans. But your site has two types of readers: <strong>humans</strong> and <strong>machines.</strong> And increasingly, it is the machines that decide whether the humans ever find you.</p>
<ul>
<li><p><strong>SEO (Search Engine Optimization)</strong> is about helping Search Engines (like Google) crawl, understand, and rank your content so people find you through search.</p>
</li>
<li><p><strong>AEO (Answer Engine Optimization)</strong> is newer, and arguably more important today. It is about helping AI assistants like ChatGPT, Gemini, and Claude form a confident, accurate understanding of who you are, so they can mention you when someone asks <em>“who are good full-stack developers with fintech experience?”</em></p>
</li>
</ul>
<p>Think of it this way: <strong>SEO gets you on the map. AEO makes you a landmark.</strong></p>
<p>With LLMs becoming the next search interface, both matter. I decided to tackle them together.</p>
<hr />
<h2>The Honest Baseline</h2>
<p>Before I made any changes, my Google Search Console data tells an honest story. The site had a tiny trickle of impressions starting in early April, the result of some rudimentary metadata I had set up previously. But it was flat, sparse, and averaging a position of 36+ in search results, effectively invisible.</p>
<p>I deployed my SEO and AEO changes on <strong>April 28th, 2026</strong>. By <strong>April 30th</strong>, impressions spiked sharply. In the 12 days since, the site has accumulated <strong>52 impressions</strong>, with 2 actual clicks and a 1.8% CTR. Small numbers, but the trajectory is the story. The spike is real and it came immediately after the changes.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6a0da80cb1ed7bce01d1874c/6f00cf54-3007-4b33-ba22-3fd84fe457ec.png" alt="Impression &amp; Click Performance on Google Search Console" style="display:block;margin:0 auto" />

<p>Now let me walk you through exactly what I changed.</p>
<hr />
<h2>Part 1: Traditional SEO — Making It Readable for Google</h2>
<p>My site is built with <strong>Next.js (App Router), TypeScript, and Sanity CMS</strong>. It looked clean to any human visitor. To a crawler, it was a meaningless soup of <code>&lt;div&gt;</code> tags.</p>
<h3>1. Semantic HTML Refactoring</h3>
<p>The simplest change with the highest impact. I replaced generic container divs with meaningful HTML elements.</p>
<p><strong>Before:</strong></p>
<pre><code class="language-html">&lt;section id="skills-section"&gt;
  &lt;div className="skills-section-title"&gt;Skills&lt;/div&gt;
  &lt;div&gt;
    {skillList.map(({title, skills}) =&gt; (
      &lt;div className="skill-container" key="{title}"&gt;
        &lt;div className="skill-title"&gt;{title}&lt;/div&gt;
        &lt;div className="skill-item-container"&gt;
          {skills &amp;&amp; skills.map((skill, index) =&gt; (
            &lt;div className="skill-item" key="{`\({title}-\){index}`}"&gt;{skill}&lt;/div&gt;
          ))}
        &lt;/div&gt;
      &lt;/div&gt;
    ))}
  &lt;/div&gt;
&lt;/section&gt;
</code></pre>
<p><strong>After:</strong></p>
<pre><code class="language-html">&lt;section id="skills-section" aria-label="Skills"&gt;
  &lt;h2 className="skills-section-title"&gt;Technical Skills&lt;/h2&gt;
  &lt;div className="skills-grid"&gt;
    {skillList.map(({ title, skills }) =&gt; (
      &lt;article className="skill-container" key="{title}"&gt;
        &lt;h3 className="skill-title"&gt;{title}&lt;/h3&gt;
        &lt;ul className="skill-item-container"&gt;
          {skills &amp;&amp; skills.map((skill, index) =&gt; (
            &lt;li className="skill-item" key="{`\({title}-\){index}`}"&gt;{skill}&lt;/li&gt;
          ))}
        &lt;/ul&gt;
      &lt;/article&gt;
    ))}
  &lt;/div&gt;
&lt;/section&gt;
</code></pre>
<p>Why does this matter? A crawler reads your HTML like an outline. <code>&lt;h1&gt;</code> through <code>&lt;h3&gt;</code> tags are chapter headings. <code>&lt;section&gt;</code> and <code>&lt;article&gt;</code> are meaningful containers. Without them, Googlebot sees a flat document with no hierarchy and has to guess what is important.</p>
<h3>2. Fixing Content Discoverability</h3>
<p>This one surprised me. I had project details that rendered conditionally, after a user interaction: a click to expand, a tab switch, a state toggle. It looked fine in the browser, but Googlebot crawls the <strong>initial DOM</strong>, not the post-interaction state. If your content only renders after a click, it effectively does not exist to Google.</p>
<p>I refactored these components to render all content in the initial HTML, using CSS to control visibility rather than React state.</p>
<h3>3. Adding Guides for Crawlers</h3>
<p>I added <code>robots.ts</code> and <code>sitemap.ts</code> to my project — two small files that do an important job. <code>robots.ts</code> tells crawlers which pages they are allowed to visit. <code>sitemap.ts</code> hands them a complete map of every page on your site so nothing gets missed. Next.js App Router makes this clean.</p>
<pre><code class="language-typescript">// app/robots.ts
export default function robots(): MetadataRoute.Robots {
  return {
    rules: {
      userAgent: "*",
      allow: "/",
      disallow: [""], // Routes that you dont want Crawler to see
    },
    sitemap: "https://www.pratikgoswami.dev/sitemap.xml",
  };
}
</code></pre>
<pre><code class="language-typescript">// app/sitemap.ts
export default function sitemap(): MetadataRoute.Sitemap {
  return [
    {
      url: "https://www.pratikgoswami.dev",
      lastModified: new Date(),
      changeFrequency: "monthly",
      priority: 1,
    },
  ];
}
</code></pre>
<p>The last step is submitting your sitemap in Google Search Console. That single action transforms your site from something Google might eventually find into something Google knows exists today.</p>
<h3>4. Performance and Core Web Vitals</h3>
<p>Google uses Core Web Vitals, specifically <strong>LCP (Largest Contentful Paint)</strong>, as a ranking signal. LCP measures how long it takes for the largest visible element on your page to load — the lower the number, the faster your site feels to a visitor.</p>
<p>I had been importing FontAwesome icons as an external dependency, which added unnecessary weight to the bundle. I replaced the animated canvas background with a native Canvas API implementation, cutting the external dependency entirely and improving load performance.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6a0da80cb1ed7bce01d1874c/fb5b5f03-2cae-4db7-88bb-74e064337bec.png" alt="Core Web Vitals" style="display:block;margin:0 auto" />

<hr />
<h2>Part 2: AEO — Making It Readable for AI</h2>
<p>Most developers fix their SEO and think the job is done. It is not. Search behavior has fundamentally shifted. People are using ChatGPT, Gemini, and Claude as search engines now, asking them to recommend developers, tools, and products. If an AI model does not know who you are, you are invisible to an entirely new class of search. AEO is how you fix that.</p>
<h3>1. JSON-LD Structured Data</h3>
<p>Think of JSON-LD as your verified ID card for the internet — it tells search engines which queries you are relevant to, and gives AI models the structured facts they need to represent you accurately.</p>
<p>I added a <code>&lt;script type="application/ld+json"&gt;</code> block to my site's <code>&lt;head&gt;</code> using the <strong>Person</strong> and <strong>SoftwareApplication</strong> schemas from <a href="http://Schema.org">Schema.org</a>. This gives AI models explicit, machine-readable facts rather than forcing them to infer who you are from your prose.</p>
<pre><code class="language-html">&lt;Script
    id="schema-person"
    type="application/ld+json"
    dangerouslySetInnerHTML={{
      __html: JSON.stringify({
          "@context": "https://schema.org",
          "@type": "Person",
          name: "Pratik Goswami",
          jobTitle: "Frontend Software Engineer",
          url: "https://www.pratikgoswami.dev",
          sameAs: [
          "https://www.linkedin.com/in/prtkgoswami",
          "https://github.com/prtkgoswami",
          ],
          worksFor: {
          "@type": "Organization",
          name: "TikTok, IBM",
          },
          description:
          "Frontend Engineer specializing in React, TypeScript, and scalable UI systems.",
      }),
    }}
/&gt;
</code></pre>
<p>Without this, an LLM has to <em>guess</em> who you are based on scattered text. With it, you are handing the model a verified fact sheet.</p>
<h3>2. The Triangle of Trust — Entity Linking via <code>sameAs</code></h3>
<p>The <code>sameAs</code> property is subtle but powerful. By linking your personal domain to your LinkedIn and GitHub profiles, you are creating a <strong>web of verification</strong> across multiple authoritative sources.</p>
<p>LLMs build a confidence score around named entities. If “Pratik Goswami” appears on a personal website, a LinkedIn profile, and a GitHub account, and those sources all link to each other, the model develops a high-confidence entity. It knows who you are. Without these links, you are just an unnamed node in a vast graph.</p>
<p>This is the triangle of trust: <strong>your domain, LinkedIn, and GitHub</strong>. Each point of the triangle reinforces the others.</p>
<h3>3. Writing for RAG — Declarative, Specific Descriptions</h3>
<p>Retrieval-Augmented Generation (RAG) is how many LLMs fetch context before answering. They pull relevant chunks of text from indexed sources. That means <strong>how you write about your projects matters</strong> as much as the schema you add.</p>
<p><strong>Vague (bad for RAG):</strong></p>
<blockquote>
<p>“Passionate developer who loves building impactful things.”</p>
</blockquote>
<p><strong>Specific (good for RAG):</strong></p>
<blockquote>
<p>“Built Gears Connect, a B2B automotive parts marketplace using Next.js, PostgreSQL, and Stripe, enabling real-time inventory management for 50+ vendors.”</p>
</blockquote>
<p>The second version is indexable. It is full of specific, searchable facts. An LLM retrieving context for a query like <em>“full-stack developers who have built marketplace apps”</em> can actually use it.</p>
<h3>4. JSON-LD Over llms.txt</h3>
<p>You may have seen chatter about <code>llms.txt</code>, a proposed standard for helping LLMs read your site, but it is a shortcut, not a foundation.</p>
<p><code>llms.txt</code> is a plain-text file placed at the root of your domain that gives AI crawlers a human-readable summary of your site, similar to how <code>robots.txt</code> works for search crawlers. Low effort to set up, but also low density. It carries no schema, no entity relationships, and zero influence over search rankings.</p>
<p>JSON-LD does all of that and more. It is a W3C standard understood by Google, Bing, LinkedIn, Perplexity, and SearchGPT simultaneously. It defines explicit relationships — that “Pratik Goswami” is a <code>Person</code>, <code>worksFor</code> specific organizations, and is the <code>author</code> of specific projects. It also unlocks Google Rich Results, putting your job title and links directly in the search listing. <code>llms.txt</code> cannot do any of this.</p>
<hr />
<h2>Part 3: Monitoring — Closing the Loop</h2>
<p>Shipping SEO and AEO changes without monitoring is like sending a message and never checking if it was delivered. Monitoring closes the feedback loop — it tells you what Google has indexed, which queries are surfacing your name, and which parts of your site are actually holding a visitor’s attention. Without it, you are optimizing blind.</p>
<p><strong>Google Search Console</strong> was the first thing I set up, before deploying any changes. Verifying your domain and submitting your sitemap establishes a direct line of communication with Google.</p>
<p><strong>The LLM test</strong> is simple and satisfying: ask ChatGPT, Gemini, and Claude <em>“Who is Pratik Goswami?”</em> My site now surfaces accurate, confident responses across all three. That is the AEO working.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6a0da80cb1ed7bce01d1874c/f7efac4b-9510-49a9-ab83-d82bc9d1d261.png" alt="LLM Test Gemini - Show profile when &quot;Pratik Goswami&quot; is searched for" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/6a0da80cb1ed7bce01d1874c/f7a1ca78-0f7a-40dc-ab48-2080efe0cd91.png" alt="LLM Test GPT - Show profile when &quot;Pratik Goswami&quot; is searched for" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/6a0da80cb1ed7bce01d1874c/548b808c-685f-4999-938e-2d52a89d8bc5.png" alt="Google Search Test - Show webiste on page 1, when &quot;Pratik Goswami&quot; is searched for" style="display:block;margin:0 auto" />

<p><strong>Custom Google Analytics tracking</strong> using <code>IntersectionObserver</code> lets me track which sections of my site recruiters actually read, not just that they visited. Knowing that the "<a href="https://jobtrack.pratikgoswami.dev">Job Application Tracker</a>" project card gets more dwell time than others is actionable data, not a vanity metric.</p>
<pre><code class="language-typescript">const observer = new IntersectionObserver(
    (entries) =&gt; {
        entries.forEach((entry) =&gt; {
            const sectionId = entry.target.id;

            if (entry.isIntersecting) {
                // User entered a section
                activeSection.current = sectionId;
                enterTime.current = Date.now();
                sendSectionView(sectionId);
            } else if (activeSection.current === sectionId &amp;&amp; enterTime.current) {
                // User left the section → calculate time spent
                const duration = Date.now() - enterTime.current;
                sendTimeSpent(sectionId, duration);
                activeSection.current = null;
                enterTime.current = null;
            }
        });
    },
    { threshold: 0.5 } // Trigger when 50% of a section is visible
);

SECTIONS.forEach((id) =&gt; {
    const el = document.getElementById(id);
    if (el) observer.observe(el);
});
</code></pre>
<hr />
<h2>Was It Worth It?</h2>
<p>In two days of work, the site went from effectively invisible to ranking on the first page of Google for my name, accumulating 52 impressions in 12 days, and being recognized by ChatGPT, Gemini, and Claude when asked who I am.</p>
<p>The numbers are early, but the direction is clear. The spike in the Google Search Console (GSC) chart is immediate and unambiguous.</p>
<p>Here is what I want you to take away:</p>
<ul>
<li><p><strong>A beautiful site and a discoverable site are not the same thing.</strong> Most portfolios are the former, not the latter.</p>
</li>
<li><p><strong>AEO is not the future. It is right now.</strong> LLMs are already answering career questions. If you are not structured for them, you are invisible to them.</p>
</li>
<li><p><strong>The implementation is smaller than you think.</strong> Two files, one schema block, and a few hours of refactoring later, my site went from invisible to indexed. The effort was minimal. The compounding visibility was not.</p>
</li>
<li><p><strong>Treat your portfolio like a product.</strong> Ship, measure, iterate.</p>
</li>
</ul>
<hr />
<h2>Your Quick-Start Checklist</h2>
<p>Pick one item from this list and do it this weekend:</p>
<p>◻ Replace <code>&lt;div&gt;</code> wrappers with <code>&lt;section&gt;</code>, <code>&lt;article&gt;</code>, and proper <code>&lt;h1&gt;</code>–<code>&lt;h3&gt;</code> hierarchy</p>
<p>◻ Audit for content hidden behind React state and render it in the initial HTML</p>
<p>◻ Add <code>robots.ts</code> and <code>sitemap.ts</code> in Next.js App Router</p>
<p>◻ Submit your sitemap in Google Search Console</p>
<p>◻ Run PageSpeed Insights and check your LCP score</p>
<p>◻ Add a <code>Person</code> JSON-LD schema to your <code>&lt;head&gt;</code></p>
<p>◻ Add <code>sameAs</code> links to LinkedIn and GitHub in your schema</p>
<p>◻ Rewrite your project descriptions to be specific, declarative, and technical</p>
<p>◻ Ask ChatGPT or Gemini who you are and see what they say today</p>
<hr />
<h2>So… What Is Next?</h2>
<p>This is just the starting point. The real value of setting up monitoring is that the data now tells me where to focus next — which projects are getting attention, which queries are surfacing my name, and where there is still room to improve. I will keep the structured data updated as my experience grows, revisit the content as AEO standards evolve, and let the analytics guide the next round of changes. The foundation is built. Now it gets to compound.</p>
]]></content:encoded></item></channel></rss>