← Back

How I built this

This site was built working with Claude Code — not generated from a single prompt. The build itself is a better sample of agentic-AI skill than anything I could write on a résumé, so here's what actually happened.

Real tradeoffs, not defaults

Before any code, we worked through the actual decisions: which host, which framework. Cloudflare Pages over Vercel or GitHub Pages, specifically because DNS for markfeldman.work was already on Cloudflare. Next.js over a plain static build, specifically because I wanted room to grow the site iteratively without a rewrite. Neither was the first option offered — both were a recommendation plus the reasoning behind it, mine to accept, reject, or push back on.

When the plan met reality

The original plan assumed Cloudflare's classic Pages build settings — a framework preset dropdown, a build-output-directory field. Cloudflare had since moved new projects onto a unified Workers/Wrangler flow instead, and none of those fields existed on my screen. Rather than guess at a UI neither of us could see clearly, we stopped, looked at the actual fields in front of me (a build command and a deploy command), and worked backward to what Cloudflare was really asking for: a wrangler.jsonc declaring the Next.js static export as the assets directory for wrangler deploy to serve. We verified it locally with a dry run before pushing anything.

Where the agent stopped and I didn't

Every point that touched a real credential or a live, public asset stayed mine to do. GitHub authentication and Cloudflare login happened in my own terminal and my own browser session, not through the agent. When I said “go ahead, connect the domain” and the agent's browser session turned out not to be signed into my Cloudflare account, it said so plainly and handed the actual click back to me — rather than trying to work around it. Connecting the real domain to a live site is exactly the kind of step that should require a person, not get automated past.

Why this matters for a team adopting agentic AI

This is what I think responsible adoption actually looks like day to day: iterative delivery, tradeoffs made out loud instead of defaulted past, plans that adjust when reality doesn't match assumptions, and clear boundaries around what an agent should do unsupervised versus what stays with a person. Not a slick demo — a working process a team can actually run with.