This Website
- Langs
- EN
- Error tol.
- RECOVERABLE — git revert exists
- Review
- HUMAN SIGNS EVERY DEPLOY
- Status
- IN PRODUCTION
The problem
Thirteen years of work in regulated environments produces a specific kind of invisibility. The systems I build run inside client engagements and employer infrastructure — bound by confidentiality, uncitable by design. When someone asks show me, there is nothing to point at. Not because the work doesn’t exist, but because none of it is allowed to be public.
That is a portfolio gap, not a skills gap, and it doesn’t close by accident. The standard answer is a personal site. The standard outcome is a personal site that dies in planning: no client, no deadline, and a perfectionism trap that consultants are especially prone to — we are trained to ship only what survives review.
So the real problem to solve wasn’t build a website. It was design a process that makes shipping inevitable, under constraints I set deliberately: no client or employer material anywhere, fast and boring to maintain, and honest about what it is.
The system
The build split into two phases, with different tools and different failure modes.
Phase one produced a spec, not code. Extended working sessions in Claude produced the identity, the copy, the case studies, and a technical brief precise enough to hand off: stack (Astro 5, plain CSS with design tokens, Markdown content collections, no JS frameworks), a signature design device (the constraint plates you see on this page), and a quality floor — sub-100 KB pages, Lighthouse ≥ 95, semantic accessibility. I treated the spec like a client deliverable: finished before a single file existed.
Phase two was implementation, executed by Claude Code against that spec. My role in this phase was not writing code. It was decisions: the domain, the design direction, what to cut, the Impressum address — German law requires a real, deliverable street address on any published site, which turns a five-minute task into an actual household decision — and sign-off at every step, checked at three breakpoints before anything shipped.
Deployment: GitHub to Cloudflare Pages, HTTPS automatic, deploy on push. Two things broke on the way, and both are worth recording. The Claude Code install itself died on an npm permissions error; the fix was not heroic shell-config debugging but routing around the problem entirely with nvm. The first Cloudflare build failed on a missing .assetsignore file; the fix was one empty file and one commit. Total time from first terminal command to live domain: one day.
What I learned
Spec-first is the whole trick. Implementation took an evening because the thinking had already happened somewhere else. Every AI-assisted build I’ve run — here and professionally — follows the same curve: the quality of the output is set before the tool is opened.
The division of labour is the system. I wrote none of this site’s code and made every decision the code embodies. That is not a diminished role; it is the same operating pattern as the other systems on this page — the tool produces, the human owns. A deploy is a signature.
Route around, not through. The npm failure could have consumed an evening of shell-config archaeology. Knowing which problems deserve to be understood and which deserve to be bypassed is an unglamorous skill that shows up on every real project.
This is the smallest system here — and the only one you can audit. Everything else on this site asks for some trust, because the originals live behind confidentiality walls. This one doesn’t. You are using its output right now: view the source, run the Lighthouse check, measure the page weight against the spec. For a site whose whole argument is verifiability in environments where you’re not allowed to get things wrong, it seemed right that at least one exhibit should be checkable from the outside.