The build log put a green checkmark next to every page on wybrandt.com: static, prebuilt, ready to serve from cache. The server disagreed. It rebuilt every page from scratch on every single visit — and topped the response with a header forbidding any caching at all.
I found out because I had put my AI partner on a routine SEO review: metadata, sitemap, page speed. That kind of job usually ends in a checklist of polite recommendations. This one ended as an excavation.
One line of code, ten missing files
Suspicion settled on one line in the site's root layout: a call that reads the visitor's language preference. Next.js — the framework this site is built with — reads that as "this page depends on the individual visitor" and quietly gives up on prebuilding anything. The build log still showed its green checkmark. There were simply no files behind it.
But suspicion is not causality. So we ran the experiment: remove the line, rebuild, count the files on disk. Ten finished HTML files appeared. Put the line back: zero. Only then was the defect proven — and only then did any "optimizing" happen.
The experiment: 1 line removed → 10 static files on disk. Line back in → 0.
The fix was to split the site's foundation in three, so the public part can be fully prebuilt while login and dashboard remain dynamic. Not pretty on an architecture diagram. But measurable: today the front page is served as a finished file with a year's shelf life on the cache.
The crawlers were being deported
Along the way, a test exposed something the first report had missed entirely. Arrive with an English-language browser, and you were automatically redirected away from the Danish front page — and so was every crawler introducing itself in English. Google treats automatic language redirects as a trap, and the Danish main page was effectively unreachable for them. Now the site changes language only when someone asks it to.
Two of twelve claims did not survive
Finally, a fresh model got the whole change for review. One that hadn't written a line of the code, hadn't been part of the conversation, and had nothing to defend — with a single instruction: try to shoot this work down. It built the site itself, started its own server, and tested every claim. Ten of twelve were confirmed. Two were refuted.
Both refutations were real bugs. The English pages carried Danish descriptions in their structured data, and the site's global 404 page had broken during the rebuild. Both were fixed before anything went live. Which is the whole point of having someone else look: the one who built it hunts for confirmation. The fresh one hunts for faults.
The moral is not that the tools lie. It is that a green checkmark is a claim, not evidence. Dig until you're holding the artifact — the file on disk, the header, the measurement. Then let someone else try to bury it again.