This website
Our own website, rebuilt in Astro in three weeks, with AI agents opening 95% of the pull requests. Every save is a Git commit, and forms go straight into our own systems.
- pacing.agency, built with Astro and Keystatic between 22 September and 13 October 2026.
- 807 commits on the main branch, at least 770 of them (95%) made by AI agents.
- Commits on 12 of the 21 days from the first commit on 22 September 2026 to going live on 13 October 2026 at 14:12 BST.
- 311 pull requests merged between 22 September and 13 October 2026, 81 of them on 10 October, the busiest day.
- Merged per day: 29 Sep 1, 30 Sep 20, 1 Oct 19, 2 Oct 13, 5 Oct 34, 6 Oct 1, 9 Oct 45, 10 Oct 81, 11 Oct 19, 12 Oct 51, 13 Oct 27.
- At least 297 of them (95%) were opened by AI agents in Claude Code or Cursor.
- 2 people at the keyboard typed at least 338 prompts to AI agents.
- At least 438 AI agent sessions: 63 started by a person and 375 started by another agent (280 Claude Code subagents and 95 Cursor jobs).
- At least 3,372,279,703 tokens through the AI models, mostly the agents re-reading the code on each step (cached).
- At least 14,429,822 tokens written by them, across at least 17,520 model responses.
- One Cloudflare Worker serves the site.
- Cloudflare's free plan includes 100,000 Worker requests a day, and static files served without running the Worker are free and unlimited.
- We run on the paid Workers plan, at $5 a month, because the same Cloudflare account hosts other projects.
- Every push to the main branch runs the content and go-live checks, builds the site with Astro and deploys it to Cloudflare in about a minute.
Counted from our git history, GitHub and our agents' logs. How we count
Live on pacing.agency since 13 October 2026
Our website moved off Webflow in October 2026, onto a site we build in code. We're a Webflow Certified Partner and we still pick Webflow when it fits a site. Ours had started to need things that live in code: forms that go straight into our own systems, pages made from data, checks that stop a broken page before it ships, and content our AI agents can read and change like code. So we rebuilt it in Astro, with Keystatic as the editor, and moved pacing.agency across on 13 October 2026. If you're here because you want a site like this for free, start with how to make a free website.
What we built
- Content as files. Every page, post, FAQ, tool and case study is a small JSON file in a GitHub repo. We imported every published item from Webflow's CMS through its API and kept the field names, so nothing had to be retyped.
- Pages built from blocks. Each section is a block with a permanent reference, like HER-02j for the hero at the top of this page. At go-live there were 84 blocks with 197 versions between them, and an internal style guide shows every version side by side, light and dark.
- One Cloudflare Worker. A single Cloudflare Worker serves every page, answers the redirects from old addresses and runs a staging copy behind a login.
- Forms that go straight to our systems. Every form posts to the Worker, which checks it and stops bots, then hands it to n8n. n8n logs the lead, adds it to our CRM and tells us. The site never sends email itself.
- Tracking. Google Tag Manager loads after the page, from our own subdomain, and passes events to server-side tagging on Stape.
- Legal pages from Termly. The privacy, cookie and terms pages are saved from Termly by a script, and a check warns us when Termly's text changes.
How the editing works
Ben and Cam edit the site in Keystatic: a form for each kind of page, and a list of blocks to put in order for the rest. Clicking Save makes a commit on GitHub. The commit runs a content check, then the site rebuilds and deploys in a minute or two. If an edit's wrong, we revert that commit and the old page is back.
Every page layout has a status: Drafting, In review, Approved or Live. Only Approved and Live layouts reach the public site, and only Live ones are open to Google. Copy an agent drafted stays marked as a draft until one of us has read it.
How we checked nothing broke
We treated the live site as the record and checked against it with scripts, not by eye. Before redesigning anything, we rebuilt the old site as it was and compared the text of all 372 addresses on it with our build: no differences (30 September 2026). A link checker followed 43,304 links and found none broken on our side.
Then the redesign went page by page. Old addresses that moved now redirect to the page that replaced them: 113 of them on 13 October 2026. The 253 images and files on Webflow's CDN were copied to our own storage. And a go-live check runs before every production deploy: it refuses if a redirect points nowhere, if a page that was live on the old site is missing, or if copy is still marked as a draft.
Going live without a big switch
The move didn't touch DNS. The new site took over pacing.agency through Cloudflare routes, so one command deletes those routes and sends visitors back to the old site, for as long as that's still published.
What it costs to run
The hosting can be free. Cloudflare's free plan serves static files free and without a limit, as long as no code runs first, and gives a Worker (the code that handles forms and redirects) 100,000 requests a day. The images are in Cloudflare R2, inside its free tier, and the domain's DNS is on Cloudflare's free plan. We pay for Cloudflare's Workers Paid plan, $5 a month, because the same account hosts our other projects; our Worker only runs for page requests, while images, styles, scripts and fonts are served as static files that skip it, so only page views count as Worker requests.
The rest: GitHub on its free plan, Keystatic (free and open source), Algolia search and the Cal.com booking calendar on their free tiers, Termly for cookie consent and the legal pages on our agency's paid account (about £5 a month), the domain, and the AI tools we built it with. The step-by-step version is in how to make a free website.
What AI did, and what people did
AI agents in Claude Code and Cursor wrote the code. They opened at least 297 of the 311 pull requests (95%) and made at least 770 of the 807 commits (95%). Between the first commit and go-live there were at least 438 agent sessions: 63 started by a person and 375 started by another agent, each working on one job in its own copy of the repo. A separate reviewer agent checked pull requests on the assumption that the builder had over-reported, and caught real problems: a production build that would have served none of the new pages, and a form field that would have sent an emoji to our lead sheet. Both editors read the same rules (a small script keeps them in step), so our rules on tone, honest figures and what an agent may touch apply in either.
People made the calls that matter: what the site says, which figures are true enough to publish, which pages are ready and when it went live. Ben and Cam took 50 design decisions, each logged in a shared sheet, read the draft copy before it was approved, and production was only deployed when Ben said so.
The honest trade-off
A site in code has a cost. In Keystatic you fill in fields and put blocks in order, and a new kind of section needs a developer (or an agent and a review) to build the block first. Hosting, updates and the build are ours to look after. For our site, where we write code every day anyway, that's worth it. For a team that wants to redesign pages in the browser without a developer, a visual builder is the better pick, and we'll tell you which fits yours.
The numbers
- 21 days from the first commit (22 September 2026) to go-live (13 October 2026, 14:12 BST), with commits on 12 of them.
- 311 pull requests merged, 81 of them on the busiest day (10 October).
- At least 297 of them (95%) opened by AI agents.
- 807 commits on the main branch, at least 770 of them (95%) made by AI agents.
- At least 438 AI agent sessions: 280 Claude Code subagents, 95 Cursor jobs, and 63 sessions a person started.
- At least 338 prompts typed by a person. Cursor chats before 29 September weren't recorded.
- Over 3.3 billion tokens through the models. Most of that is agents re-reading the code on each step; the part they wrote was over 14 million tokens.
- 372 addresses on the old site checked against the new build, and 113 redirects from old addresses to their new pages.
- 84 blocks with 197 versions, in one registry, at go-live.
Every figure comes from our own records: the git history, GitHub, and the logs Claude Code and Cursor keep on the Mac they ran on. They count work on this site only, between the first commit and go-live, and they're floors, not estimates: anything we couldn't count isn't in them. A pull request or commit counts as an agent's only when an agent's own log shows it opening or making it (or the description carries the line Claude Code or Cursor adds); everything else counts as a person's.
Other things we built
- Built by us
Pacing Journey
The stored visits and forms from one person on one timeline.
See the build+4
- Built by us
Pacing TechStack
Our in-house scanner lists the tools and tracking a website runs. A quick scan takes about 5 seconds.
See the build - Built by us
Pacing CRM
Our own CRM: a form fill becomes a person, a deal and an instant alert.
See the build
+2
Bring your numbers.
We'll tell you if the spend makes sense.
- A 15-minute callYour goals, your challenges, and whether we're the right fit.
- A 1-hour discovery callWe dig into your numbers. Worth a hundred emails.
- A concrete planAds, a custom build or both, as a one-off project or ongoing.











