I watched Claude Code build me a portfolio in two days.

Then I spent the rest of the week trying to make it feel like mine.

That was not the part I expected.

I am a product designer, not a developer. My technical knowledge going into this was thin: enough to be dangerous, not enough to be confident. I wanted a portfolio, and I wanted to build it myself instead of hiring it out or dragging a template around until it looked like me.

So I opened Claude Code, described what I wanted, and by day 2 there was a working website on my screen.

It loaded. It had pages. It had structure. It looked finished enough to fool me for maybe five minutes.

Then I started noticing the smell.

Rounded cards. Soft gradients. Clean blocks. A hero that looked like it had quietly averaged every AI-generated portfolio I had seen that week.

The site worked. That was the trap.

AI made the output fast. It did not make the decisions for me.

The first mistake was starting with output

Day 3 was when the real work started.

I stopped asking Claude for changes and started looking at references. Pinterest, old websites, visual fragments, layouts with texture. The kind of messy looking-around I normally do before opening a design tool.

I had skipped that part because Claude made output feel cheap.

That was the mistake.

When output is cheap, it becomes easy to confuse movement with direction. You can keep prompting, keep generating, keep changing sections, and still avoid the harder question: what should this thing feel like?

Claude did not know that for me.

If I could not define what good looked like, Claude was happy to give me something that looked good enough for everyone.

Good enough for everyone was not the point.

The workflow became smaller on purpose

After that, I stopped treating Claude Code like a magic box.

I did not use agent mode. I did not let it run far ahead. I worked in small loops:

  1. ask for one change,
  2. look at the result,
  3. decide if it was right,
  4. review what changed,
  5. move to the next thing.

It was slower. It was also the first time the work started to feel understandable.

Codex became the second pair of eyes. I used it to review what Claude wrote, partly because I did not trust the code, and partly because I did not trust myself to know what was wrong.

Some reviews came back clean. A lot did not.

One fix stuck with me: a state update firing on every scroll event with no throttling. Codex called it a performance problem before I understood why it mattered.

That was useful because it was specific. Not a tutorial. Not a generic lesson. A real bug in my own project, on a page I could open, with behavior I could feel.

I had to understand enough to fix it.

On day 1, I could not have explained half of those changes. By day 6, I was writing commit messages that described what the bug was and why the fix worked, not just copying whatever Codex suggested.

The codebase was still not something I fully understood.

But it was no longer a black box either.

Planning became the actual work

The most useful workflow change came from a constraint I did not choose.

My Claude Pro plan had usage limits: how much I could use in one sitting, and how much across the week. Day 4 through 7 should have been pure momentum. Instead, work kept stopping while the thread in my head was still warm.

At first, I hated it.

Then it made the waste visible.

I stopped opening Claude just to see what would happen. I started writing down what I wanted before starting a session:

  • what should change,
  • what should stay,
  • which section felt wrong,
  • which decision needed review,
  • which part was just me reacting to the first draft.

That changed the work.

The useful part moved earlier, before Claude wrote code. I had to turn a vague feeling into a plan. Not a perfect spec. Just enough direction that the next session had a job instead of a mood.

A vague session became expensive.

A clear plan became useful.

This is the part I keep thinking about. I used to imagine AI-assisted building as faster execution. It is that, partly. But the better version seems to depend on what happens before execution: taste, constraints, review, and a clear enough plan.

AI did not remove the hard part

I went into the week half-expecting AI to remove the hard part of building something.

It did not.

It moved the hard part.

Less time typing syntax. More time deciding what was worth building.

Less time fighting a blank file. More time noticing when the first answer was too generic.

Less time waiting for someone else to implement my design. More time being responsible for the decisions underneath it.

That responsibility was uncomfortable.

I could not hide behind a handoff. If the page felt wrong, I had to say why. If the code broke, I had to stay with it long enough to understand the fix. If Claude suggested something that sounded plausible, I had to read it instead of accepting it because it was fast.

This is the part I am still figuring out.

Working step by step gave me more control, but it was slower. Not using full agent mode made the process easier to understand, but probably less efficient. Running Codex as review helped, but it also showed me how much I still miss on my own.

I do not know if this is the workflow I will keep forever.

I only know it was the workflow I needed for this project.

Shipped, not finished

The site is live now.

Still rough in places. Some sections need better decisions. Some edges need smoothing. I will probably rebuild parts of it in a month.

But I shipped a thing I understand, which feels like a different kind of finished.

For context, a project around this size used to take me about three weeks with a small team: roughly a week for design, then two weeks for development and deployment. This time, I did the whole thing alone in seven days.

That is not proof that AI can replace a designer or a developer. If an actual developer opened this codebase right now, I am sure they would find plenty to wince at.

The point is smaller than that.

I got close enough to the material to make decisions myself.

Maybe that is the real value for me right now. Not automation as replacement. Not vibe coding as magic. More like a way to make the work visible earlier: the taste, the plan, the tradeoffs, the parts I do not understand yet.

I do not think this is the final answer.

It is just where my thinking is right now.