Skip to content
← Back to overview

Selected project

My Portfolio Site

Designed and built with Claude Code

I built this website entirely through Claude Code. Planning, writing PRDs, design, code, deploying it live through Vercel. All of it.

Next.js, Tailwind, Framer Motion

Stack

Claude Code → GitHub → Vercel

Pipeline

PRD → staging review → ship

Process

If you're reading this on williamsowho.vercel.app right now, you're looking at the output of that process.

I've spent four years as a product manager across consumer, fintech, SaaS, and edtech companies in the US, UK, and Africa. Right now I own the billing portfolio at Search Atlas, where we pushed past $1M MRR. My job has always been to scope things clearly enough that an engineering team could build them. What changed this year is that I started building the things myself, and this site was the first project where I ran the whole thing start to finish, alone, the way I used to run it with a team of six.

I didn't open a blank editor and start prompting. The first thing I did was gather my own material: old CVs, case notes from past roles, screenshots of shipped features, a scroll through years of LinkedIn posts. I put all of it into a proper folder structure before I wrote a single line of copy, because I've sat through enough discovery phases to know that skipping it just means you redo the work later, badly, under time pressure. Then I looked at a handful of personal portfolio sites I actually admired, the kind with a clear point of view instead of a template feel, and pulled structural cues from product case studies that know how to make a story readable without dumbing it down. I wasn't copying layouts. I was pulling references the way a designer pulls references, to calibrate taste before making decisions.

From there I wrote PRDs, section by section: hero, about, experience, skills, projects, teaching, contact. Each one specified what the section needed to do, not just what it should look like. That's a habit from the day job, not something I picked up because I was using an AI tool. If anything, writing PRDs mattered more here, because Claude Code will build exactly what you tell it to build, and vague instructions produce vague output regardless of how good the model is. The discipline of a real spec is what kept this from turning into fifteen rounds of "no, not like that."

The stack is Next.js and Tailwind, with Framer Motion handling the animation and interaction layer. Content lives in Markdown, which was a deliberate call. It means I can go back and rewrite a sentence in the About section, like the one you're reading now, without touching a single component. Words and structure stay separate. That's a decision I'd have pushed for on any team, and here I got to make it myself and live with the consequences immediately.

Every change went to staging first. I'd review it live, not in a code diff but on the actual rendered page, the way a user would see it.

What matters more than the stack is that I ran a real release process for a project where I was the only person on it. I had a staging environment. Every change went there first. I'd review it live, not in a code diff but on the actual rendered page, the way a user would see it. When something didn't look right, I wrote a follow-up PRD or a change request instead of just telling Claude Code to "fix it," because vague fixes compound into vague products. I iterated there until I approved it, and only then did it get merged to production. GitHub and Vercel were both connected the whole time, so every change had a real deploy behind it. Nothing was theoretical. Nothing was a mockup pretending to be a shipped feature.

The value here was never in the complexity of the artifact. It was in whether I could take a product from a folder of raw material to a shipped, staged, reviewed, production deploy without handing any part of it to someone else. Most portfolios tell you a version of that story in prose. Someone writes "I led the design and development of X" and you take it on faith, because there's nothing to check it against.

You're on the page right now. You can see the copy that came out of the PRDs, the animation choices that came out of the design references, the polish that came out of a staging cycle instead of a single pass. If you want to know what I do differently from a PM who writes specs and waits for an engineering team, this is it, in its smallest and most literal form: I scope it, I build it, and I ship it myself, and this page is what that looks like when nobody else touches it.

This site's live homepage

Skills demonstrated

Next.js & modern web stack · AI-augmented development · Content architecture · Design systems · Shipping end to end

← All workNext: Claude Code Billing & Product Ops Automation →