The problem
The gym's first class is free, which is a strong offer undermined by a weak path to claiming it. Interested people had to call during opening hours and negotiate a time — a small amount of friction placed at exactly the moment someone has decided to try something intimidating.
Phone tag is where casual interest goes to die.
What I built
A single page that lets someone pick a class time and submit in about forty-five seconds. No membership, no account, no payment. The weekly schedule is defined as a pattern in one place, so the front desk can adjust class times without touching anything that looks like code.
On submission the team receives an email formatted to match how they enter leads into their sales system, and the prospect receives a confirmation. Staff update the CRM by hand — a deliberate choice that keeps the conversion path short and preserves a human follow-up.
The half that is not a website
A booking page produces bookings, which is only useful if someone reliably acts on them. So the project also delivered the operating material around it: a staff workflow defining what happens when a booking arrives and who owns it, text-message templates for follow-up, guidance on where the link belongs across social channels, and a QA checklist to run before sharing it.
That is usually the difference between a page that generates leads and a business that converts them. The page was the easy half.
Built to be reused
The server logic lives in one shared module with thin adapters for two different hosts, so the whole thing can move between platforms with a configuration change. When the Whittier location needed a promotion of its own, that structure meant starting from a proven engine rather than a blank page — as a separate repo and deploy, so neither location's funnel can break the other.