A ground-up rebuild of dawson.com, mine end-to-end — design system, CMS architecture, custom scripts, copy, publishing pipeline. Launched June 2026 and verified page by page.

Dawson Construction is a third-generation, employee-owned general contractor — Juneau and Bellingham, est. 1967, 917 projects built. In 2025, leadership put a rebuild of dawson.com on the table. Here is what they asked for, and what shipped.
Four asks, one idea underneath: make the website sell Dawson the way Dawson sells in a proposal room — before an RFP ever goes out. A digital preemptive proposal.
Every ask shipped, every one verifiable on the live site — and every bug found along the way is logged below, with its fix.

Nine weeks separate the first 42-finding punch list from the launch-day sweep that closed the project green. The full breakdown — problem, build, bugs and receipts — follows below.
By 2025 the old dawson.com was a static WordPress slideshow, two testimonial cards, an empty portfolio page, and a careers PDF.
A contractor with 917 completed projects had a portfolio page with zero projects on it. The About page rendered client-side — invisible to search engines. The homepage carried two contradictory stat blocks 600 pixels apart; one claimed 12,000 projects, and the defensible number is 917.
The clearest measure of how little was there: the entire 2025 homepage ran 2,188 pixels deep. The rebuild runs 6,756 — three times the story on the same URL.
And the rebuild didn't start with me. Leadership first hired a third-party agency — which ran two months past its own timeline with little more to show than a wireframe prototype of the three main pages. I took the project over in-house.
Construction is a craft people want to watch happen. A slideshow can't show that. An empty portfolio page can't either. Here is everything described above, in one screen:

The takeover ran as a full studio process, every phase in-house: the whole site re-wireframed from zero in two weeks, then built template-free in Webflow over four months — branding carried down to the favicon, video content planned before it was shot.

Research came before pixels: Turner, McCarthy, Wilhelm and Rosendin, reverse-engineered — then rebuilt in Dawson's voice with Dawson's own photography. A ten-dimension audit scored the work-in-progress 48/100 against Hoffman's 87, and that gap became the punch list.

The CMS is the load-bearing change. Thirteen collections; 119 published project pages. Marketing adds a record once and the index, the filters, the related rails and the History modules update themselves.

The featured slider is fed by math, not mood.

The design system absorbed an archaeology problem — 1,624 accumulated classes — and answered with canonical families: dw-card, dw-btn, dw-shelves, dw-positions. Fifteen competing button classes became two.

Careers went from a PDF download to a pipeline. HR posts a requisition in the company's hiring system; it renders on dawson.com without anyone touching the site.

Speed was measured, not assumed — production domain, launch day, cold cache.

And the brief's first line, kept: the homepage opens on the company's own drone footage — planned, shot-listed, and cut into a silent loop with no controls. Construction in motion. Thirty-six seconds on the production site, the day it launched:
The bidding form that mailed no one. The highest-value form on a contractor's site wasn't reaching anyone. Webflow was storing submissions — so the failure was delivery, not wiring. Root cause: a per-form notification override, visible only in the Designer and invisible to the API, silently beating the global setting. Repointed, republished, confirmed.
Three layers of reduced-motion kill switch. One visitor accessibility setting froze the entire site: GSAP's guard, Webflow's IX2 engine and the background-video component all honor prefers-reduced-motion independently. The fix is a scoped matchMedia override in the site head — exercised across 11 pages, then re-verified page by page on dawson.com.

The totem-pole bug. A project gallery cropped a totem pole photograph to a fifth of its height — the frame geometry was wrong for a six-decade, mixed-orientation archive. The fix took an evening. The standard took the sweep: all 119 galleries verified programmatically on the production domain, every slide.
The rest of the log is below. Every row was re-verified on the live domain. None of it was found by a visitor.



Leadership asked for movement, so the static slideshow became film. The new hero is silent drone footage of a Dawson tower crane at work, captured by our own team and cut for fast load and silent autoplay. It plays here exactly as it runs on the live site. The same motion language now carries through the whole build: GSAP scroll reveals, Webflow Interactions, hover states, and carousels that move because the company finally does. At launch the motion system survived its hardest test — a visitor accessibility setting that silently disabled every animation on the site through three separate layers of the stack. The fix and the three-layer diagnosis live in the challenges section below; the point is that the film kept playing.
Before touching a pixel I studied the national firms leadership wanted to stand beside, and reverse-engineered what made each site work. Turner set the bar for careers architecture: hero, culture proof, clear role pathways. McCarthy showed how sector landing pages turn a portfolio into a sales tool. Wilhelm's one-line filter bar became the model for browsing the project archive. Rosendin's footer and publication patterns shaped the site-wide chrome. Every benchmark was then rebuilt in Dawson's voice with Dawson's own photography. Borrowed discipline, original skin. The same discipline got a scoreboard: a ten-dimension competitive audit scored the work-in-progress 48/100 against Hoffman's 87 — and the gap became the punch list that the next six weeks worked through, item by item, on the record.

Midway through launch week, a project gallery cropped a totem pole photograph down to a fifth of its height. The gallery frame ran object-fit: cover in a fixed-height, full-width slider — perfect for drone landscapes, wrong for portrait photography, and a construction archive spanning six decades contains plenty of both. The fix pairs object-fit: contain (applied inline per image, because Webflow's generated stylesheet beats custom !important rules) with a blurred, full-bleed copy of the same photograph painted behind each slide — portraits now float on their own image instead of dead space. The fix itself took an evening. The standard is what happened next: a programmatic sweep of every one of the 119 project galleries on the production domain — object-fit verified, backdrop verified, image integrity verified, on every slide of every gallery. One rule from this project's own playbook: fix the class of problem, not the single instance you were shown.
The 48 hours around DNS cutover surfaced the three bugs that would have cost the most quietly: bidding-form notifications routing to a per-form override instead of the monitored inbox — the kind of misconfiguration that loses real work, found by proving submissions were stored and the failure was delivery; a reduced-motion kill switch buried in three separate layers of the stack that froze the entire site for visitors with animations off; and 41.8 megabytes of hero video, re-encoded to 24.3. Every fix shipped with its own verification pass on the production domain: forms re-checked with reCAPTCHA v2 live, the motion override exercised across 11 pages, all 119 galleries swept after the crop fix, and a final 120-URL HTTP audit with the hostname stamped into the log. Launch-day confidence wasn't a feeling. It was a checklist with receipts.

Nine weeks, five audits, every score preserved — including the ugly ones. They are why the launch wasn't ugly.
What remains is on the record too: a sitemap to enable, one orphan page. A site is never finished. This one has stopped pretending otherwise.

What I care about most is what the site does when nobody is working on it. Records in, pages out. Jobs in, listings out. Two button classes instead of fifteen. A regional contractor doesn't close the gap with the giants by imitating them — it steals their discipline and keeps its own voice. The system outlasts the session. That was the point.