Sapient, the performance engagement that took a biotech platform from a C grade to an A.
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.
GTmetrix grade, C to A. Performance score 63% to 97%, structure 89% to 99%.
Total Blocking Time, 2.3s to 84ms. The main thread clears almost immediately now. Five long tasks remain, all low severity.
Total page size, 3.97MB to 589KB. Requests fell from 78 to 22, most of it compressed video and removed scripts.
Core Web Vitals passed on real-user data the whole way through. The grade moved; the field experience was already sound.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.