Blog
Lessons learned, architecture choices and opinions on development, infrastructure and AI agents.
A separate Next.js front and Payload CMS, tag-based revalidation, Lexical blocks, an idempotent seed with its screenshots, and a flash-free light theme. A guided tour, with screenshots taken locally.
From hand-deployed docker-compose stacks to Dokploy services generated from a manifest: the path, the choices and the traps.
The model only writes what rules cannot. The full path from a job ad to a rendered résumé, how the ATS score is computed, and how AI costs stay under control.
A multi-tenant edtech platform leaves a managed database and a PaaS that no longer served it. Why, how, what broke during the night, and what I kept for what came next.
A real issue, four minutes, a merged PR and a release, with no human in the loop. What the Shipyard loop does at each step, the guardrails that hold it, and the limits I ran into.