All projects

multimodal.dev

I moved the company website off Webflow to Next.js and Sanity, matched it page for page, launched it, then made it faster on phones.

Client
Multimodal
Role
Frontend engineer, migration and speed
When
Sep – Oct 2026
multimodal.dev on a phone
  • Next.js
  • Sanity
  • Vercel
  • GSAP
  • Lighthouse
  • Beehiiv
Visit multimodal.dev

What it is

multimodal.dev is where banks and credit unions first meet Multimodal: solution pages, the product tour, the newsletter, the demo form. It had grown to 485 pages on Webflow, and marketing needed an engineer for every change.

The new site runs on Next.js with content in Sanity, so the team edits pages themselves.

My part

The first build of the new site matched none of the old pages. I ran the effort that made it match, fixed the gaps inside the existing code, took it through launch, and then ran the speed work.

I also wrote the site's design system from the pages that shipped, and the handbook marketing runs it from.

Match it, page for page

The problem. The new site had missing text, rough animation, wrong button colours and broken blog layouts. On a comparison rig it matched 0 of 20 page widths; the closest still differed by 19.9% of its pixels.

What I did.
  • Built a parity rig that compares each page against the live Webflow site at several widths, using Webflow's own export of 189 pages.
  • Fixed in rounds: GSAP animation, collection pages, 23 broken differences, and old security copy that 8 of 9 solution pages still carried.
  • Moved newsletter sign-up straight to Beehiiv, so nothing is lost when the old Zapier link is switched off.

What changed. The site launched matching the old one, with no lost pages and no broken sign-ups.

The multimodal.dev home page
The home page as launched.

Launch day

The problem. Switching a 485-page site in one afternoon, without losing analytics or a single demo request.

What I did.
  • Planned the switch so rollback was one DNS edit.
  • Once DNS moved on 21 October 2026, set the Tag Manager and analytics settings on Vercel and checked in a browser that page views fired.

What changed. The site switched at about 14:30 UTC and stayed up. Marketing now edits in Sanity without an engineer.

A credit-union lending solution page
One of the solution pages.

Faster on phones

The problem. Scores were uneven across the site, and the hero pages were heavy on mobile.

What I did.
  • Ran seven read-only audit agents, then four build lanes, with one rule: no visible design change without the designer's sign-off.
  • Measured through an HTTP/2 front, after finding the local server's HTTP/1.1 made good changes look worse.

What changed. Across 27 page types, measured over three alternating runs: largest paint 4.2 s to 3.2 s, pages 961 KB to 578 KB, and pages scoring 90 or more went from 3 to 8.

7385

median mobile Lighthouse score

A site marketing can run

The problem. The ten best pages came from three stylesheets that disagreed on 51 values.

What I did.
  • Wrote the design system from the pages that shipped, with the designer's colour rule, and swapped 264 hard-coded values for shared ones.
  • Made one Book a demo block for every page, approved by the designer.
  • Put Sanity Studio on preview deployments, and wrote the handbook the team runs the site from.

What changed. New pages come out of shared parts, and content changes no longer wait for an engineer.

The Intelligent Document Processing page
A product page built from the shared blocks.

How I worked

Parity and speed both ran as rounds of parallel AI agents: read-only auditors first, then small build lanes, each change measured before it merged. I set the rules, read the diffs and owned the result.

Next project

Have a project in mind?

Tell me what you need built, web or mobile, design to backend. I will come back with a plan.

Hiring a software engineer?

I am open to full-time roles. Let’s talk about your team and the work.