CASE STUDIES · ENGAGEMENT RECORD
CS.02 / 02 · FILED

Make the site as fast as the work behind it.

Sapient, the performance engagement that took a biotech platform from a C grade to an A.

B-02 · BUILD WINDOW · FIG. 01

2.3 seconds of blocking time, baseline. 84 milliseconds after the build.

The work ran in staged sessions with a measurement window between each, because the cache layer needs hours to propagate before a number means anything. Lab figures from GTmetrix, field data from CrUX.

STAT 01 · GRADE

C→A

GTmetrix grade, C to A. Performance score 63% to 97%, structure 89% to 99%.

STAT 02 · BLOCKING TIME

−96%

Total Blocking Time, 2.3s to 84ms. The main thread clears almost immediately now. Five long tasks remain, all low severity.

STAT 03 · PAGE WEIGHT

−85%

Total page size, 3.97MB to 589KB. Requests fell from 78 to 22, most of it compressed video and removed scripts.

STAT 04 · FIELD DATA

−77%

Core Web Vitals passed on real-user data the whole way through. The grade moved; the field experience was already sound.

B-03 · RECORD · THREE CHAPTERS

How the build actually unfolded. Assets first, then scripts, then the cache layer.

Every performance engagement has a baseline, a body of work, and a result. This one is written in that order, with the caveat at the end.

01
CHAPTER · SETUP
Baseline & diagnosis

A site scoring a C in the lab. Passing Core Web Vitals with real users.

Sapient runs an omics platform for biotech and pharma research, selling a technical product to scientists and research leads who read closely before they trust anything. The site looked clean and still scored a C on GTmetrix, dragged down by 2.3 seconds of main-thread blocking and a 3.97MB page.

The real-user data told a different story than the lab. On CrUX field data the site was already passing Core Web Vitals on desktop. So this was not a rescue. The problem was the lab grade and the page weight, and the causes were specific.

Three uncompressed background videos, one of them loading twice. A 30,000-line inline JavaScript animation sitting in the theme functions file. Duplicate Swiper and prefixfree libraries. GA4 and the LinkedIn tag hardcoded into the page instead of the existing GTM container. Fonts served as TTF and EOT instead of WOFF2. Every cause was specific and fixable.

02
CHAPTER · WORK
Three phases · staged

Assets first. Scripts second. Cache last.

The measurement gap between phases matters more than the order here. NitroPack needs hours to propagate, so each change had to settle before the next number meant anything. The work ran staged across sessions for that reason.

PHASE 01 · ASSETS

Compress the heaviest bytes first.

Compressed the three background videos with ffmpeg to VP9 and WebM, 2.61MB down to roughly 0.88MB. Removed the duplicate hero-video load. Converted the fonts from TTF and EOT to WOFF2. The unglamorous half of performance work, and the half that moves page weight the most.

PHASE 02 · SCRIPTS

Delete the scripts doing more harm than work.

Removed the 30,000-line inline animation from the theme functions file, taking it from 35,000 lines to 1,440. Cut the duplicate Swiper and prefixfree libraries. Migrated GA4 and the LinkedIn Insight Tag out of hardcoded page tags and into the existing GTM container. Most of the blocking time lived here.

PHASE 03 · CACHE

Defer what the browser does not need yet.

Replaced NitroPack’s Optimize GTM setting with explicit delayed-script rules, then enabled Delay non-critical resources in Custom mode. That deferred jQuery and Elementor initialization until interaction and cleared the blocking long task that code changes alone could not reach. The setting that took the grade the last step to A.

03
CHAPTER · RESULT
Numbers · A grade

An A grade, with the page weight to back it up.

Grade: C to A. Performance score 63% to 97%, structure 89% to 99%. The lab grade that started this engagement is now an A.

Blocking time: 2.3s to 84ms, down 96%. Time to Interactive went to 1.5s, First Contentful Paint to 588ms. The main thread clears almost immediately now.

Weight: 3.97MB to 589KB, down 85%. Requests dropped from 78 to 22. Fully loaded time went from 6.4s to 1.5s.

Field dat: still passing. Core Web Vitals stayed green on real-user data the whole way through. The lab grade caught up to the field experience.

B-05 · CLIENT STATEMENT · FILED

"Our site passed Core Web Vitals but still graded a C, and our team couldn't explain it. Jeremy traced every cause, cut the page weight by 85%, and got us to an A without changing how the site looks or reads. He handed us a before-and-after we could give straight to leadership. Direct, fast, no retainer."

Name, Title · Sapient
B-06 · PATTERN NOTES · GENERALIZES

What to flag for anyone running a similar site. The pattern isn't unique to Sapient.

The same three things show up on almost every site that grades poorly while feeling fine. If any sound familiar, the same fixes usually apply.

NOTE 01
Lab score and field data often disagree.

GTmetrix said C. Real users were already passing Core Web Vitals. Decide which number matches your goal before chasing a letter grade, because they measure different things.

NOTE 02
The biggest wins are usually deletions.

A 30,000-line inline script and two duplicate libraries did more damage than anything that needed building. Most performance work removes weight. It rarely adds tooling.

NOTE 03
The right cache setting can beat hours of code.

One NitroPack control cleared a blocking task that refactoring could not. Learn your stack’s switches before you rewrite anything. The setting moved more than the code did.

B-07 · IF THE SITE FEELS SLOW

A slow site is usually fixable without a rebuild. Start with a diagnostic.

A CRO Audit ($3,500, 5 days) finds where conversion is leaking. A GEO Audit ($3,500, 7 days) does the same for AI-search visibility. Performance and Core Web Vitals work is scoped after a fit call.

Send a URL

One page, one sentence. I’ll reply with the first few things I’d fix, usually within a day.

    Start a project

    Pick what you are starting and where. I will come back with scope and a kickoff date.