Cobalt Physio · 2024

Online booking for a physiotherapy clinic network

Twelve clinics took bookings by phone, and front desks spent three hours a day on the line. We built online booking that respects clinician rules and syncs with their practice software.

  • Next.js
  • Postgres
  • Practice management API
Client
Cobalt Physio
Year
2024
Role
Product engineering, full stack
Duration
5 months
Services
  • Web app
  • API integration
  • Accessibility

The problem

Cobalt runs twelve physiotherapy clinics with 64 clinicians. Every appointment was booked by phone or email, then typed into a practice management system that had no public booking page. Front desk staff estimated three hours a day per clinic on the phone, and calls peaked at 8 a.m. when patients rang before work. About 14% of calls went unanswered at peak.

Off-the-shelf booking widgets had been trialled twice and dropped. Neither understood the clinic rules: initial assessments need 45 minutes with a senior clinician, follow-ups 30 minutes with anyone on the patient's case, and some clinicians only treat certain insurers. Double bookings from the second trial were still remembered with some feeling by the front desk team.

Process

  1. 01

    Rules as data, not code

    We sat with front desks in three clinics for two days and wrote down every rule they applied in their heads. We modelled appointment types, clinician skills and insurer eligibility as tables in Postgres, editable from an admin screen. That cost us two extra weeks up front but meant the clinic manager, not a developer, changes rules when a new clinician starts.

  2. 02

    Sync without double bookings

    The practice system's API was slow and had no webhooks, so we could not query it live per page view. We mirrored availability into Postgres every 60 seconds and held a slot with a short-lived lock while the patient completed the form. On submit we wrote to the practice system first and only confirmed once it accepted. Conflicts fall back to a callback request.

  3. 03

    Accessible for every patient

    Many patients are older or arrive in pain, often on a phone. We tested with screen readers and with five patients recruited at reception, and kept the flow to four screens with large tap targets. The calendar is a plain list of days and times rather than a grid, which tested faster and passes WCAG 2.2 AA without workarounds.

01Booking flow: four screens from treatment type to confirmation
02Day list instead of a calendar grid, tested with patients at reception
0360-second availability mirror, slot locks and write-first confirmation
04Eligibility rules as rows: appointment type × clinician skill × insurer
Our reception teams got their mornings back. The rules screen is the part I use most: when a new clinician joins, I set them up in five minutes.
Martin AchebeOperations Manager, Cobalt Physio

Outcome

Online booking went live clinic by clinic over six weeks. Six months in, 58% of all appointments are booked online, a third of them outside opening hours. Phone time per clinic fell from three hours a day to under one, and there has not been a single double booking caused by the system.

58%
of appointments booked online
−2.1 h
daily phone time per clinic
0
double bookings since launch

Tell us what is slow, broken or still in a spreadsheet

Send a short brief. Within two working days you get a reply from an engineer, not a sales rep, with first questions and a rough range.

Booking projects from February 2027

Live demo · Fieldnote Labs— View template →