Why I Made This Site Readable by Machines, Not Just Humans
Recruiters and hiring pipelines increasingly route through an AI agent before a human ever opens a tab. A portfolio site built only for a person scrolling and reading is now serving half its actual audience. So I added the other half: an llms.txt at the site root — a plain-text summary of who I am and what I've built, structured for a language model's context window rather than a browser's rendering engine — JSON-LD Person schema on every page, and real canonical URLs for these notes at /blog/{slug} instead of leaving them buried as anchors inside one long scrolling page. Same content, now individually addressable, cacheable, and citable.
The more interesting find while doing this wasn't a feature, it was a bug. My static-site adapter's SPA fallback page and the prerendered root route both wanted the filename index.html, and the fallback was winning the write — silently replacing the real homepage (title, description, Open Graph tags, all of it) with an empty shell at build time. Every crawler and every link preview had been getting nothing. The fix was a one-line rename, but the lesson generalizes: a static site's build output is not implied by its source — verify what actually ships, especially at the config layer nobody re-reads after initial setup.