Published Oct 31, 2026

We stopped guessing SEO and started building llms.txt answer routing

By Kevin Champlin

The day our “SEO” started lying to users

We hit this exact failure mode on a regulated beverage portfolio website (think: approvals, compliance copy, strict claims). We’d done the usual things—content refreshes, metadata cleanup, structured data—then watched performance dip on the pages that mattered most to “What can I drink with this?” style questions.

The strange part wasn’t rankings. It was the answer previews embedded in search and assistant experiences. The assistant was pulling confident snippets that were technically on the site, but from the wrong variant of the content. One campaign page had a “for informational purposes” paragraph that should never be used in marketing guidance; the assistant treated it as generic.

We measured the damage: for a core question set of ~120 prompts, we saw a 38% incorrect-attribution rate (the assistant referenced the right topic but cited the wrong guidance section). The business team didn’t call it SEO. They called it “the system is hallucinating.” Engineering called it “cache + retrieval drift.” Same problem.

That moment is when we stopped treating answer-engine optimization like a content-writing contest and started treating it like routing. If you want reliable answers, you need deterministic sources, not “good vibes.”

Conventional wisdom gets this wrong: SEO isn’t the interface anymore

Most teams still optimize for “what Google might do.” That’s already insufficient for answer engines, and it fails in two ways:

  • Search-style relevance isn’t the same thing as answer trust. A snippet can rank well and still be unsafe for direct Q&A use.
  • Retrieval is contextual. The assistant chooses a passage, then wraps it in language that sounds authoritative. If your content doesn’t clearly declare “this is the canonical answer source,” the model will improvise.

Our position: LLM-aware discovery beats human-guessable optimization. If you’re using llms.txt-style discoverability (or building your own variant), you can move from “we hope the model finds the right page” to “we tell the system exactly which pages are authoritative.”

What we’re building instead: llms.txt as answer routing, not a sitemap clone

We built an internal “answer routing” system for our applied-AI products (and used it immediately on client modernization work). The core idea:

  • llms.txt declares authoritative answer domains—down to section-level feeds when needed.
  • An answer router maps incoming questions to the correct knowledge set and retrieval strategy.
  • We enforce a kill-switch and a budget guardrail so we never auto-serve unverified claims.

Instead of just “publishing content,” we publish a contract between your content and the assistant that reads it.

How llms.txt changes the retrieval game

We treat llms.txt like configuration for third-party and self-hosted retrieval pipelines. In practice, that means:

  • Clear canonical boundaries: which pages are for “marketing guidance,” which are “technical specifications,” which are “FAQ references,” and which are “legal disclaimers.”
  • Stable URLs: no reliance on ephemeral tracking query strings. If you require query params to render the canonical text, assistants will pick the wrong URL form.
  • Region- and policy-aware feeds: a regulated brand might have different claims by region. We expose the correct subset instead of expecting the model to deduce compliance rules.

Most teams do the “list a domain, add a sitemap URL” thing. That’s not enough. The real win comes from making the assistant’s retrieval less creative.

The concrete failure and the fix we shipped

In the beverage case, the issue was that multiple sections shared similar headings (“Serving suggestions,” “Pairing guidance”), and the “wrong” section had slightly higher lexical overlap for the prompt templates.

Our first attempt was classic: tighten prompt instructions and add more canonical tags. It helped, but the rate only dropped from 38% to 29%. That told us the retrieval layer was still selecting unsafe passages.

The fix was structural:

  • We introduced an answer index that groups content by intent (guidance vs. disclaimers vs. specs) rather than by page.
  • We generated llms.txt entries that point retrieval to those intent groups.
  • We added a “claim safety” gate: if the retrieved chunk is from a disclaimer-labeled group, the system refuses to present it as advice.

After shipping, the incorrect-attribution rate fell to 6.5% on the same prompt set. That’s not “the model improved.” It’s that we stopped feeding it ambiguous material.

Answer-engine optimization is an engineering system, not an SEO tactic

If you’re implementing this in a stack that includes WordPress/WooCommerce, headless WP, or Laravel, here’s what we learned the hard way.

WordPress / WooCommerce: stop letting templates masquerade as content

On WordPress, the real production problem is not “missing metadata.” It’s that the assistant reads rendered HTML fragments that can be template-generated and non-authoritative. We’ve seen:

  • Same CSS class, different meaning across templates.
  • FAQ answers overridden by theme blocks.
  • WooCommerce tabs where the content exists but differs by locale and cache state.

Our approach: create a “canonical answer view” for each intent. Don’t rely on theme markup. Then expose those views through llms.txt so retrieval has an unambiguous target.

Headless WP: performance matters because retrieval fails fast

Answer engines often fetch multiple resources. If your headless endpoint is slow, you don’t just lose performance—you increase retrieval inconsistency. In one modernization sprint, we improved average response time from 860ms to 240ms (measured at the API gateway). Two days later, our assistant’s citation accuracy improved by ~12% because the retrieval pipeline stopped timing out and falling back to lower-quality cached results.

So yes: answer-engine optimization still needs good latency engineering. It’s just not the classic “SEO speed score.” It’s “does retrieval consistently land on the right chunk.”

Laravel: build the router like a circuit breaker

In our Laravel-based stack (we use it across systems like AI Showcase and internal tools), we treat answer routing as a reliability problem:

  • When llms.txt parsing fails or the router can’t confirm the intent group, we degrade to a safe mode (no direct claims, only links to canonical content).
  • We cache with explicit version keys so you don’t serve stale intent mappings after a content deploy.
  • We log “retrieval provenance” for every answer: URL, intent group, chunk hash, and policy gate result.

The real reason these break in production is cache key collisions plus silent failures. A single overly broad cache key can route five distinct question types to the same answer pool. That’s how you get confident but wrong responses at scale.

llms.txt + answer-engine optimization: the checklist we actually use

  • Define intent groups (guidance, specs, FAQ reference, disclaimers) and keep them stable.Expose canonical URLs that do not depend on tracking params or transient render state.
  • Version your answer routing so caches can’t mix mappings across deploys.
  • Enforce policy gates (claim safety) before you present retrieved text as advice.
  • Measure prompt-level accuracy on a fixed test suite; don’t rely on aggregate rank metrics.

Why we think this matters more than “more content”

More content helps when the system can find it. But if the assistant can find multiple plausible chunks, “more content” increases ambiguity unless you also improve discovery and routing.

We’d rather ship fewer pages with a clearer answer contract than publish a bigger library of similarly titled sections. That’s the anti-pattern we keep seeing: teams optimize the writing, not the retrieval behavior.

What we’re doing next

We’re expanding our router so llms.txt not only declares sources, but also exposes structured intent mapping to our internal pipelines. The goal is simple: reduce citation drift without turning every content update into a manual audit.

And we’ll keep the same reliability stance: if we can’t prove the source group is correct for the question intent, we don’t answer—we route the user to the canonical explanation.

Monday-morning quote: “SEO isn’t just about what ranks anymore—it’s about making answer engines route to the right source every time, and llms.txt is where we start.”

Free Tool

See exactly what AI costs — across every provider.

MyTokenTracker is a free, multi-provider intelligence platform with live pricing across 100+ models. Compare Claude, GPT-4o, Gemini, and more side-by-side — built for developers evaluating models, teams tracking API spend, and founders building AI-native products who want to stay cost-aware before it becomes a line item worth explaining.