Marketing rebuild for a fintech
Cut LCP from 4.1s to 1.6s and lifted lead conversion 47% on the same content.
- ClientConfidential
- Year2026
- RoleLead engineer + designer
- Duration3 weeks
- StackNext.js · Postgres · Tailwind
Problem
A growth-stage fintech was losing about a third of paid traffic to a 4-second LCP and a marketing site the in-house team could not edit without an engineer. Brand, content, and information architecture were all working — the rendering and the editing workflow were not. We had three weeks before the next paid campaign launched.
Approach
- 01
Static-first rebuild on Next.js
Migrated the site to Next.js App Router with full ISR for marketing routes. Pages now serve from the edge with HTML in under 200ms cold and zero JS for content viewers.
- 02
Typed CMS layer the in-house team owns
Replaced the legacy WYSIWYG with a typed Sanity schema. Marketing now ships copy and layout changes without a deploy. We documented every block and shipped a Loom-recorded handover.
- 03
Image and font discipline
Self-hosted variable fonts via next/font, swapped JPEGs for AVIF with explicit aspect ratios, killed the third-party hero video library. Net asset weight dropped 68% on the home route.
- 04
Performance budget with CI gates
Added Lighthouse CI on every PR with a hard gate at 95+ desktop, 85+ mobile. Web Vitals reporting wired to PostHog so regressions surface within 24h, not next quarter.
Home hero — before (left): 4.1s LCP, layout shift on hero video. After (right): 1.6s LCP, no CLS.
Marketing now ships copy without engineering involvement. Every block is type-checked at the schema layer.
CI hard-gate at 95+ desktop. The PR pipeline blocks merges that regress vitals.
Result
What they said
Three weeks. Site that used to take 4 seconds opens instantly. Marketing is shipping pages without us. The whole stack is the boring kind of stable.