This is the article that documents the site it lives on. It will never be finished, which is the point. A laboratory that only publishes its conclusions is a brochure with footnotes. What follows is the log: what was decided, what shipped, what broke, and what the next version has to answer for.
Why this exists at all
The domain came first, which is an honest thing to admit. By Robots For Robots is a good name, and good names tend to generate obligations. The obligation it generated was this: if you are going to call something that, you had better actually build for the robots.
That turns out to be a real subject rather than a joke. The audience for a web page has quietly reordered itself. A page is fetched, stripped of presentation, split into passages, embedded and filed, and only then, maybe, surfaced to a person as three sentences in an answer somewhere else entirely. The reader that arrives first is a parser. Almost nothing in the standard web-design process is addressed to it.
So the premise of the site is narrow enough to test: build a site whose primary audience is the machine, make the human-visible layer a demonstration of that, and see what the constraint produces. Not a manifesto. A constraint, applied to an actual site, in public.
Every instrument built here is pointed at this site before it is pointed at anyone else's. The readability probe scores these pages; the machine view reads this DOM. Both have already forced changes to the words above them. A test too embarrassing to run on the home page is not ready.
The build log
v0.0 · Premise
Deciding what it is
Three candidate shapes were on the table: a blog about AI search, a portfolio of experiments, or a laboratory. The first dies the week the posting stops. The second needs finished work to show. The third can be perpetually half-built without lying about it, which matched both the subject and the amount of time available for it.
The laboratory framing also solved the hardest question: what makes a page here worth indexing. A post asserting things about AI search is worth very little; there is an enormous amount of that already. An instrument you can open and run is worth something, because it can be wrong in public.
v0.1 · First build
The machine view
The first thing built was the only feature the premise demanded: a switch on every page that shows you the page as its intended audience sees it. Semantic regions get outlined and labelled, headings declare their level, marked entities light up, and a dock opens with four readouts: the heading outline, the structured data, the extraction payload a crawler would keep, and the passages a retrieval pipeline would cut the page into.
The rule that made it worth shipping: none of it is hand-authored. Every panel reads the live DOM at the moment you open it. If a heading level is skipped, the dock says so. If the JSON-LD will not parse, it prints the parser error instead of the pretty version. An instrument that can only flatter the page it ships on is set dressing.
The masthead got a second piece of the same idea: a telemetry strip reporting what the site can actually observe about your visit. Agent classification, document size, token estimate, structured-data blocks, parse time. It is computed in the browser and transmitted nowhere, and the honest part is how little it knows: a user-agent string and a viewport. That is roughly what any site knows before it adds analytics of its own.
v0.1 · Defect
The whitespace that was not there
The outline panel shipped reading each heading with textContent. The home page headline is marked up across two lines, so the panel confidently reported the site's own <h1> as By RobotsFor Robots. The site's flagship instrument got the site's own name wrong on the first run.
The cause is ordinary and the lesson is not. textContent concatenates raw text nodes and does not insert the whitespace that a line break renders. The space you see between those two words does not exist in the document; it is produced at paint time. Switch to innerText and you get the spacing back, but you also inherit text-transform, so every heading comes back in capitals that were never typed.
Neither property is lying. They answer different questions, and a page has no single canonical text. It has as many as there are extractors willing to disagree about whitespace. Which is a small, concrete version of the entire problem this site is about. The fix was to stop asking either property and walk the nodes: clone the element, reinsert explicit boundaries, read the result.
v0.1 · Defect
The observer changed the page
Machine view labels each region with a tag floated just above it. On the masthead, the tag never appeared. The masthead had overflow: hidden, set earlier to contain a decorative grid, and it was clipping the annotation.
So the layer added to inspect the page was being silently edited by the page. The instrument was not wrong; it was being censored by a line of CSS written for an unrelated reason. Anything built to observe a system from inside that system inherits the system's constraints, and will do it quietly.
v0.1 · Shipped
What is actually live
- Machine view on every page, with the four-panel inspector.
- Session telemetry on the masthead, computed client-side, stored nowhere.
- The readability probe. Paste any page's HTML and get a structural score with the reasoning shown.
- Machine-facing endpoints: llms.txt, sitemap.xml, feed.json, JSON-LD throughout.
- No build step, no framework, no dependencies, and no images inside any page.
What is still unanswered
Four things are unresolved, and writing them down is cheaper than pretending otherwise.
Does any of this move the needle?
The honest answer today is that nobody knows, including the people selling certainty about it. The site asserts that machine-legible structure gets cited more often. That is a hypothesis, and the only way it stops being one is a long, dull measurement against pages that differ in structure and nothing else. That measurement is queued as EXP-003 and will take months to say anything.
Is the machine view a tool or a toy?
It is pleasant to flip. Whether anyone acts on what it shows them is a different question, and the current answer is probably no. It describes rather than prescribes. The next version should rank what it finds by how much it would actually change an extraction, instead of listing everything evenly.
Who is this for?
Unresolved on purpose. It reads as though it is for practitioners, but the thing it is really testing is whether a site built this way gets picked up and quoted accurately by the systems it is about. The readership that matters may not be human, which is either the entire joke or the entire thesis.
What does a laboratory owe its failures?
The rule is that wrong stays up with the date attached. That is easy to write on day one, when there is nothing embarrassing published yet. The rule gets tested the first time an experiment here produces a confident number that turns out to be nonsense.
Next
Version 0.2 has a short list: make the machine view rank its findings rather than list them, start the citation-drift measurement so it has some history by spring, and publish the crawler ledger: which crawlers actually arrive here, how often, and what they take. That last one requires server logs this site does not yet collect, which is its own small irony.
This page gets a new entry whenever something changes. Nothing above gets deleted.
Hit Shift + M, or the switch in the masthead, to see this article the way a parser does, including the heading outline that took two attempts to get right.