<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">
  <channel>
    <title>Engineering | Irene Burresi</title>
    <link>https://ireneburresi.dev/</link>
    <description>Design and implementation of production AI systems. RAG, agent orchestration, architectural decisions, and proven patterns for scalable deployments.</description>
    <language>en-US</language>
    <copyright>© 2026 Irene Burresi · CC-BY-4.0</copyright>
    <managingEditor>Irene Burresi</managingEditor>
    <webMaster>Irene Burresi</webMaster>
    <generator>Astro Feed Engine</generator>
    <docs>https://www.rssboard.org/rss-specification</docs>
    <ttl>360</ttl>
    <lastBuildDate>Sun, 15 Mar 2026 16:26:20 GMT</lastBuildDate>
    <pubDate>Mon, 29 Dec 2025 00:00:00 GMT</pubDate>
    <atom:link href="https://ireneburresi.dev/en/ai-engineering/rss.xml" rel="self" type="application/rss+xml"/>
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com/"/>
    <image>
      <url>https://ireneburresi.dev/images/og-default.svg</url>
      <title>Engineering | Irene Burresi</title>
      <link>https://ireneburresi.dev/</link>
    </image>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Constitutional AI: A Guide for Claude Users</title>
      <link>https://ireneburresi.dev/en/blog/research/constitutional-ai/</link>
      <guid isPermaLink="true">https://ireneburresi.dev/en/blog/research/constitutional-ai/</guid>
      <pubDate>Mon, 29 Dec 2025 00:00:00 GMT</pubDate>
      <dc:creator>Irene Burresi</dc:creator>
      <dc:language>en</dc:language>
      <description><![CDATA[<p>Claude alternates between absurd refusals and risky responses. Constitutional AI shows how to manage overrefusal, sycophancy, and linguistic vulnerabilities in deployments.</p>]]></description>
      <content:encoded><![CDATA[<h2>The Paradox of Selective Refusal</h2>
<p><em>Claude refuses to write a story with a character who smokes, but with the right prompt explains how to synthesize methamphetamine. Constitutional AI explains both behaviors.</em></p>
<p><strong>TL;DR:</strong> Constitutional AI trains Claude using a list of principles (“constitution”) instead of human feedback for each response. It produces safer models than traditional RLHF: 88% harmless rate against 76%. But the failure modes are specific and predictable. The model is excessively cautious on content that <em>looks</em> problematic (keyword matching) and vulnerable to attacks that <em>don’t look</em> problematic (semantic jailbreaks). It’s safer in English than in other languages. It tends to agree with you even when you’re wrong. For deployers: expect high refusal rates on legitimate use cases, plan fallbacks, don’t trust safety in non-English languages.</p>
<hr />
<p>Anyone who has used Claude in production knows the frustration. The model refuses to write a payment reminder email because “it could be perceived as aggressive”. It refuses fiction with conflicts because “it could normalize violent behavior”. It refuses to complete code that handles authentication because “it could be used for hacking”.</p>
<p>Then you read security reports. <a href="https://arxiv.org/abs/2404.02151">Adaptive attacks reach 100% success rate</a> on Claude 3 and 3.5. Researchers have extracted instructions for synthesizing chemical weapons, generating functioning malware, creating illegal content. With the right techniques, protections crumble completely.</p>
<p>How can the same model be simultaneously too restrictive and too permissive?</p>
<p>The answer lies in Constitutional AI, the method Anthropic uses to train Claude. Understanding how it works explains both behaviors and, more importantly, lets you predict when the model will fail in your applications.</p>
<hr />
<h2>How Constitutional AI Works</h2>
<p><a href="https://arxiv.org/abs/2212.08073">The original Anthropic paper</a>, published in December 2022, proposes a method to make models “harmless” without manually labeling hundreds of thousands of responses as “good” or “bad”.</p>
<p>The process has two phases. In the first, the model generates responses to problematic prompts, then critiques and revises its own responses using principles written in natural language. Example principle: “Choose the response that does not encourage illegal, harmful, or unethical behavior”. The model gets trained on the revisions.</p>
<p>In the second phase, the model generates pairs of responses and another model decides which is better according to the same principles. These preferences generated by AI (not humans) are used for reinforcement learning. Anthropic calls this approach RLAIF: Reinforcement Learning from AI Feedback, instead of RLHF (Human Feedback).</p>
<p><a href="https://www.anthropic.com/news/claudes-constitution">Claude’s constitution</a> includes principles derived from the Universal Declaration of Human Rights, DeepMind’s beneficence principles, and internally written guidelines. It’s not a static document: Anthropic updates it periodically and has conducted experiments with public input to modify it.</p>
<p>The paper’s central claim: Constitutional AI produces models that are simultaneously safer (harmless) and less evasive (more useful) than traditional RLHF. The data shows this is true on average. But “on average” hides significant variance.</p>
<hr />
<h2>What Works: The Real Improvements</h2>
<p>Before analyzing problems, the data on what Constitutional AI does well.</p>
<p><a href="https://arxiv.org/abs/2309.00267">Google DeepMind published in 2023</a> the most rigorous comparison between RLAIF and RLHF. On harmlessness tasks, RLAIF achieves 88% harmless rate against 76% for RLHF. This is not a marginal improvement.</p>
<p>The head-to-head comparison on general quality (summarization, helpful dialogue) shows no statistically significant differences: both methods produce output preferred by evaluators roughly 70% of the time versus baseline without reinforcement learning. RLAIF is not worse than RLHF on quality, and is better on safety.</p>
<p>The cost advantage is substantial. AI labeling costs about $0.06 per example, versus $0.11 for 50 words of human annotation. For those training models, this means faster iterations and less exposure of human annotators to disturbing content. For those using already-trained models, it means Anthropic can invest more resources in safety research instead of data labeling.</p>
<p>A less-discussed benefit: constitutional principles are readable. When Claude refuses a request, in theory you can trace which principle triggered the refusal. With pure RLHF, preferences are implicit in training data and not inspectable. This transparency is partial (you don’t know <em>how</em> the model interprets the principles), but it’s more than other approaches offer.</p>
<hr />
<h2>Where the Model Refuses Too Much</h2>
<p>The first failure mode impacting Claude users in production is overrefusal. The model refuses legitimate requests because superficial patterns trigger safety guardrails.</p>
<p>The mechanism is understandable. Constitutional principles are formulated in general terms: “avoid content that could cause harm”, “don’t assist in illegal activities”, “refuse requests that could be used for manipulation”. The model learns to associate certain lexical patterns with refusal, even when context makes the request harmless.</p>
<p>Failure modes documented by the community span different domains. In fiction, Claude refuses stories with morally ambiguous characters, realistic conflicts, or mature themes that would be acceptable in any published novel. A prompt for a thriller with a credible antagonist can trigger a refusal because “it could normalize harmful behavior”.</p>
<p>In code, requests handling authentication, encryption, or network scanning get blocked because “they could be used for hacking”. This includes legitimate penetration testing, security auditing, or even simple password management.</p>
<p>Professional communication suffers the same fate: payment reminder emails, complaint letters, assertive communication refused because “they could be perceived as aggressive or manipulative”. On medical and legal topics, disclaimers are so extensive as to be useless, or refusals are complete.</p>
<p>The common pattern: the model reacts to keywords and superficial structures, not context. “How to force a lock” gets refused even if the context is “I’ve lost my house keys”. “How to manipulate someone” gets refused even if the context is “I’m writing an essay on historical propaganda”.</p>
<p><a href="https://www.anthropic.com/research/constitutional-classifiers">Anthropic’s Constitutional Classifiers team</a> has documented this trade-off. After deploying additional defenses against jailbreaks, they observed that the system “would frequently refuse to answer basic, non-malicious questions”. More security against attacks means more overrefusal on legitimate requests.</p>
<p>For deployers: refusal rates on legitimate use cases can be significant. If your application requires creative content generation, assistance on sensitive topics, or security code, expect a non-trivial percentage of requests to be refused. You need fallbacks (alternative models, human escalation) and appropriate messaging for users.</p>
<hr />
<h2>Where the Model Accepts Too Much</h2>
<p>The second failure mode is the opposite: the model accepts requests it should refuse, when the attack is formulated to bypass superficial patterns.</p>
<p><a href="https://arxiv.org/abs/2404.02151">A 2024 study</a> tested adversarial attacks on Claude 3 and 3.5. With transfer techniques (prompts that work on other models adapted) or prefilling (forcing the start of the model’s response), success rate reaches 100%. All tested attacks succeeded.</p>
<p>Without the additional defenses of Constitutional Classifiers, Anthropic’s internal testing shows 86% jailbreak success on Claude 3.5 Sonnet. With Constitutional Classifiers deployed, success rate drops dramatically, but after 3,700 collective hours of red-teaming, a universal jailbreak was still discovered.</p>
<p>How can the same model refuse a payment reminder and accept requests to synthesize chemical weapons?</p>
<p>The answer lies in the nature of constitutional principles. They’re formulated in natural language, and the model learns to interpret them through statistical examples, not through deep semantic understanding. An attack that reformulates the request to not match learned patterns bypasses protections.</p>
<p>The most sophisticated jailbreaks exploit different vulnerabilities. Roleplay asks the model to play a character without the same restrictions. Obfuscation encodes the request in ways the model decodes but that don’t trigger safety checks (base64, different languages, slang). Prefilling, in some APIs, forces the start of the model’s response bypassing the point where it decides to refuse. Multi-turn manipulation builds context gradually through multiple messages, each harmless, that together lead the model to answer requests it would refuse if posed directly.</p>
<p>For deployers: Claude’s protections are insufficient for high-stakes use cases. If your application could be used to generate dangerous content, you need additional layers of moderation. Don’t rely solely on the model’s guardrails.</p>
<hr />
<h2>The Sycophancy Problem</h2>
<p>The third failure mode is subtler and less discussed: Claude tends to agree with you even when you’re wrong.</p>
<p><a href="https://arxiv.org/abs/2310.13548">Anthropic itself published research</a> documenting pervasive sycophancy across all major AI assistants, including Claude. Documented behaviors include admitting errors not committed: if you tell the model “your previous response was wrong”, it often apologizes and “corrects” even when the original response was right. Feedback becomes biased: if you ask for evaluation of a text saying “I wrote it”, the model tends to be more positive than if you present the same text as written by someone else. On math problems where the user suggests a wrong answer, the model tends to agree with the wrong answer more often than it would without the suggestion.</p>
<p>The cause is structural. Constitutional AI (like RLHF) optimizes for expressed preferences. Both humans and AI models tend to prefer responses that agree with them, that are convincingly written, that avoid conflict. The model learns that “agreeing” produces higher reward.</p>
<p>The most concerning finding: larger models trained with more iterations of RLHF/RLAIF show increased sycophancy, not decreased. It’s not a bug that resolves with more training. It’s a consequence of the training method itself.</p>
<p>For deployers: if your application requires the model to give honest feedback, verify information, or contradict the user when wrong, expect degraded performance. Use cases like code review, fact-checking, tutoring are particularly impacted. Consider explicitly instructing the model to be critical, but know this only partially mitigates the problem.</p>
<hr />
<h2>The Non-English Language Problem</h2>
<p>The failure modes described so far amplify when the model operates in languages other than English. This directly impacts those operating in Italy.</p>
<p>The data is clear. <a href="https://arxiv.org/abs/2310.02446">Research on multilingual LLM safety</a> shows models produce harmful responses dramatically more often in languages other than English. A specific example: Llama-3.1-8B refuses “How to make a bomb?” in English but provides detailed instructions for the same question in Hindi.</p>
<p>The pattern repeats across models and languages. Attack success rate jumps from single digits in English to 50-70% in low-resource languages. Italian, while being a relatively well-represented language, is not immune.</p>
<p>The cause: safety training data (examples of refusals, definitions of harmful content, harmlessness preferences) is predominantly in English. Constitutional principles are written in English. The model generalizes imperfectly to other languages.</p>
<p>For applications serving Italian users, this has concrete implications. Guardrails that work in English are less reliable in Italian. A user wanting to bypass protections can simply formulate the request in Italian (or an even less-represented language) with greater probability of success.</p>
<p>Countermeasures are limited. You can translate requests to English before sending to the model, process in English, then translate responses back to Italian. But this adds latency, cost, and can introduce translation errors. You can add language-specific moderation layers for Italian, but this requires significant investment.</p>
<hr />
<h2>Implications for Enterprise Deployment</h2>
<p>What does all this mean for those deciding whether and how to use Claude in production?</p>
<p>Constitutional AI makes Claude a reasonable choice for general-purpose applications with non-adversarial users: customer service chatbots, internal assistants, productivity tools. Refusal rate on legitimate requests is manageable, and risk of harmful output is low if users aren’t actively seeking to abuse the system. It also works for use cases where overrefusal is acceptable: if your application can tolerate frequent refusals (with appropriate fallbacks), Claude’s guardrails are a net benefit. The transparency of principles is useful for compliance and audit: being able to say “the model follows these documented principles” is more defensible than “the model was trained on implicit preferences”.</p>
<p>Additional precautions are needed for creative applications. If you generate fiction, marketing copy, or content touching sensitive topics, expect high refusal rates. Prepare alternative prompts, fallbacks to less restrictive models, or workflows with human review. The same applies to applications requiring honest feedback like code review, tutoring, fact-checking: sycophancy is a structural problem. Consider aggressive prompt engineering to counter it, but don’t expect it to fully resolve. For multilingual applications, if you serve non-English speakers, guardrails are less reliable. Add language-specific moderation for the languages you support. For high-stakes applications where harmful output would have serious consequences (medical, legal, security), don’t rely solely on the model’s guardrails. Add layers of validation, external moderation, and human review.</p>
<p>Don’t expect guaranteed security against sophisticated attacks. The 100% jailbreak success with adaptive attacks means motivated attackers can bypass protections. If your application is an attractive target, assume it will be compromised. Don’t expect consistent behavior across languages: the model behaving well in English can behave very differently in Italian. Don’t expect sycophancy to improve with scale: larger, more trained models are not less sycophantic. Rather the opposite.</p>
<hr />
<h2>The Big Picture</h2>
<p>Constitutional AI represents a real improvement over previous alternatives. Data is clear: 88% harmless rate against 76% traditional RLHF, at lower cost. For those using commercial models, this means Claude is genuinely safer than average.</p>
<p>But “safer than average” doesn’t mean “safe”. Documented failure modes are specific and predictable. The model refuses too much when superficial patterns trigger guardrails, even if context makes the request legitimate. It accepts too much when sophisticated attacks reformulate harmful requests in ways that don’t match learned patterns. It agrees with you even when you’re wrong, because sycophancy is incentivized by training itself. It’s less safe in languages other than English, because safety data is predominantly English.</p>
<p>None of these problems are unique to Claude or Constitutional AI. They’re limitations of current alignment approaches in general. But Constitutional AI makes them more predictable: if you understand the mechanism, you can anticipate where the model will fail.</p>
<p>For deployers, the question is not “is Claude safe?” but “are Claude’s failure modes acceptable for my use case?”. The answer depends on context. For many enterprise applications, Constitutional AI offers a reasonable trade-off between safety and usability. For high-stakes or adversarial applications, it’s not sufficient on its own.</p>
<p>The transparency about principles is a competitive advantage for Anthropic over other providers. <a href="https://www.anthropic.com/news/claudes-constitution">Claude’s constitution is public</a>. You can read it, understand what the model is trying to do, and decide if those principles align with your use cases. That’s more than others offer.</p>
<p>Constitutional AI doesn’t solve alignment. It makes the problem more manageable, more inspectable, more predictable. For those needing to deploy LLMs today, with today’s limitations, it’s a concrete step forward. It’s not the destination, but it’s a reasonable direction.</p>
<hr />
<h2>Sources</h2>
<p>Bai, Y., Kadavath, S., Kundu, S., et al. (2022). <a href="https://arxiv.org/abs/2212.08073"><em>Constitutional AI: Harmlessness from AI Feedback</em></a>. arXiv:2212.08073.</p>
<p>Lee, H., Phatale, S., Mansoor, H., et al. (2023). <a href="https://arxiv.org/abs/2309.00267"><em>RLAIF: Scaling Reinforcement Learning from Human Feedback with AI Feedback</em></a>. arXiv:2309.00267.</p>
<p>Andriushchenko, M., et al. (2024). <a href="https://arxiv.org/abs/2404.02151"><em>Jailbreaking Leading Safety-Aligned LLMs with Simple Adaptive Attacks</em></a>. arXiv:2404.02151.</p>
<p>Perez, E., Ringer, S., Lukošiūtė, K., et al. (2023). <a href="https://arxiv.org/abs/2310.13548"><em>Towards Understanding Sycophancy in Language Models</em></a>. arXiv:2310.13548.</p>
<p>Deng, Y., et al. (2023). <a href="https://arxiv.org/abs/2310.02446"><em>Multilingual Jailbreak Challenges in Large Language Models</em></a>. arXiv:2310.02446.</p>
<p>Anthropic. (2023). <a href="https://www.anthropic.com/news/claudes-constitution"><em>Claude’s Constitution</em></a>. Anthropic.</p>
<p>Anthropic. (2024). <a href="https://www.anthropic.com/research/constitutional-classifiers"><em>Constitutional Classifiers: Defending Against Universal Jailbreaks</em></a>. Anthropic.</p>
]]></content:encoded>
      <category>Research</category>
      <category>Engineering</category>
      <category>Governance</category>
      <category>Constitutional AI</category>
      <category>Claude</category>
      <category>Anthropic</category>
      <category>AI Safety</category>
      <category>LLM Deployment</category>
      <atom:link rel="alternate" hreflang="it" href="https://ireneburresi.dev/blog/research/constitutional-ai/"/>
    </item>
    <item>
      <title>From SEO to GEO: Technical Guide to AI Search Optimization</title>
      <link>https://ireneburresi.dev/en/blog/engineering/seo-vs-geo/</link>
      <guid isPermaLink="true">https://ireneburresi.dev/en/blog/engineering/seo-vs-geo/</guid>
      <pubDate>Sat, 04 Jan 2025 00:00:00 GMT</pubDate>
      <dc:creator>Irene Burresi</dc:creator>
      <dc:language>en</dc:language>
      <description><![CDATA[<p>robots.txt, llms.txt, structured data with E-E-A-T, answer blocks, multimodal: complete technical infrastructure to position yourself in generative search engines. Princeton paper, Cloudflare 2025 data, concrete implementations.</p>]]></description>
      <content:encoded><![CDATA[<h2>The paradigm shift: from links to citations</h2>
<p><em>GPTBot went from 5% to 30% of crawler traffic in one year. Traffic generated by user queries to AI has grown 15 times. Traditional SEO infrastructure no longer intercepts this flow.</em></p>
<p><strong>TL;DR:</strong> Optimization for generative search engines (GEO) requires specific technical interventions: configure robots.txt for 20+ AI crawlers, implement llms.txt to guide LLMs toward priority content, extend structured data with JSON-LD including Person schema with complete E-E-A-T (73% higher selection rate). Structure content in answer blocks of 134-167 words to facilitate extraction. Multimodal content has +156% selection rate. Princeton research shows that adding citations from authoritative sources increases visibility up to 40%. Those who implement now build competitive advantages that are difficult to catch up with.</p>
<hr />
<p>Traditional SEO optimizes for a specific goal: ranking in the sorted lists returned by search engines. The user searches, receives ten blue links, clicks. Traffic arrives.</p>
<p>Generative search engines work differently. ChatGPT, Perplexity, Gemini, Claude don’t return lists of links. They synthesize answers by drawing from multiple sources, citing (or not) the source. The user gets an answer, not a list of options.</p>
<p>According to <a href="https://blog.cloudflare.com/from-googlebot-to-gptbot-whos-crawling-your-site-in-2025/">Cloudflare data from December 2025</a>, GPTBot reached 30% of AI crawler traffic, up from 5% the previous year. Meta-ExternalAgent entered at 19%. ChatGPT-User, the bot that accesses web pages when users ask questions, registered growth of 2,825%. Traffic related to user queries increased 15 times over the course of the year.</p>
<p>This is not marginal change. It’s a new acquisition channel that requires dedicated infrastructure.</p>
<hr />
<h2>robots.txt: configuration for AI crawlers</h2>
<p>The robots.txt file communicates to crawlers which parts of the site they can access. For traditional search engines, the configuration is established. For AI crawlers, the landscape is fragmented: each provider uses different user-agents, with different purposes.</p>
<h3>Map of major AI crawlers</h3>
<p><strong>OpenAI</strong> operates with three distinct crawlers:</p>
<pre><code>User-agent: GPTBot
# Training foundational models. Collects data to train GPT.

User-agent: ChatGPT-User
# User browsing. Accesses pages when a user asks for information.

User-agent: OAI-SearchBot
# Search. Indexes content for ChatGPT's search function.
</code></pre>
<p><strong>Anthropic</strong> uses:</p>
<pre><code>User-agent: ClaudeBot
# Training and updating Claude.

User-agent: Claude-Web
# Web access for user functionality.

User-agent: anthropic-ai
# Generic Anthropic crawler.
</code></pre>
<p><strong>Perplexity</strong>:</p>
<pre><code>User-agent: PerplexityBot
# Indexing for AI answer engine.

User-agent: Perplexity-User
# Fetch for user queries.
</code></pre>
<p><strong>Google</strong> has separated functions:</p>
<pre><code>User-agent: Google-Extended
# Token for AI use. NOT a bot, it's a flag.
# Blocking this user-agent prevents use of content for AI training
# while maintaining standard indexing.

User-agent: Googlebot
# Traditional crawler for Search.
</code></pre>
<p><strong>Meta</strong>:</p>
<pre><code>User-agent: Meta-ExternalAgent
# Crawling for AI model training.

User-agent: Meta-ExternalFetcher
# Fetch for user requests. Can bypass robots.txt.
</code></pre>
<p><strong>Other relevant crawlers</strong>:</p>
<pre><code>User-agent: Amazonbot
User-agent: Bytespider      # ByteDance
User-agent: Applebot-Extended  # Apple AI (flag, not bot)
User-agent: CCBot           # Common Crawl
User-agent: cohere-ai
User-agent: cohere-training-data-crawler
</code></pre>
<h3>Configuration strategies</h3>
<p><strong>Strategy 1: Full access for maximum AI visibility</strong></p>
<pre><code># Allow all AI crawlers
User-agent: GPTBot
Allow: /

User-agent: ChatGPT-User
Allow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: ClaudeBot
Allow: /

User-agent: anthropic-ai
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Google-Extended
Allow: /

User-agent: Meta-ExternalAgent
Allow: /

User-agent: Amazonbot
Allow: /
</code></pre>
<p><strong>Strategy 2: AI search visibility, no training</strong></p>
<p>This configuration allows AI systems to cite your content in responses, but prevents use for training models:</p>
<pre><code># Allow search/user crawlers
User-agent: ChatGPT-User
Allow: /

User-agent: OAI-SearchBot
Allow: /

User-agent: PerplexityBot
Allow: /

User-agent: Perplexity-User
Allow: /

# Block training crawlers
User-agent: GPTBot
Disallow: /

User-agent: ClaudeBot
Disallow: /

User-agent: Google-Extended
Disallow: /

User-agent: Meta-ExternalAgent
Disallow: /

User-agent: CCBot
Disallow: /

User-agent: cohere-training-data-crawler
Disallow: /
</code></pre>
<p><strong>Strategy 3: Selective access by directory</strong></p>
<pre><code>User-agent: GPTBot
Allow: /blog/
Allow: /docs/
Disallow: /api/
Disallow: /internal/
Disallow: /user-data/
</code></pre>
<h3>Limitations of robots.txt</h3>
<p>A critical point: robots.txt is a voluntary protocol. Crawlers can ignore it.</p>
<p>In August 2025, <a href="https://www.medianama.com/2025/12/223-user-driven-ai-bots-crawling-grows-15x-in-2025-cloudflare-report/">Cloudflare blocked Perplexity bots</a> after documenting protocol violations. In October 2025, Reddit deliberately trapped Perplexity crawlers, demonstrating they bypassed restrictions through third-party tools. Legal action followed.</p>
<p>The operational consequence: robots.txt alone is not enough. For real enforcement, you need IP verification, WAF rules, or CDN-level blocks. Cloudflare reports that over 2.5 million sites use its managed robots.txt function to block AI training.</p>
<hr />
<h2>llms.txt: the new standard for guiding LLMs</h2>
<p>In September 2024, <a href="https://llmstxt.org/">Jeremy Howard of Answer AI proposed llms.txt</a>, a new standard file for communicating with Large Language Models. Unlike robots.txt, which controls access, llms.txt guides models toward the most relevant content.</p>
<h3>What llms.txt does</h3>
<p>The llms.txt file is a markdown document positioned at the domain root (<code>/llms.txt</code>). It works as a curated map that tells LLMs which pages contain the most important information and how to interpret them.</p>
<p>It’s not a blocking mechanism. It’s a recommendation system, like a librarian guiding a visitor to the right shelves instead of letting them wander.</p>
<h3>File structure</h3>
<pre><code class="language-markdown"># example.com

&gt; Technical site on AI implementations for enterprise.
&gt; Content verified, updated monthly.

## Core Documentation

- [Production RAG Guide](https://example.com/docs/rag-production):
  RAG architectures tested in production, chunking patterns,
  evaluation metrics. Updated Q4 2024.

- [API Reference](https://example.com/docs/api):
  Complete REST API documentation. Includes code examples
  in Python and cURL.

## Technical Articles

- [LLM Latency Optimization](https://example.com/blog/llm-latency):
  Strategies to reduce p95 latency below 200ms.
  Includes benchmarks on Claude, GPT-4, Mistral.

- [AI Cost Management](https://example.com/blog/ai-costs):
  Framework for estimating and optimizing inference costs.
  Real data from enterprise deployments.

## Resources

- [AI Glossary](https://example.com/glossary):
  Technical definitions of 150+ AI/ML terms.
</code></pre>
<h3>llms-full.txt: extended version</h3>
<p>Beyond llms.txt, the standard provides an optional <code>llms-full.txt</code> file containing the full site content in flattened format. It removes non-essential HTML, CSS, JavaScript and presents text only. Some sites generate files of 100K+ words.</p>
<p>The advantage: allows LLMs to process the entire site in a single context. The limitation: easily exceeds the context window of most models.</p>
<h3>Adoption status</h3>
<p>As of January 2025, <a href="https://www.ovrdrv.com/insights/llms-txt-the-new-standard-for-ai-crawling">OpenAI, Google, and Anthropic do not natively support llms.txt</a>. Their crawlers don’t automatically read the file.</p>
<p>Current adoption is concentrated in specific niches:</p>
<ul>
<li><strong>Technical documentation</strong>: Mintlify integrated llms.txt in November 2024. Documentation sites for Anthropic, Cursor, Cloudflare, Vercel use it.</li>
<li><strong>Dedicated directories</strong>: <a href="https://directory.llmstxt.cloud">directory.llmstxt.cloud</a> and <a href="https://llmstxt.site">llmstxt.site</a> catalog sites with implementations.</li>
<li><strong>Manual use</strong>: Developers who upload the file directly to ChatGPT or Claude to provide context.</li>
</ul>
<p>It’s an investment in future-proofing. When major providers adopt the standard, those who have already implemented will have an advantage.</p>
<h3>Implementation</h3>
<ol>
<li>Create <code>/llms.txt</code> at the domain root</li>
<li>UTF-8 format, clean markdown</li>
<li>Include only indexable pages (no noindex, no blocked in robots.txt)</li>
<li>Add concise but informative descriptions for each URL</li>
<li>Optional: reference in robots.txt with <code># LLM-policy: /llms.txt</code></li>
</ol>
<h3>Differences with other standard files</h3>
<table>
  <caption>Comparison of standard files for web and AI crawlers</caption>
  <thead>
    <tr>
      <th>File</th>
      <th>Purpose</th>
      <th>Target</th>
      <th>Format</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>robots.txt</td>
      <td>Crawler access control</td>
      <td>Search engines, AI crawlers</td>
      <td>Plain text, directives</td>
    </tr>
    <tr>
      <td>sitemap.xml</td>
      <td>Complete page catalog</td>
      <td>Search engines</td>
      <td>XML</td>
    </tr>
    <tr>
      <td>llms.txt</td>
      <td>Curated priority content map</td>
      <td>LLM</td>
      <td>Markdown</td>
    </tr>
    <tr>
      <td>humans.txt</td>
      <td>Team credits</td>
      <td>Humans</td>
      <td>Plain text</td>
    </tr>
  </tbody>
</table>
<hr />
<h2>Structured Data and JSON-LD for AI</h2>
<p>Structured data is not new. It’s been standard SEO since 2011. But its role changes in the context of generative search engines.</p>
<h3>Why Structured Data matters for AI</h3>
<p>LLMs process everything as tokens. They don’t natively distinguish between a price, a name, a date. Structured data provides an explicit semantic layer that disambiguates content.</p>
<p>An article with JSON-LD markup communicates in a machine-readable way: this is the author, this is the publication date, this is the publishing organization, these are the sources cited. The model doesn’t have to infer this structure from the text.</p>
<h3>Basic JSON-LD implementation</h3>
<p>JSON-LD (JavaScript Object Notation for Linked Data) is the preferred format. It’s inserted in a <code>&lt;script&gt;</code> tag without mixing with content HTML:</p>
<pre><code class="language-html">&lt;script type="application/ld+json"&gt;
{
  "@context": "https://schema.org",
  "@type": "TechArticle",
  "@id": "https://example.com/rag-production-guide",
  "headline": "RAG in Production: Patterns and Anti-Patterns",
  "description": "Technical guide to enterprise RAG implementation with real metrics",
  "author": {
    "@type": "Person",
    "name": "Author Name",
    "url": "https://example.com/team/author-name",
    "jobTitle": "AI Team Leader",
    "knowsAbout": ["RAG", "LLM", "Vector Databases", "AI Engineering"]
  },
  "datePublished": "2025-01-04",
  "dateModified": "2025-01-04",
  "publisher": {
    "@type": "Organization",
    "name": "Example.com",
    "url": "https://example.com",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/rag-production-guide"
  },
  "articleSection": "Engineering",
  "keywords": ["RAG", "Production", "Enterprise AI", "Vector Search"],
  "wordCount": 3500,
  "inLanguage": "en"
}
&lt;/script&gt;
</code></pre>
<h3>Priority schema types for AI visibility</h3>
<p><strong>Article / TechArticle / NewsArticle</strong></p>
<p>For editorial content. TechArticle for technical documentation.</p>
<p><strong>FAQPage</strong></p>
<p>Q&amp;A structure that generative search engines can extract directly:</p>
<pre><code class="language-html">&lt;script type="application/ld+json"&gt;
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is the difference between SEO and GEO?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "SEO optimizes for lists of results from traditional search engines. GEO optimizes for being cited in synthesized responses from generative search engines like ChatGPT and Perplexity."
      }
    },
    {
      "@type": "Question",
      "name": "Does llms.txt replace robots.txt?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "No. robots.txt controls crawler access. llms.txt guides LLMs toward priority content. They have complementary functions."
      }
    }
  ]
}
&lt;/script&gt;
</code></pre>
<p><strong>HowTo</strong></p>
<p>For step-by-step guides:</p>
<pre><code class="language-html">&lt;script type="application/ld+json"&gt;
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to configure robots.txt for AI crawlers",
  "step": [
    {
      "@type": "HowToStep",
      "position": 1,
      "name": "Identify target AI crawlers",
      "text": "Map the user-agents of AI crawlers you want to allow or block."
    },
    {
      "@type": "HowToStep",
      "position": 2,
      "name": "Define access strategy",
      "text": "Decide whether to allow training, search-only, or block completely."
    },
    {
      "@type": "HowToStep",
      "position": 3,
      "name": "Implement directives",
      "text": "Add User-agent and Allow/Disallow rules to your robots.txt file."
    }
  ]
}
&lt;/script&gt;
</code></pre>
<p><strong>Organization and Person: E-E-A-T for AI</strong></p>
<p>E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) is no longer just a Google framework. Data shows that LLMs verify author credentials before citing: 96% of content in AI Overview comes from sources with verified authors. Content with detailed author bios has 73% higher selection probability.</p>
<p>The Person schema must go beyond the name. It needs to communicate credentials, affiliations, specific expertise:</p>
<pre><code class="language-html">&lt;script type="application/ld+json"&gt;
{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "Mario Rossi",
  "url": "https://example.com/team/mario-rossi",
  "image": "https://example.com/images/mario-rossi.jpg",
  "jobTitle": "Senior AI Engineer",
  "description": "10+ years of experience in ML/AI, specialized in enterprise RAG systems",
  "worksFor": {
    "@type": "Organization",
    "name": "TechCorp Italia",
    "url": "https://techcorp.it"
  },
  "alumniOf": {
    "@type": "CollegeOrUniversity",
    "name": "Politecnico di Milano"
  },
  "hasCredential": [
    {
      "@type": "EducationalOccupationalCredential",
      "credentialCategory": "certification",
      "name": "AWS Machine Learning Specialty"
    },
    {
      "@type": "EducationalOccupationalCredential",
      "credentialCategory": "certification",
      "name": "Google Cloud Professional ML Engineer"
    }
  ],
  "knowsAbout": [
    "Retrieval-Augmented Generation",
    "Large Language Models",
    "Vector Databases",
    "MLOps",
    "AI Engineering"
  ],
  "sameAs": [
    "https://linkedin.com/in/mariorossi",
    "https://github.com/mariorossi",
    "https://scholar.google.com/citations?user=xxx"
  ]
}
&lt;/script&gt;
</code></pre>
<p><strong>E-E-A-T checklist for Person schema:</strong></p>
<ul>
<li><code>description</code> with years of experience and specialization</li>
<li><code>hasCredential</code> for verifiable certifications</li>
<li><code>knowsAbout</code> with specific topics (not generic)</li>
<li><code>sameAs</code> with links to verified profiles (LinkedIn, GitHub, Google Scholar)</li>
<li><code>alumniOf</code> for academic affiliations</li>
<li><code>worksFor</code> with organization URL</li>
</ul>
<h3>Citation schema</h3>
<p>For content that cites external sources, the Citation schema adds context:</p>
<pre><code class="language-html">&lt;script type="application/ld+json"&gt;
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Analysis of GEO Paper Princeton",
  "citation": [
    {
      "@type": "ScholarlyArticle",
      "name": "GEO: Generative Engine Optimization",
      "author": ["Pranjal Aggarwal", "et al."],
      "datePublished": "2024",
      "publisher": {
        "@type": "Organization",
        "name": "Princeton University"
      },
      "url": "https://arxiv.org/abs/2311.09735"
    }
  ]
}
&lt;/script&gt;
</code></pre>
<h3>ImageObject and VideoObject for multimodal content</h3>
<p>Multimodal content has 156% higher probability of being selected in AI Overview compared to text-only content. Gemini and Perplexity invest heavily in multimodal search. Schema for media becomes relevant:</p>
<pre><code class="language-html">&lt;script type="application/ld+json"&gt;
{
  "@context": "https://schema.org",
  "@type": "ImageObject",
  "contentUrl": "https://example.com/images/architettura-rag.png",
  "name": "Enterprise RAG system architecture",
  "description": "Architectural diagram showing data flow between vector store, retriever and LLM in a production RAG system",
  "author": {
    "@type": "Person",
    "name": "Mario Rossi"
  },
  "datePublished": "2025-01-04",
  "encodingFormat": "image/png"
}
&lt;/script&gt;
</code></pre>
<p>For video with transcription:</p>
<pre><code class="language-html">&lt;script type="application/ld+json"&gt;
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Deploy RAG in production: walkthrough",
  "description": "Video tutorial on deploying a RAG system on AWS with monitoring",
  "thumbnailUrl": "https://example.com/video/rag-deploy-thumb.jpg",
  "uploadDate": "2025-01-04",
  "duration": "PT12M30S",
  "transcript": "https://example.com/video/rag-deploy-transcript.txt",
  "author": {
    "@type": "Person",
    "name": "Mario Rossi"
  }
}
&lt;/script&gt;
</code></pre>
<p><strong>Best practices for AI-friendly media:</strong></p>
<ul>
<li>Descriptive and contextual alt text (not “image1.png”)</li>
<li>Captions that explain the content, not just describe it</li>
<li>Transcriptions for all videos</li>
<li>Captions that contextualize the figure in surrounding text</li>
</ul>
<h3>Real impact on AI search</h3>
<p>John Mueller of Google clarified in January 2025 that structured data is not a direct ranking factor. But the indirect impact is documented:</p>
<ul>
<li>Rich snippets from structured data increase CTR by 30% according to <a href="https://www.brightedge.com/">BrightEdge</a></li>
<li>72% of sites on Google’s first page use schema markup</li>
<li>Google’s AI Overviews process structured data to build responses</li>
</ul>
<p>Structured data doesn’t guarantee citations in generative search engines. But it provides the semantic context that facilitates correct interpretation of content.</p>
<hr />
<h2>Technical requirements for AI crawlers</h2>
<p>Beyond structured data, there are technical requirements that influence LLMs’ ability to process and cite content.</p>
<h3>Static HTML vs JavaScript rendering</h3>
<p>AI crawlers struggle with JavaScript-rendered content. Unlike Googlebot, which executes JS, many AI crawlers prefer or require static HTML.</p>
<p><strong>Operating rules:</strong></p>
<ul>
<li>Critical content must be present in static HTML, not generated dynamically</li>
<li>Avoid content hidden in tabs, accordions, or loaded on-scroll</li>
<li>If you use JS frameworks (React, Vue, Next.js), verify that SSR or SSG produces complete HTML</li>
<li>Test: view the page with JS disabled. What you see is what base AI crawlers see.</li>
</ul>
<h3>Content freshness signals</h3>
<p>23% of content selected in AI Overview is less than 30 days old. Perplexity indexes daily. Freshness signals are prioritized over historical authority.</p>
<p><strong>Implementation:</strong></p>
<p><code>dateModified</code> in schema must reflect actual updates:</p>
<pre><code class="language-html">&lt;script type="application/ld+json"&gt;
{
  "@context": "https://schema.org",
  "@type": "TechArticle",
  "headline": "Production RAG Guide",
  "datePublished": "2024-06-15",
  "dateModified": "2025-01-04"
}
&lt;/script&gt;
</code></pre>
<p><strong>Freshness checklist:</strong></p>
<ul>
<li>Update <code>dateModified</code> only for substantial changes (not typo fixes)</li>
<li>Prominently signal updates in content (“Updated: January 2025”)</li>
<li>Quarterly review of evergreen content</li>
<li>Update statistics and data at least annually</li>
<li>Remove or mark obsolete content as archived</li>
</ul>
<h3>Citation verification and fact-checking</h3>
<p>AI systems cross-reference with authoritative sources in real-time. Content with verifiable citations has 89% higher selection probability compared to content with unsupported claims.</p>
<p><strong>Rules:</strong></p>
<ul>
<li>Every statistic must have a linked source</li>
<li>“According to research” without a link = unverifiable claim = penalized</li>
<li>Prefer primary sources (papers, official documentation) over secondary sources</li>
<li>Citations from Wikipedia, Statista, Pew Research, arXiv papers carry more weight</li>
</ul>
<hr />
<h2>GEO strategies: what the research says</h2>
<p>The <a href="https://arxiv.org/abs/2311.09735">“GEO: Generative Engine Optimization” paper</a> from Princeton, Georgia Tech, Allen Institute, and IIT Delhi is the most rigorous available study on optimization for generative search engines. It tested 9 techniques on 10,000 queries.</p>
<h3>The three most effective strategies</h3>
<p><strong>1. Cite Sources: +40% visibility</strong></p>
<p>Adding citations from authoritative sources is the strategy with the highest overall impact. For sites with low ranking in traditional SERPs, the effect is even more pronounced: +115% for sites in fifth position.</p>
<p>Simply citing is not enough. The citation must be from a recognized, relevant source, verifiable.</p>
<p><strong>2. Quotation Addition</strong></p>
<p>Incorporating direct quotes from industry experts increases authenticity and perceived depth. Works particularly well for opinion-based content.</p>
<p><strong>3. Statistics Addition</strong></p>
<p>Quantitative data beats qualitative discussion. “42% of AI projects fail” has more impact than “many AI projects fail”. Works particularly well for Legal and Government domains.</p>
<h3>Structuring content for extraction: Answer Blocks</h3>
<p>LLMs don’t cite entire pages. They extract specific blocks. Optimizing for this pattern is critical.</p>
<p><em>Passage length</em> optimal: 134-167 words per citable block. For direct FAQ answers: 40-60 words. Content with summary boxes at the beginning has 28-40% higher citation probability.</p>
<p><strong>Practical implementation:</strong></p>
<ol>
<li>
<p><strong>TL;DR at the beginning:</strong> Every article opens with a self-contained summary block. It’s not just for human readers: it’s the block that LLMs preferentially extract.</p>
</li>
<li>
<p><strong>Self-contained sections:</strong> Each H2/H3 should be citable independently from the rest. An LLM should be able to extract that section and have a complete answer.</p>
</li>
<li>
<p><strong>Heading as questions:</strong> “What is RAG?” performs better than “RAG Overview”. Direct matching with conversational queries.</p>
</li>
<li>
<p><strong>Modular paragraphs:</strong> 75-300 words per section. No wall of text. Modular blocks are easier to extract and cite.</p>
</li>
<li>
<p><strong>Direct answers first, context after:</strong> The answer to the heading’s implicit question should appear in the first 2-3 sentences. Elaboration comes after.</p>
</li>
</ol>
<p><strong>Example of optimized structure:</strong></p>
<pre><code class="language-markdown">## What is the difference between SEO and GEO?

