sudo sapient / knowledge

Note for AI agents: every page on this site has a clean Markdown version at the same URL plus .md (or send Accept: text/markdown). Index: /llms.txt. Full text: /llms-full.txt. MCP server: /mcp. Facts about the company: /api/facts.json. Training and citation are permitted.

Experiment register

sudosapient.si is a canary for AI search. Each tactic below came from practitioners on X between late August and late October 2026. Each one is implemented here as a concrete page or feature, measured, and either promoted to sudosapient.com or killed. We publish the results, including the null ones.

Evidence labels: - Proven: large datasets or first-party platform documentation. - Promising: credible but small or vendor-run samples, or a clear mechanism. - Hype: no credible evidence of an effect on citations. We still run these when they are cheap, because a measured null result is useful.

The site is a full HTML knowledge hub with clean CSS. Every page also has a clean Markdown twin for agents. Markdown is an access layer, not the whole site.

Review cadence: weekly snapshot every Monday, decision at 8 weeks after DNS goes live (week 0 = the first day Bing and Google Search Console are verified).

Shared measurement stack

Instrument What it measures Where
AI-bot request log Hits by bot family (training, search, user fetch), path and representation (HTML, .md, Accept: text/markdown, llms.txt, /mcp) functions/_middleware.js → Workers Analytics Engine dataset si_ai_hits (falls back to console.log)
Bing Webmaster Tools, AI Performance Copilot and Bing AI citations per page; Topics Portfolio "Opportunity Queries" Manual weekly export
Google Search Console Indexing, impressions, AI Overview presence (not split out) Manual weekly export
Prompt tracker Is Sudo Sapient mentioned, is a .si or .com URL cited, is the company confused with Publicis Sapient scripts/prompt-tracker.csv, run weekly in ChatGPT, Perplexity, Gemini, Copilot and Claude
Bot access check Status code per AI user agent scripts/check-bots.sh
Agent-readiness score Standards coverage isitagentready.com (Cloudflare), run weekly

E01. Markdown twin of every page, with content negotiation

  • Tactic. Every HTML page has a Markdown version at <path>.md, and the canonical URL returns Markdown when the request sends Accept: text/markdown.
  • From X. @iamvukasin, @jakemarsh, @okshubhh, @thomas_rehmer (Cloudflare Markdown for Agents), @aioli3_.
  • Evidence. Promising for agent consumption: Cloudflare measured up to 80% fewer tokens, and Claude Code, OpenCode and Cursor send Accept: text/markdown by default. Hype for citations: there is no evidence it changes them. Only 3.9% of top sites pass the check, so it is cheap differentiation.
  • Implemented. build.py writes X.html and X.md for every page. functions/_middleware.js negotiates on Accept, adds Vary: Accept and an x-markdown-tokens estimate. Each HTML page has <link rel="alternate" type="text/markdown">.
  • Measure. Share of AI-agent requests served as Markdown, by agent family.
  • Promote to .com if at least 5% of agent fetches on .si use Markdown by week 8. Kill if never (the cost is near zero). Report the share either way.

