The machine-readable profile
A personal site that treats AI agents as the primary audience and people as the secondary one. The home page is a near-empty screen that tells a human to go ask their model, and everything below it is written for the model.
The idea
Increasingly, the first reader is not a person
Recruiters paste profiles into a model. Candidates research companies through one. Agents will read a site before a human ever sees it. Most personal sites are still built entirely for the human and leave the machine to scrape prose out of collapsed accordions.
So this one inverts the priority. The canonical record is structured data. The prose is a rendering of it. And rather than asking a visitor to be impressed, the page hands their model something to do: arguments to stress-test, interview questions written to resist flattery, and an invitation to audit the career record for inconsistencies.
Architecture
One dataset, several renderings
There is no framework and no build step. Static HTML and CSS, one small Express server for routing and headers, and a page-local script per page rather than a shared bundle. Each themed page opts out of the global stylesheet's view system with its own body class, so a visitor arriving with stale state cannot break the layout.
Decisions
Three choices worth explaining
- The adversarial mode is honour-system. A static page cannot verify that a model actually found the inconsistencies, and pretending otherwise would be theatre. So the button says so plainly.
- The inconsistencies are real. Two Amazon roles overlap by about seven months, the years of experience depend on where you start counting, and one headline figure is a target rather than a banked result. Nothing was planted. The unlocked section restores the hedges rather than confessing to anything.
- Documents revalidate rather than cache. Everything served as HTML, CSS, JS, JSON, or text ships with no-cache, so an agent reading profile.json never gets a day-old copy and a deploy is visible immediately.
Stack
What it runs on
| Frontend | Hand-written HTML and CSS. No framework, no build. |
|---|---|
| Server | Express with helmet and compression, serving static files. |
| Hosting | Railway, deployed from the CLI. |
| Agent surface | profile.json, llms.txt, JSON-LD, robots.txt. |
| Caching | no-cache on documents and data; long immutable cache on images and fonts. |