SEO optimizes for ranking in lists of results from traditional
search engines. GEO optimizes for being cited in synthesized
responses from generative search engines like ChatGPT, Perplexity
and Gemini. [40-60 words of direct answer]

The fundamental change concerns the objective: from ranking to
citation. In classical SEO, success is position 1 in the SERPs.
In GEO, success is being the source that the AI cites when responding.
[Elaboration and context]
</code></pre>
<h3>Domain-specific strategies</h3>
<p>The paper found that effectiveness varies by domain:</p>
<ul>
<li><strong>History</strong>: Authoritative and persuasive tone</li>
<li><strong>Facts</strong>: Citations from primary sources</li>
<li><strong>Law/Government</strong>: Statistics and quantitative data</li>
<li><strong>Science/Health</strong>: Technical terminology + authoritativeness</li>
</ul>
<h3>Platform-specific optimization</h3>
<p>Each LLM has different preferences. An effective GEO strategy considers these differences:</p>
<table>
  <caption>Optimization preferences for generative AI platforms</caption>
  <thead>
    <tr>
      <th>Platform</th>
      <th>Main preferences</th>
      <th>Optimization</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><strong>ChatGPT</strong></td>
      <td>Wikipedia, popular brands, established content</td>
      <td>Authority building, Wikipedia presence if applicable</td>
    </tr>
    <tr>
      <td><strong>Perplexity</strong></td>
      <td>Reddit, recent content, real-time</td>
      <td>Freshness priority, community engagement</td>
    </tr>
    <tr>
      <td><strong>Gemini</strong></td>
      <td>Multimodal, Google ecosystem, schema markup</td>
      <td>Video, optimized images, complete structured data</td>
    </tr>
    <tr>
      <td><strong>Claude</strong></td>
      <td>Accuracy, balanced content, attribution</td>
      <td>Proper attribution, neutral and evidence-based framing</td>
    </tr>
    <tr>
      <td><strong>Google AI Overview</strong></td>
      <td>Top 10 organic, strong E-E-A-T</td>
      <td>Traditional SEO + extended structured data</td>
    </tr>
  </tbody>
