I built this site by talking to an AI. Here's what that's actually like.
I've been working in web engineering for 25+ years. I know how to build things. But this site, the one you're reading right now, I built almost entirely through conversation. No IDE open to a blank file. No Stack Overflow tabs. Just a chat with Claude.
I want to write about what that experience was actually like, because the narrative around "AI builds your app" is usually either breathlessly optimistic or dismissively skeptical.
What I actually did
I didn't prompt Claude to "build me a portfolio site." I already had a clear picture in my head: a dual-mode site with a professional side and a personal/family side, auth-gated content for people I actually know, a resume system I could manage without a CMS, deployed on AWS Amplify.
What I did was direct. I'd describe what I wanted, Claude would implement it, I'd look at the result, and we'd iterate. The prompts were short and specific: "make the nav two rows," "trim the last 5 seconds of the video," "the family site should have its own color theme." Each one moved a real thing forward.
The interesting part isn't that Claude wrote code. It's how fast the feedback loop became. Ideas that would have taken me an evening to prototype took minutes. That speed changes how you think. You stop being conservative about trying things. "What if the header shows a different name in family mode?" Just ask. If it's wrong, iterate. The cost of a bad idea dropped to nearly zero.
Where it worked really well
Repetitive structure. This site has three sections (Work, Life, Balance), each with their own nav, theme, auth rules, and page stubs. The pattern for each page is nearly identical. Claude could scaffold 20 stub pages in the time it would have taken me to copy-paste three. That's not magic, it's just leverage on the boring parts.
Figuring out things I didn't know. The AWS Amplify env var bug took me hours to debug manually. Environment variables I'd configured in the Amplify Console weren't reaching the Lambda runtime at all, everything was `undefined`. Claude surfaced the known GitHub issue (#1987) and the workaround in one response: pipe the vars to `.env.production` before the build step. It also helped me get Auth0 v4 wired correctly when the SDK was new enough that there wasn't much written about it yet.
Staying in flow. The thing I underestimated most was how much cognitive overhead normally goes into translating an idea into a task list into actual code. With Claude Code, I could stay in "product thinking" mode longer. I was thinking about what the site should be, not how to implement a CloudFront path routing rule.
Where it required more from me
Judgment. Claude will implement what you ask. It won't always push back on whether what you asked for is the right thing. Early in the project I made a change to the layout structure, wrapping everything in a max-width container at the layout level, that broke full-width section backgrounds across 40+ pages. Claude implemented it as asked. I had to recognize it was wrong and course-correct. The judgment about what the site should actually do still has to come from me.
Framing. The more precise my prompt, the better the output. "Make the nav look better" produces something generic. "Add a subtle border between the name row and the nav row, and give the nav row a slightly tinted background that goes full-width" produces exactly what I had in my head. I've always believed clear communication is a core engineering skill. Working with AI has made that even more obvious. Prompting well is just writing clearly.
Knowing enough to verify. I caught a bug where `-ml-3` on the nav `ul` was overriding `mx-auto`'s left margin, pushing the nav items to the far left edge of the screen. Claude had implemented it correctly for the original structure, but it broke when I restructured the header. I only caught it because I understood what the CSS was doing. If I hadn't, it would have shipped. You still need to know enough to review what you're getting.
I'm literally talking to it
I don't type most of this. I dictate.
For quick commands, "commit and push," "trim the nav padding," typing is faster. But for anything longer, like this journal entry, the project descriptions, the copy on the landing pages, I speak. I talk to Claude the same way I'd talk to a colleague. Stream of consciousness, run-on sentences, half-formed thoughts. Claude transcribes, structures, and refines it into something readable.
To make that work well, I gave Claude samples of my writing and how I actually talk. So when I say "make it sound more like me," that's not a vague instruction. It has context. It knows what my voice sounds like in writing.
This isn't new behavior for me. At ClickUp I was already using ClickUp Brain to write docs verbally, narrating a spec, updating task statuses, writing comments without touching a keyboard. Talking to a work surface instead of typing into it. It felt strange at first, then completely normal, then obviously better for certain kinds of work.
What's different now is that the verbal interface extends to the site itself. I don't have an admin screen. There's no "create a post" button, no CMS dashboard, no publish workflow. When I want a journal entry, I talk. When I want a project page updated, I talk. The content appears. The infrastructure I'd normally need to build to manage my own site, I just don't need it, because the conversation is the interface.
The prompt, spoken out loud, as the only surface you need.
I still have Cursor open though. I still like watching the files change. I click around, I read diffs, I look at what got touched. The visual feedback of an IDE still matters to me. Claude Code running inside Cursor is the setup: voice in, changes visible in the editor, nothing hidden.
The mental model shift
Claude is a very fast, very capable engineer who needs a good technical lead. It won't make product decisions for you. It won't tell you your feature is unnecessary. It won't notice that the thing you asked for conflicts with something you built three sprints ago. What it does is compress the time between having an idea and having a thing.
For someone with my background, where I can evaluate the output, catch the mistakes, and direct the work, it changes what's possible. For someone without that context, I think it would be a lot harder. The AI raises the ceiling on what you can ship alone. It doesn't replace the judgment that determines whether it's worth shipping.
What's next
This site is still early. The personal and family sections are mostly stubs. The journal, this thing you're reading, I just built the infrastructure for in the same session as writing this entry.
The gap between "I want a place to write" and "there is a place to write" was about 20 minutes. That's new.