How this site was built — Chris Cotton UX
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.

Designing in screenshots

The fastest tool in the build wasn't a wireframe or a prompt — it was a screenshot. I'd see something on another site, paste the image into the chat, tell Claude what I liked about it, and within a turn we'd have our own version of the idea in code. The site didn't get designed in Figma. It got designed in a conversation where pictures did most of the talking.

Here's the rough shape of how that worked, one screenshot at a time.

Pricing bars stretching across the page in red, yellow and blue
Pricing. I sketched it in words first — "stretched horizontal bars, like timing bars on a Gantt chart, only the price gets bigger as the scope gets wider." Claude shipped a working prototype in one turn. We then iterated on which bar to stretch on hover, which colour belonged where, and how the body content unspooled vertically when a row was opened. By the end the pricing page is doing the job a slide deck normally does — and you can read it in five seconds.
Thinking out loud — a grid of pastel rounded cards in two rows
Thinking out loud. I dropped a screenshot of a card grid I liked and said "this, but rotate each one a tiny different angle, and rounded the corners harder." Two turns later the section was animating its own way into the page, with each card carrying its own pastel and a slight per-card tilt. The titles are now slot-driven by an array — adding a thought is one line of data, not a copy-paste of a card.
N'us Gallery reference — dark hero with scattered framed artworks around a centred title
References, not pixels. Half the screenshots I pasted weren't of my site — they were inspiration from elsewhere. I'd say "this composition, but with our work in place of the artworks, on cream not black, and the centred title sized for an h1 not a poster." That's the conversation that became the zoom-folio: scattered project cards floating into a centred composition as you scroll, then resolving into a grid. The reference set the brief; the implementation was original.
An early iteration of the homepage cards — Apps, Websites, Brand and AI engineer in coloured tilted squares
Iteration in the chat. This is an intermediate state of the home cards — different colours, different labels ("AI engineer" instead of "Experience"), no marquee underneath, the hero copy still using "build expert" instead of "& build expert". You can date a screenshot like this by what's wrong with it: every detail you spot is a conversation that happened. Tilts, gaps, label kerning, the marquee underline, the rim animation on hover — none of it was specified up front. It accreted, one prompt at a time, against a screenshot baseline.
Clients who got loud — testimonial cards in pastel with a green More praise button
Borrow the structure, throw away the skin. Another reference I liked — chunky pastel testimonial cards, a hard heading, a small "more" CTA. We took the bones (fan-out card row, drag-to-scroll, pastel-per-card with a single white card in the deck) and rebuilt it from scratch in the site's voice: deeper colours, hand-tilted angles, hover-dwell expansion, drag bounds that measure from the actual cards. The takeaway from the reference made it in; the literal styling did not.

None of those steps took longer than a coffee. Every one of them would have been a half-day round-trip in a classical agency loop — brief, mock, review, revise, push. Here the brief was a picture and three sentences. The mock was a working component. The review was a glance, and the revision was the next prompt.

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?