I've designed and published websites before, but this was the first one I built end to end in this way from scratch.

It started with a pretty simple need: my old portfolio was outdated, and I needed a new one that actually reflected how I think and work now.

There were a few ways I could have built it. Framer was the main alternative. But I wanted to use Claude Code because I didn't just want to redesign my portfolio, I wanted to actually ship it.

The rough start

My early attempts were rough.

I was jumping too quickly into prompting, and the results showed it. Sometimes the design felt off. Sometimes the content structure wasn't right. Sometimes it was almost there, but it took far too many prompts to get to something even decent. A few times, I scrapped it entirely and started over.

A hard reset ended up being the right move.

Instead of going straight back into Claude Code, I stepped back and went to first principles. Before touching the build again, I wanted to get clear on what this website actually needed to do, what it needed to communicate, and how it should feel.

So I opened a Google Doc first.

I started by refining the content and thinking through the structure. What should be featured? What sections did I actually need? What did I want someone to understand about me within the first few seconds of landing on the site?

Once that was clearer, I moved into Figma and put together a very quick wireframe to define the basic layout.

Defining the character

The next challenge was character.

I didn't want the site to feel generic, overly techy, or like a portfolio template. I wanted it to feel editorial, minimal, and intentional.

To save my Claude tokens, I instead used ChatGPT to reverse-prompt me: asking me the right questions about what I cared about, what I wanted the site to signal, and where I wanted the taste to come through.

That part mattered more than the code.

Once I had that clarity, I put together a much more deliberate prompt for Claude Code. It covered the structure, visual direction, typography, spacing, hierarchy, interactions, and overall feel of the site.

I left the real content out at that stage on purpose. First I wanted to get the foundation right: the layout, the sections, the rhythm, and the overall system.

When the build started to click

From there, the build started to click.

I was able to shape the site more intentionally because I wasn't asking Claude Code to "make something nice." I was translating a clear point of view into a live product. That changed the quality of the output completely.

Then came the final stretch: taking it all the way through implementation and launch. That meant moving beyond just the design and getting the full site live: codebase, hosting, DNS, and publishing.

And that part was important too.

Because the value here wasn't just using AI to generate a website. It was being able to think through the product, define the direction, shape the system, and then actually ship the thing.

Still evolving

It's still evolving, and there are details I'll keep refining. But the foundation is exactly what I wanted: a portfolio that feels much closer to how I work. Thoughtful up front, clear in its structure, and built with enough flexibility to keep improving.

The foundation is exactly what I wanted, but it's still an evolving project with details that still need refining. I only have so many Claude tokens... LOL!

Claude Code helped me move faster.

But the real shift was realizing that the quality of the outcome depended far more on clarity, taste, and direction than on the tool itself.