← All workCase study 01

Telehealth landing page and patient intake system, three brands

How I built a 45+ page landing and patient intake system in Next.js for a three-brand telehealth group: one shared brand config, signed intake links, patient portal, CRM sync and per-brand tracking.

At a glance
Sector
Telehealth group, three brands
Role
Frontend and product engineer, sole owner of the funnel layer
Scale
45+landing pages running on one shared system
Stack
Next.js, React, TypeScript, Stripe, Embeddables, Customer.io
The build

The problem

Three telehealth brands, one team, and every landing page was its own copy of the last one. Changing a price meant opening dozens of files and hoping nobody missed a variant. Patient intake was bolted on per brand, so tracking never agreed with billing and nobody trusted the numbers enough to act on them.

What I built

One shared system that renders every landing page from a brand config: colours, copy, offers, pricing, legal and the intake route a patient drops into. Adding a page is a config entry, not a new codebase. Over 45 pages run on it today across the three brands, and a price change lands everywhere at once instead of brand by brand.

The intake and patient side

Multi-step patient intake with signed links, so a patient can leave and come back without starting over and without a session anyone can forge. Completed intakes sync to the CRM and land in a patient portal the team actually works out of, rather than a spreadsheet somebody exports on Fridays.

Tracking that survives an audit

Each brand carries its own analytics and conversion identity, so attribution stops leaking between them. Events fire from the same place the money moves, which means the funnel report and the payment processor tell the same story.

Where it landed

A fleet of over 45 pages that two people can move in an afternoon. The work that used to be a sprint is now a pull request.

Outcome

A fleet two people can move in an afternoon

Building something on the same path? Email hello@emregnd.com, or read the next one: GLP-1 startup, launch to live.