The short version

128 pages rebuilt. Homepage transfer reduced from 1,437 KB to 838 KB.

Key decision

Preserve content and behavior, verify the rebuild against production, and deliver a cutover runbook with rollback.

Verification

384 screenshot comparisons and 12,629 link checks. Built and verified ahead of cutover.

homepage transfer · before / after
before
1,437 KB
after
838 KB
removedjQuery · hosted runtime · third-party plugins · tag and consent scripts out of the render path
Same content, same design. Homepage transfer 1,437 KB to 838 KB.

Why

Organic clicks had fallen 37% while average ranking improved, and almost all remaining organic traffic was branded. That prompted an investigation of click-through and page experience. The site loaded shared CSS, a hosted runtime, and jQuery on every page. Those were concrete performance costs to remove, though the traffic trend alone does not establish a cause. The client also wanted text edits to move through pull requests. The rebuild preserves the existing content and design while reducing transfer weight and adding a repeatable verification process.

Constraints I worked inside

  • No DNS, form, or tag-management changes until cutover. The build lived on a preview with layered indexing controls.
  • Never submit a live form. Form markup was verified by byte-matching it against the live DOM.
  • Pre-existing live-site bugs (a broken form field, a broken redirect, an orphaned tag container) were reproduced faithfully, not silently fixed. Fixing them was scoped as a marketing decision, separate from the migration.

QA before an irreversible change

visual-diff harness · production vs rebuild
production rebuild diff 384 / 384 compared read against a measured noise floor 12,629 internal links verified · form markup matched · metadata checked on all 128 pages
A measured noise floor separates real regressions from rendering jitter.

Engineering

  1. ExtractEvery page, collection, and asset pulled through the source platform's API. Images recovered at original quality rather than the lossy converted versions the platform served.
  2. Convert17 CMS collections mapped to Astro content collections with validated schemas.
  3. Verify384 screenshot comparisons against production, 12,629 internal links checked, redirect coverage and metadata verified across all 128 pages.
  4. Cut weightjQuery, the hosted runtime, third-party plugins, and consent and tag scripts removed from the render path. Homepage transfer fell from 1,437 KB to 838 KB.
  5. Protect the repoProtected main with required review and no force-push, tested deliberately by trying to break it.

Delivery

  • Cutover runbook with pre-reviewed DNS batches, certificate pre-validation to avoid an HSTS lockout, a go-live checklist, and a one-record rollback that takes five minutes.
  • Plain-language editing guide so non-technical staff publish through GitHub pull requests and Claude Code.
  • Engineering documentation covering the pipeline, the QA harness, and the deploy path.

Numbers

Pages128
CMS collections17
Assets re-hosted735
Migration pipeline22 scripts
Screenshot comparisons against production384
Internal links verified12,629
Homepage transfer1,437 KB to 838 KB
Organic-click decline that prompted the work37%
Rollback timefive minutes, one DNS record
All figures appear on my resume. The site is built and verified, not launched. Cutover waits on an external access grant.

This portfolio site is on the same stack: Astro static build on Cloudflare Pages.

Explore the portfolio

Selected workFour systems and their outcomesAds optimization engineClassification, evaluation, verified mutationsAI sales engineRetrieval, claim validation, human approvalAttribution platformTenant isolation and client economicsAgent orchestration platformIsolated worktrees, guardian policy, durable jobsWebsite re-platformMigration, visual verification, rollbackHow I workBackground and engineering principlesStart a conversationandreasengelbertson@gmail.com
↑↓ navigate ↵ openSearch stays in your browser