I Spent a Day Teaching Robots How to Read My Résumé (So You Don't Have To)
· 4 min read · by Michael Kaminski
Behind the Build, Vol. 1: a lighthearted look at the SEO/AEO overhaul of this very site — JSON-LD schema soup, an llms.txt for AI crawlers, and the great WebP-ification of my own face.
Welcome to Behind the Build, a new (and hopefully ongoing) series where I write up whatever I actually shipped on this site recently — bugs, refactors, questionable decisions, all of it. No commits landed today, which in software is its own kind of milestone: the code sat still long enough for me to admire it. So Vol. 1 goes to the project still fresh in memory — the weekend I decided this portfolio needed to be legible to robots, not just recruiters.
The problem: humans could read my site, but the bots were squinting
Search engines have always crawled pages. The newer wrinkle is that AI crawlers — the ones summarizing your site into a chatbot's answer — want something closer to a structured briefing than a web page. So I went down the rabbit hole of "answer engine optimization" (AEO), which is SEO's younger cousin who reads faster and asks more questions.
What actually happened
- JSON-LD schema soup: I bolted
ProfilePage,Person,FAQPage, andBreadcrumbListstructured data onto every route. Nothing visually changes for a human visitor — it's a love letter written entirely for parsers. - An llms.txt file: yes, that's a real thing now — a plain-text cheat sheet for AI crawlers, sitting right next to robots.txt like a considerate roommate.
- Domain consolidation: I collapsed a handful of near-duplicate canonical URLs into one, which sounds boring until you realize duplicate content is basically the site telling search engines "pick a favorite, I don't care," and they take you up on it in the worst way.
- Recruiter-first restructure: cut the page from 14 sections down to 6. Turns out "more sections" was never the same thing as "more compelling," a lesson every founder relearns at least once a quarter.
- The Great WebP-ification: every headshot and referral photo got converted to WebP, including several pictures of my own face, which is a strange thing to watch a build pipeline compress and re-encode at 2am.
- Deleted a stale wrangler.toml: a Cloudflare config file nobody had touched in ages, quietly doing nothing, like a gym membership I keep meaning to cancel.
The lesson
The unglamorous work — canonical URLs, crawler manifests, deleting dead config — is the stuff that actually compounds. Nobody screenshots a robots.txt file for LinkedIn, but it's the difference between an AI answer engine describing your work accurately and it just making something up because your site gave it nothing to work with. Sometimes the best commit really is the boring one.
Next time in Behind the Build: whatever breaks next. Stay tuned.