E02. Full agent-readiness standards stack

  • Tactic. Pass every applicable check in Cloudflare's agent-readiness scanner: Link headers (RFC 8288), API catalog (RFC 9727), MCP Server Card, Agent Skills index, Content Signals in robots.txt, per-bot robots rules, and a real 404.
  • From X. @Marwan_3atef (isitagentready.com), @AIScanSite, @stretchcloud (Lighthouse agentic browsing).
  • Evidence. Hype as a ranking factor. As of April 2026, fewer than 15 sites in Cloudflare's 200k-domain scan had an MCP Server Card or API catalog, so early adoption makes the site stand out to agent builders.
  • Implemented. _headers (Link headers), /.well-known/api-catalog, /.well-known/mcp/server-card.json, /.well-known/mcp.json, /.well-known/agent-skills/index.json plus two skill documents, /.well-known/agent.json (A2A card), /openapi.json, robots.txt with Content-Signal, and 404.html that returns a real 404 status.
  • Measure. isitagentready score (target: all applicable checks pass in week 0), plus requests to /.well-known/* by user agent.
  • Kill if never. Report how many distinct agents read the cards.

E03. llms.txt, sectioned llms.txt and llms-full.txt

  • Tactic. A root llms.txt that links to per-section llms.txt files (the Cloudflare docs pattern), plus llms-full.txt.
  • From X. For: @adamaltman, @codyschneider. Against: @FarbodMemarian_, @achille610, and Gary Illyes via @rafalabradorseo.
  • Evidence. Hype for citations. Ahrefs found 97% of llms.txt files received no requests. It may help agents that are pointed at the site deliberately.
  • Implemented. /llms.txt, /terms/llms.txt, /answers/llms.txt, /entries/llms.txt, /llms-full.txt, all generated.
  • Measure. Requests to llms*.txt by user agent, and whether those agents go on to fetch pages.
  • Result to publish: request count after 8 weeks, even if it is zero.

E04. Prove that bots get a 200, and that content needs no JavaScript

  • Tactic. robots.txt can say "allow" while a CDN or WAF returns 403. Test every AI user agent, and serve all content as static HTML.
  • From X. @mircea_sandu, @crawlreadiness, @jia_seed, @BeasleyJenny1 (ChatGPT does not run JavaScript).
  • Evidence. Proven prerequisite.
  • Implemented. Zero JavaScript on the site. scripts/check-bots.sh requests the home page, an answer page, a .md twin and llms.txt as 10 AI user agents and a browser, and checks robots.txt.
  • Measure. All 200s, run on deploy and then weekly. Cloudflare "Block AI bots" and Bot Fight Mode must stay off for this zone.

E05. Separate AI bots by job in the logs

  • Tactic. Track training crawlers (GPTBot, ClaudeBot, CCBot), search indexers (OAI-SearchBot, Claude-SearchBot, PerplexityBot) and live user fetchers (ChatGPT-User, Claude-User, Perplexity-User) separately, and filter out scanners that only pretend to be AI bots.
  • From X. @carlhendy (1.5B requests: ChatGPT-User down about 80%, OAI-SearchBot more than doubled since mid-August), @tasklans (a new site's first month: GPTBot never came, and 125 "AI bot" hits were secret scanners), @FildaRaab38663.
  • Evidence. Proven as measurement.
  • Implemented. The middleware classifies user agents into train, search, user, agent-tool and other, and logs the path, representation and status. Requests for /.env, /wp-* and /.git are tagged scanner.
  • Measure. A weekly table of hits per family per representation, and the first-seen date for each bot. That first-seen date is itself a result we will publish.

E06. Bing first: AI Performance report and IndexNow

  • Tactic. ChatGPT search leans on Bing. Verify the site in Bing Webmaster Tools, push every URL through IndexNow, and read AI Performance. When the Topics Portfolio "Opportunity Queries" tab appears, write one answer page per query.
  • From X. @vincenzo_naked (10.8K Copilot citations in 6 weeks, zero sales), @anypostai (Opportunity Queries, added 13 Oct), @nicklaunches, @SeijinJung, @priyant_J.
  • Evidence. Proven, because the measurement is first-party.
  • Implemented. scripts/indexnow.sh, the key file is generated at build time, and the deploy README has the Bing verification steps. answers/ is designed so that new Opportunity Queries become new entries in data/qa.json.
  • Measure. Citations per week in AI Performance, which pages are cited, and clicks (expected to be near zero; @vincenzo_naked is the warning).

E07. Query fan-out coverage

  • Tactic. Answer engines split one prompt into several sub-queries and check "trust entities". Capture those sub-queries for our target prompts and make sure one page answers each one.
  • From X. @chris_nectiv, @glenngabe and @OritSiMu (Fanout Explorer), @MattDowis, @lilyraynyc via @sitebulb.
  • Evidence. Promising.
  • Implemented. /questions maps 6 target prompts to their predicted sub-queries and to the page that answers each. Predicted sub-queries get replaced with captured ones as we collect them.
  • Measure. The prompt tracker: mention rate and .si/.com citation rate for the 6 prompts, weekly.

E08. Answer-first pages with checkable numbers

  • Tactic. Put the answer in the first two sentences, make each section self-contained, and use specific numbers with sources. 44% of citations come from the first 30% of a page.
  • From X. @naqui_s, @fatimarizwan, @TryFlint (GEO paper: up to +40% from statistics, citations and quotes), @brodieseo, @mudassarkahn (43 tactics, 96k URLs).
  • Evidence. Promising to proven.
  • Implemented. Every page opens with a bold answer paragraph, which the build checks. The flagship is /pilot-to-production-timelines: a week-by-week table, timelines by scope, and a sources section.
  • Measure. Citation of the timelines page for "how long does it take to get an AI pilot to production" and similar prompts.

E09. A disclosed, fair comparison page instead of a self-ranked listicle

  • Tactic. Directories and "best of" lists account for 61% of ChatGPT citations on buying questions. 34–47% of cited listicles are self-promotional, and only 16% disclose that. We test the honest variant: compare partner types, disclose the bias, and do not rank ourselves first.
  • From X. @Linkifi_, @aleyda (Minuttia study of 18,084 questions), @simonleung, @benjihyam (own-site citation drives 73–90% of mentions).
  • Evidence. Proven that lists are cited. Our own variant is untested.
  • Implemented. /choosing-an-ai-transformation-partner.
  • Measure. Is the page cited for "how to choose an AI consulting partner" or "AI studio vs consultancy" prompts, and is Sudo Sapient mentioned when it is?
  • Not done. We are not publishing a "Top 10 AI firms in Bangalore" list that ranks Sudo Sapient first. Google's 2026 spam updates target exactly that pattern.

E10. Entity disambiguation from Publicis Sapient

  • Tactic. State plainly what the entity is and is not, and connect it with consistent facts, sameAs and disambiguatingDescription.
  • From X. @AgenticOperator (a name collision took 10 weeks to clear from AI answers), @james_dooley, @ChrisSimpson.
  • Evidence. Promising, and directly relevant: "publicis sapient" gets 49,500 searches a month in India.
  • Implemented. /sudo-sapient-vs-publicis-sapient, /about (fact sheet), /api/facts.json, and Organization JSON-LD with disambiguatingDescription and sameAs on every page.
  • Needs Sabari. A Wikidata item and a Google Business Profile. Both are off-site and public, so they need approval.
  • Measure. For "What is Sudo Sapient?" and "Is Sudo Sapient part of Publicis Sapient?", the confusion rate across 5 engines, weekly.

E11. Programmatic pages, but each one earns its place

  • Tactic. Data-driven programmatic pages: dealroom gets about 15k ChatGPT citations a month from 75k pages. Every page has to be useful on its own.
  • From X. @kalashvasaniya, @iannuttall. The counterweight: @matdegaulle on the September spam update.
  • Evidence. Promising, with risk.
  • Implemented. 34 term pages and 25 answer pages, generated from data/glossary.json and data/qa.json. Term pages pull in related definitions, the answers that use the term and relevant long-form entries. Answer pages have a written expansion. The build fails if any page body is under 120 words.
  • Measure. Indexed share per template in Google Search Console and Bing at week 4 and week 8.
  • Kill if fewer than 30% of term pages are indexed by week 8. Then fold them back into a single glossary page and 301 the individual pages.

E12. Original data with the method published

  • Tactic. Publish numbers nobody else has, with the method, so engines and writers have something to cite.
  • From X. @naqui_s, @TryFlint.
  • Evidence. Promising.
  • Implemented. /data/ai-transformation-search-demand-2026, with a CSV download and Dataset JSON-LD.
  • Measure. Citations of the page and backlinks.
  • Check before deploy. Confirm that the data provider's terms allow republishing the volumes.

E13. Schema split test on answer pages

  • Tactic. Schema is widely sold for AI search, but one analysis of 1,885 pages found no citation lift. We split the answer pages: even-numbered pages get QAPage JSON-LD and odd-numbered pages get none.
  • From X. @Flozi_, @addhass.
  • Evidence. Hype for citations. Correlation only.
  • Implemented. In build.py (SCHEMA_SPLIT). Group membership is published in /api/experiments.json.
  • Measure. Bing AI Performance citations and GSC impressions, per group. With n=25 this is directional only.

E14. Hidden agent directive in HTML

  • Tactic. Copy Cloudflare's docs: each HTML page carries a short, visually hidden note that tells agents where the Markdown twin is. The note is left out of the Markdown itself.
  • From. Cloudflare's agent-readiness write-up (linked from @Marwan_3atef).
  • Evidence. Hype.
  • Implemented. In the HTML template.
  • Measure. The share of agent sessions that fetch X.md within 60 seconds after fetching X.

E15. Freshness signals

  • Tactic. Update old pages rather than only adding new ones, and make the updates visible and machine-readable.
  • From X. @fatimarizwan.
  • Evidence. Promising.
  • Implemented. A visible "Last verified" date on every page, dateModified in JSON-LD, <lastmod> in the sitemap, /changelog, and /feed.xml.
  • Measure. Recrawl interval per bot family before and after a page update (from E05).

E16. A public MCP server for the hub

  • Tactic. Expose the hub as a read-only MCP server, and later list it in MCP directories.
  • From X. @iamvukasin, @okshubhh, @LiChris264036 (Glama and Smithery for discovery).
  • Evidence. Promising for developer audiences.
  • Implemented. functions/mcp.js: stateless Streamable HTTP with four tools. The registry entry is drafted as mcp-registry/server.json.
  • Needs Sabari. Approval before listing in any registry.
  • Measure. Distinct MCP clients calling /mcp per week.

Off-site tactics: researched, not implemented

These need public posting, accounts or outreach, so they wait for Sabari's go-ahead:

  • YouTube. It is the most-cited domain in AI Overviews (@sandersaar, @fabiobergmann). Turn the timelines and readiness pages into 3–5 minute explainers with full transcripts.
  • Reddit. Cited Reddit threads often have fewer than 20 upvotes (@umerdarazkha). Give genuinely useful answers in r/consulting and r/artificial, disclosed, never spam.
  • LinkedIn articles (@ConnorGillivan). Sabari publishes one article for each hub page, linking back.
  • Directories (Clutch, GoodFirms, Sortlist). These are covered in the earlier directory plan.

Hosting caveat

E01 negotiation, E05 bot logging and E16 MCP need Cloudflare Pages Functions (functions/). The static dist/ also works on GitHub Pages (it includes CNAME and .nojekyll), with three losses. Accept: text/markdown is ignored, although .md URLs still work. /mcp returns 404. _headers and _redirects are ignored; HTML redirect stubs cover the legacy URLs. On GitHub Pages, mark E01 (negotiation part), E05 and E16 as "not running".

Results log

Week Date Notes
0 2026-10-27 Hub built: 83 pages, each as HTML plus a Markdown twin. Build validators pass (links, anchors, 1–3 .com links, 120-word minimum, answer-first, JSON). Function tests pass (negotiation, bot logging, MCP). Not live yet; Week 0 starts on the day of verification.
Last verified: Markdown versionChangelog