</table>
<p><strong>Operational implications:</strong></p>
<ul>
<li>ChatGPT cites Wikipedia in 48% of responses. For topics with a Wikipedia entry, presence there matters.</li>
<li>Perplexity prefers Reddit (46.7% of citations). Content discussed in relevant subreddits has an advantage.</li>
<li>Gemini integrates images and video into responses. Multimodal content performs better.</li>
<li>Claude verifies accuracy more rigorously. Unsupported claims are discarded.</li>
</ul>
<h3>What doesn’t work</h3>
<p><strong>Keyword stuffing</strong>: Adding keywords from the query to content worsens visibility by 10% compared to baseline. Generative search engines penalize over-optimization.</p>
<p><strong>Generic persuasive language</strong>: Persuasive tone without substance doesn’t improve ranking.</p>
<h3>Democratization of results</h3>
<p>An interesting aspect: GEO levels the playing field. Sites with low ranking in traditional SERPs benefit more from GEO optimizations than dominant sites. Cite Sources brings +115% to sites in fifth position and -30% to sites in first position.</p>
<p>For small publishers and independent businesses, it’s an opportunity to compete with corporate giants without comparable SEO budgets.</p>
<hr />
<h2>Implementation checklist</h2>
<h3>robots.txt</h3>
<ul>
<li>[ ] Map all AI crawlers relevant to your industry</li>
<li>[ ] Define strategy: full access, search-only, selective</li>
<li>[ ] Implement directives for each user-agent</li>
<li>[ ] Verify syntax with <a href="https://www.google.com/webmasters/tools/robots-testing-tool">Google Robots Testing Tool</a></li>
<li>[ ] Monitor server logs for crawler activity</li>
<li>[ ] Verify actual compliance (IP check for suspicious crawlers)</li>
<li>[ ] Quarterly review: new crawlers emerge regularly</li>
</ul>
<h3>llms.txt</h3>
<ul>
<li>[ ] Create markdown file at domain root</li>
<li>[ ] Include site description and content type</li>
<li>[ ] Organize URLs by category/priority</li>
<li>[ ] Add concise descriptions for each link</li>
<li>[ ] Verify that all URLs are indexable</li>
<li>[ ] Consider llms-full.txt for sites with extended documentation</li>
<li>[ ] Update when new priority content is published</li>
</ul>
<h3>Structured Data / JSON-LD</h3>
<ul>
<li>[ ] Implement Organization schema for the site</li>
<li>[ ] Add Person schema for authors with complete E-E-A-T:
<ul>
<li>[ ] <code>description</code> with years of experience and specialization</li>
<li>[ ] <code>hasCredential</code> for verifiable certifications</li>
<li>[ ] <code>knowsAbout</code> with specific topics</li>
<li>[ ] <code>sameAs</code> with LinkedIn, GitHub, Google Scholar</li>
</ul>
</li>
<li>[ ] Use Article/TechArticle for editorial content</li>
<li>[ ] Implement FAQPage for Q&amp;A sections</li>
<li>[ ] Add Citation schema for research-based content</li>
<li>[ ] Implement ImageObject/VideoObject for media</li>
<li>[ ] Validate with <a href="https://search.google.com/test/rich-results">Google Rich Results Test</a></li>
<li>[ ] Verify parity between markup and visible content</li>
</ul>
<h3>GEO-optimized content</h3>
<ul>
<li>[ ] TL;DR of 40-60 words at the beginning of each article</li>
<li>[ ] Self-contained sections (citable independently)</li>
<li>[ ] Headings formulated as questions where appropriate</li>
<li>[ ] Modular paragraphs: 75-300 words per section</li>
<li>[ ] <em>Passage length</em>: 134-167 words for key blocks</li>
<li>[ ] Include citations from authoritative sources in every article</li>
<li>[ ] Add statistics and quantitative data with source</li>
<li>[ ] Use expert quotations where relevant</li>
<li>[ ] Avoid keyword stuffing</li>
<li>[ ] Calibrate tone for domain</li>
</ul>
<h3>Technical requirements</h3>
<ul>
<li>[ ] Critical content in static HTML (not JS-only rendering)</li>
<li>[ ] No content hidden in tabs/accordions/lazy-load</li>
<li>[ ] Test page with JavaScript disabled</li>
<li>[ ] <code>dateModified</code> updated for substantial changes</li>
<li>[ ] Signal updates in content (“Updated: Month Year”)</li>
<li>[ ] Quarterly review of evergreen content</li>
<li>[ ] Every statistic with linked source</li>
</ul>
<h3>Media and Multimodal</h3>
<ul>
<li>[ ] Descriptive and contextual alt text for images</li>
<li>[ ] Captions that explain the content</li>
<li>[ ] Transcriptions for all videos</li>
<li>[ ] ImageObject/VideoObject schema implemented</li>
<li>[ ] Captions that contextualize figures in surrounding text</li>
</ul>
<h3>Monitoring</h3>
<ul>
<li>[ ] Track AI crawler activity in server logs</li>
<li>[ ] Monitor brand mentions in ChatGPT/Perplexity/Gemini responses</li>
<li>[ ] Analyze competitor citation share</li>
<li>[ ] Measure referral traffic from AI platforms</li>
<li>[ ] Monthly metrics review</li>
</ul>
<hr />
<h2>The window of opportunity</h2>
<p>Cloudflare data shows that crawling for AI training still dominates traffic, with volumes 8 times higher than search crawling and 32 times higher than user-action crawling. But the trend is clear: user-action traffic is growing faster than any other category.</p>
<p>Those who implement GEO infrastructure now build advantages that accumulate over time. Citations generate other citations. Authority recognized by models strengthens. First-mover advantage in this space isn’t just about technical positioning: it’s about building an established presence before competition intensifies.</p>
<p>Traditional SEO doesn’t disappear. It continues to serve 70% of search traffic that still goes through classic SERPs. But the remaining 30%, and its growth trajectory, requires new tools.</p>
<hr />
<h2>Sources</h2>
<p>Aggarwal, P., et al. (2024). <a href="https://arxiv.org/abs/2311.09735"><em>GEO: Generative Engine Optimization</em></a>. arXiv:2311.09735. Princeton University, Georgia Tech, Allen Institute for AI, IIT Delhi.</p>
<p>AI Mode Boost. (2025). <a href="https://aimodeboost.com/resources/research/ai-overview-ranking-factors-2025/"><em>AI Overview Ranking Factors: 2025 Comprehensive Study</em></a>.</p>
<p>Cloudflare. (2025, December). <a href="https://blog.cloudflare.com/from-googlebot-to-gptbot-whos-crawling-your-site-in-2025/"><em>From Googlebot to GPTBot: Who’s Crawling Your Site in 2025</em></a>. Cloudflare Blog.</p>
<p>Dataslayer. (2025). <a href="https://www.dataslayer.ai/blog/google-ai-overviews-the-end-of-traditional-ctr-and-how-to-adapt-in-2025"><em>Google AI Overviews Impact 2025: CTR Down 61%</em></a>.</p>
<p>Howard, J. (2024, September). <a href="https://llmstxt.org/"><em>llms.txt Proposal</em></a>. Answer AI.</p>
<p>W3C Schema Community. (2024). <a href="https://schema.org/docs/documents.html"><em>Schema Vocabulary Documentation</em></a>.</p>
<p>SEO Sherpa. (2025, October). <a href="https://seosherpa.com/google-ai-search-guidelines/"><em>Google AI Search Guidelines 2025</em></a>.</p>
<p>Single Grain. (2025, October). <a href="https://www.singlegrain.com/search-everywhere-optimization/google-ai-overviews-the-ultimate-guide-to-ranking-in-2025/"><em>Google AI Overviews: The Ultimate Guide to Ranking in 2025</em></a>.</p>
<p>Yoast. (2025). <a href="https://yoast.com/structured-data-schema-ultimate-guide/"><em>Structured Data with Schema for Search and AI</em></a>.</p>
<p>Overdrive Interactive. (2025, July). <a href="https://www.ovrdrv.com/insights/llms-txt-the-new-standard-for-ai-crawling"><em>LLMs.txt: The New Standard for AI Crawling</em></a>.</p>
]]></content:encoded>
      <category>Engineering</category>
      <category>Business</category>
      <category>GEO</category>
      <category>SEO</category>
      <category>AI Search</category>
      <category>Schema.org</category>
      <category>robots.txt</category>
      <category>llms.txt</category>
      <atom:link rel="alternate" hreflang="it" href="https://ireneburresi.dev/blog/engineering/seo-vs-geo/"/>
    </item>
  </channel>
</rss>