Case study · You’re looking at it
Icarian Forge
The last project is the one you’re reading. I wanted a portfolio that shows how I work instead of just listing it, so I built it the way I run any project: I set the direction and made the calls, Claude Code did the engineering, and nothing went live until I’d seen it.

A portfolio, not a pitch
A résumé lists what you’ve done. I wanted something that shows how I do it, including what didn’t work the first time. Three rules shaped everything: it should read as a job-seeker’s portfolio, not a business; it should sound like me, not like marketing; and every claim on it should be true.
The first headline failed the second rule. It read like a pitch, so it became four quieter words: Big picture, small print.
Brief, build, check, decide
- BriefI describe what I want in plain English: the goal, the audience, the feel.
- BuildClaude Code writes the HTML and CSS, and recommends an approach before any big decision.
- CheckEvery change is screenshotted on desktop and phone, in light and dark mode, and tested for anything spilling off the screen.
- DecideI approve, push back or redirect. Most pages went through several rounds.
- PublishLive on Cloudflare in about a minute, then checked again on the real site.
Small, plain and dependable
- Claude CodeThe engineering team: wrote the code, drafted copy for my edits, and checked its own work in a real browser.
- Plain HTML and CSSNo framework and no build step: one stylesheet, and a few small scripts for the menus, the feedback form and the certificate viewer.
- CloudflareFree-tier hosting, the custom domain, a small database for site feedback, and a Worker that forwards icarianforge.com to www.
- Headless ChromeScreenshots for every review, plus a small script Claude wrote to emulate a real phone.
- LighthouseGoogle’s audit for speed, accessibility, best practices and search.
- GitHubEvery version saved, so any change can be undone.
Measured, fixed, measured again
Before writing this page, I had the site audited with Lighthouse. It scored well, not perfectly, so we fixed what it found and measured again.
- Grey text was too faintSmall labels failed the contrast test in light mode. They’re darker now, and pass in both modes.
- Images were too big for phonesEvery picture now comes in several sizes, so a phone downloads a phone-sized one.
- Text jumped as fonts loadedThe stand-in fonts are now sized to match the real ones, so nothing moves.
Decisions that shaped it
- A quieter voiceThe first headline read like a pitch. “Big picture, small print.” says the same thing in my own voice.
- A markThree wing strokes and a sun, for Icarus, with the I and Forge picked out in ember.
- DepthProject tiles became small stage sets, with a browser, a share card and a tilted phone, after the first one looked merged together.
- BalanceStrategy, leadership and hands-on, with nearly 20 years in IT, repeated where it counts.
- A softer hello“Need someone…?” became “Tell me what you’re working on.”
What didn’t work the first time
- The AI made things upEarly drafts included a reply-time promise and a backstory nobody had given it. Both came out, and the rule became: facts only, from me.
- Phone screenshots came out cut offHeadless Chrome won’t go narrower than about 500 pixels, so Claude wrote a small tool that emulates a real phone instead.
- The site didn’t load, but only for meMy home router had cached a “doesn’t exist” answer from before www was set up. The fix was patience, and checking through Cloudflare’s own resolver.


Nearly 20 years in IT.
Strategy, leadership, and hands-on with AI.
Positioned a career, not just a site: one clear message, repeated where it counts, and never a sales pitch.
Ran Claude Code like an engineering team: clear briefs, quick decisions, and the final call on every word.
Shaped the voice, reviewed every round on desktop and phone, and sweated the details, down to the size of the words “small print”.