An AI-assisted website I can stand behind
AI can generate a website from a single prompt in minutes. You can usually tell: generic copy, invented claims, and a design like a thousand others.
I wanted more from my own site: a design better than I could have made myself, copy that represents me, and only facts I had confirmed. Claude wrote all of the code. With the copy, it helped with first drafts and copy editing, while I decided every word that went on the page.
This write-up is about how I kept the output accurate and stayed in control of what went live.
The starting point
I’m a fractional CTO. I’m not a designer and not a marketer. Still, the site had to clear four bars:
- It looks professional. A clear design that reads as well on a phone as on a desktop.
- The copy is me. An imitation that only sounded like me wasn’t good enough. Every page had to say what I wanted to say, in my words, and I had to stand behind every sentence.
- Every fact is accurate. Dates, numbers, who I worked for, and what I did there.
- It’s technically sound. Fast, easy for search engines and AI assistants to read, and built to stay that way as it grows.
What it took
About 50 hours over three weeks, alongside client work. Most of it went into the copy.
The cost was one month of Claude Pro ($20) and the domain. Hosting, analytics, the contact form, and the booking calendar all run on free plans.
What I used, as of November 2026
- Claude Pro: Claude Code on the desktop as the centerpiece, the Android app to dictate and steer from anywhere, and Claude Design for the visuals
- Site: Astro, a framework for static sites
- Services: Cloudflare for hosting and the domain, Umami for analytics, Resend for the contact form, and Cal.com for booking
Capturing what I know
Before any page existed, I talked: a few hours in total, one session per client engagement, much of it on the go or while doing things around the house. I used the Claude app on my phone while Claude Code processed the input on my desktop.
I told Claude everything I remembered, the way I’d brief a human copywriter. I started with an overview of each engagement, then went deeper into specific systems and challenges. Claude asked follow-up questions and listed the facts for me to confirm. I checked those against old emails and documents, especially dates and terms. Claude kept one file per engagement, so I could focus on talking and checking. Once confirmed, the facts went into a register: one file listing every fact the site may state.
Transcription was very good, except for names. SiteOwl, a client of eight years, came out as “side all”, “cite awl”, and many other things. So I checked every name, and that became a rule for Claude: a name that isn’t in the register yet gets checked the first time it comes up.
One source of facts
Every fact in the register is marked as either confirmed or still to check, and Claude’s standing instructions allow only confirmed facts on the site. When a page needs a fact that isn’t confirmed yet, Claude asks me and records my answer in the register first.
That makes speed safe. Claude can draft a whole page in minutes, and every claim in it traces back to something I have said and checked.
The register also keeps the site consistent. Facts that appear on several pages, such as my tagline and the headline numbers, live in one data file that every page reads. Change a number once and it changes everywhere.
Nothing goes live without approval
Every piece of content on the site has one of three statuses:
| Status | Meaning |
|---|---|
| Placeholder | Filler that makes the layout work. Not factual. |
| Draft | Based on what I’ve said. Wording not final. |
| Final | Approved by me. |
Only final content can go live. Publishing the site checks every page and stops while anything is still a placeholder or a draft. As I write this, it refuses to publish this very write-up:
src/content/lab/building-my-website-with-ai.md (1)
4: [status: draft] status: draft
…
Refusing production build: all content must be status "final" with no PLACEHOLDER markers.
A draft can’t slip out by accident, however fast Claude works. Work in progress goes to a preview: drafts are marked on the page, and search engines are asked to stay away. I read every page on the preview, and when I approve it, Claude sets it to final. Sections that weren’t ready at launch, such as this Lab, stayed off the live site.
Copy that is me
This is where most of the hours went.
For most pages, I started with what the page should do as a whole: who reads it, what they need to know, and what they should do next. Claude wrote a first draft from that and from the register. Then I went through it paragraph by paragraph. Sometimes I changed the wording to how I’d say it. More often I changed the substance: what goes in, in what order, and what gets the emphasis. A page could take many rounds.
Where I wrote a section myself, Claude worked as my copy editor. It pointed out unclear sentences, grammar, and anything else a good copy editor would flag.
Corrections I made became written conventions, so Claude wouldn’t repeat a mistake in later sessions. A few examples:
- Anchor years instead of counts: “fractional CTO since 2015”, never “ten years of experience”. The claim doesn’t go stale.
- “Leader” for someone who runs a team. Business owners read “lead” as a sales lead.
- Short sentences, plain words, and positive framing: say what you do rather than what you don’t.
Design and build
I settled the structure before the look. Claude and I worked out which pages the site needs, what each section is for, and roughly how long it should be. That went into a written design brief, from which I worked out the visuals iteratively in Claude Design.
The site is static: pages generated in advance, with very little JavaScript. That makes it fast and easy for search engines and AI assistants to read. The main pages also have a plain-text copy for AI assistants.
Checking with fresh eyes
Whenever a set of pages was finished, two fresh Claude sessions reviewed them independently. Neither had seen our discussion, so they saw the pages the way a visitor would.
The first performed technical checks: links, keyboard access, contrast, and many different screen sizes. In one round, for example, it found that a dropdown menu in the header never closed again.
The second read the pages as different visitors would, such as a non-technical founder with an AI-built prototype or a CEO with a first enterprise customer in sight. For that founder, for example, it pointed out that “vibe-coded” could read as mockery of what they had built.
Claude sorted the findings of both reviews by its recommendation. I went through them and decided what to apply.
The same facts, used again
The facts register turned out to be useful beyond the site. My profiles on LinkedIn and on expert platforms now come from the same facts, so they all say the same thing in the same voice.
When a new opportunity comes in, Claude matches it against my documented experience and points out how they align. That helps me prepare a response tailored to each one.
If you’re building with AI
The same guardrails work for any product built with AI. Keep one source of truth for what the product must do, and have the AI build from it. Decide what the AI may do on its own and what needs your approval, and make the process enforce it. Have fresh eyes review the work before you call it done.
Setting this up with founders and business owners is part of my work: Building with AI tools.
