Process

How this site was built — a process report

April 2026

This site was built collaboratively with Claude — the whole thing, in conversation. Not a one-shot prompt and not a hand-rolled build either, but a long iterative pairing where Chris would describe the next thing he wanted (move that pill, slow this animation, change those bullets, fix that bug on iPhone) and the work would land. The result is the home, experience timeline, twelve blog posts, gallery lightbox, multi-phase screensaver, pricing engine, and an embedded AI chat — running as one cohesive product.

This post is a snapshot of what came out of that process: the numbers, the surface area, and the bits that matter most.

By the numbers

120+Conversation prompts
20HTML pages
26,634Lines of code
77JS feature modules
51CSS media queries
17CSS keyframe animations
22Project case studies
239Image & video assets
7AI knowledge files
~2 moAcross roughly two months

Code by type

26,634 lines split unevenly — heavy on the behaviour layer, with a chunky stylesheet keeping the surface tight, and a collection of edge-runtime functions handling analytics and AI.

HTML — 10,436 lines (20 files) JavaScript — 10,065 lines (8 files) CSS — 6,133 lines (1 file)

Plus seven Markdown knowledge files (~18,800 characters) for the AI chat, one Netlify config, and a small Node build script that inlines the knowledge into the edge function at deploy time. The single largest file is script.js at 8,734 lines — broken into 77 self-contained IIFE modules so each feature is independently grep-able.

Pages

One home page does most of the heavy lifting. Around it sit a long-form experience timeline, a thoughts blog with twelve essays, a project lightbox template, a methods page, a websites canvas, an analytics dashboard, and a 404. Twenty pages total, all sharing one stylesheet and one script bundle so theming and behaviour stay in lockstep.

Unique functionality

Twenty distinct pieces of behaviour, most of which only exist on this site:

Products in the work

Twenty real projects spanning apps, websites, and brand. The list lives in a single PROJECTS array, fans out into the home grid, the canvas overlays, the lightbox gallery, and the AI knowledge file.

Tab AppAppTab App
UnscriptedAppUnscripted
DaikinAppDaikin
CorinAppCorin
PropertiAppProperti
NSW RFSAppNSW RFS
WoolworthsAppWoolworths
AuspostAppAuspost
CBREAppCBRE
Wilsons AdvisoryAppWilsons Advisory
HummingbotAppHummingbot
Uncle TobysWebUncle Tobys
CoreLogicWebCoreLogic
Jimmy CricketWebJimmy Cricket
ZhikWebZhik
Magic BraWebMagic Bra
EzidebitWebEzidebit
Johnson BrandBrandJohnson Brand
SupapixBrandSupapix
KenkoBrandKenko
Sony MusicBrandSony Music
3 Bees HoneyBrand3 Bees Honey

What's actually cutting-edge

Most of the page is well-known craft: clean HTML, semantic CSS, classic IntersectionObserver patterns. The bits that earn the “cutting-edge” label are doing things you wouldn't have shipped easily two years ago.

How the conversation went

Over a hundred and twenty back-and-forth turns, broken into a few rough phases:

Foundation. Hero, intro pills, work grid, footer, contact form, FAQ, testimonials, trusted-by. The bones.

Behaviours. Sticky-note tool, pen drawing, stopwatch dismissal game, magnetic typography, lightbox gallery, canvas overlays.

Screensavers. The big multi-phase pill engine — Eiffel, sun, bars, rain — then the pen scribbler with cursive phrase writer, then the footer copy of the same engine.

Polish. Mobile timeline, layout-aware nav, divider split, dot fill, scattered logos, pricing growth bullets, screensaver loops, dropdown column-flow, header copy.

AI chat. Knowledge base, Edge Function, prompt caching, streaming, guardrails, retries, deploy-time knowledge inlining, MCP discussion.

What it cost

No vector database. No CMS. No headless framework. Three core files (HTML, CSS, JS), some Markdown for the AI to read, and a couple of edge functions for analytics and chat. Total compressed weight stays under what most CMS-built portfolio sites send for a single hero image.

The bigger story isn't the byte count — it's that two of the things that would normally be six-figure builds (a multi-phase animated screensaver and a context-aware AI chat) shipped as side-effects of having Claude in the build loop. Those weren't the goal; they were the natural expression of “while we're here, can it do this?”

That's the thing worth taking away. The site is a portfolio. The build process is the portfolio.

Thinking out loud

Design is the last moat AI can't cross

AI & Design

The wireframe is dead. Long live the prototype.

Process

Speed is the new craftsmanship

Build & Ship

Designers who build are the new senior engineers

Career

Need a hand?