Case study · Dental practice
A 1.1MB font for 64 icons.
A dental practice in Vienna, Virginia had nine pages, a contact form that had never once sent an email, and a homepage carrying a megabyte of icon font. Here is what changed, measured against the site it replaced.
Before
After
The problem
Dr Julia Lokitis took over an established Vienna practice in 2024. The website she inherited was built and hosted by a dental-marketing vendor, and it did what those sites do: it existed. Nine pages. A stock photograph of a family nobody at the practice had ever met. Thirty-one treatments the practice offers, and no page for any of them.
Search bore that out. 51 ranking keywords and 43 organic visits a month — and her single best keyword belonged to a different practice in Ashburn with a similar name, so a meaningful share of what little traffic she had was people looking for someone else.
And the contact form had never worked. Not "worked badly" — every appointment request submitted through that website went nowhere. The person filling it in got a thank-you message. Nobody at the practice ever saw it.
What we built
Forty-one pages from one content model: a page for every treatment she actually offers, an answers library aimed at the questions people type at 11pm, her real team with their real photographs, and the HIPAA notice her compliance consultant supplied. Her own photographer's work throughout — the stock family is gone.
Then the parts you cannot see. Structured data on 37 pages. A working appointment form that emails the front desk and keeps its own record, so a deleted message is no longer a lost patient. Analytics and Search Console, because the practice had no way to know how any of it was performing.
The migration is where these go wrong
Two things would have quietly cost her everything she had built, and neither shows up as an error anywhere.
The first: every canonical tag, social URL and sitemap entry still pointed at the staging address — 217 references across 43 files. Launch like that and you have told Google the real copy of every page lives somewhere else.
The second: the old and new sites shared no URL structure, so all 48 indexed URLs would have 404'd on cutover. Including /cosmetic-therapeutic-botox-injections/, which ranked #3 locally and #9 nationally — comfortably her most valuable page. Forty-nine permanent redirects, and every one followed through to a live page before the domain moved.
Her email mattered more than any of it. The practice runs on Microsoft 365, and a nameserver change moves mail as surely as it moves the website. All six mail records were rebuilt on the new provider and diffed against the originals before anything was pointed anywhere. The registry switched in about fifteen seconds and her mail never noticed.
The site we replaced scored 100 on accessibility. Our first build scored 88. That is a regression, and we found it because we measured the old site first.
Measured against what it replaced
The honest way to judge a rebuild is against the thing you took away, not against zero. So we ran the old site through Lighthouse before touching anything, and kept running both.
| Measure | Old site | Now |
|---|---|---|
| Mobile performance | 57 | 85 |
| Desktop performance | 69 | 99 |
| Accessibility | 100 | 100 |
| Largest Contentful Paint (mobile) | 11.7s | 4.1s |
| Largest Contentful Paint (desktop) | 3.5s | 0.8s |
| Page weight (mobile) | 2.57MB | 0.80MB |
| Time to first byte | 0.29s | 0.17s |
| Pages | 9 | 41 |
| Pages with structured data | 8 | 37 |
| Working contact form | No | Yes |
| Analytics | Tag manager | GA4 + conversion event |
Three things we had to fix in ourselves
Accessibility went backwards before it went forwards. Our first build scored 88 where the old site scored 100 — small print at 60% opacity, headings skipping a level, and no <main> landmark on any page. All of it invisible to the eye and obvious to a screen reader. Fixed to 100 before the domain moved.
Mobile was slower than it should have been, and the first fix was the wrong one. We replaced Tailwind's browser-side compiler with a stylesheet built once at deploy — which took desktop from 69 to 98 and moved mobile not at all. Reading the diagnostics instead of guessing again found the real culprit: the icon font was requesting 1,125KB of variable font, every weight and every fill axis, to draw 64 icons. Subsetted to exactly those icons: 10KB. A 99.1% reduction, and the actual mobile bottleneck.
The old site had one thing we didn't. Its homepage carried FAQ structured data and ours did not, so the rebuild would have surrendered a rich result she already held. Her seven answers were carried across from her own previous site, as a visible accordion and schema — with a correction: the same-day-emergency answer now says the office is closed Friday to Sunday, because it is.
What we are not claiming. This site went live in August 2026. Search results move over months, not days, so there is no ranking improvement to report yet and we will not invent one. The baseline is written down — 51 keywords, 43 visits a month, 152 referring domains — and the next report will be measured against it. Everything in the table above is a property of the site itself, measured on the live domain, and true the day it launched.
Where it stands
Live at nvdsolutions.com. Her email never moved, every old link still lands somewhere sensible, and the appointment form reaches the front desk for the first time since the practice has had a website.
WALKTHRU LABS