Harbor/Scheduling

I redesigned how 4,000 clinics set up and run their schedules.

Harbor is scheduling software for independent physical therapy and wellness clinics. Getting a clinic's calendar right is the moment Harbor either earns its place or gets abandoned. I led the redesign of setup and day-to-day scheduling, partnering with product and engineering leads while doing the hands-on design work myself.

Role
Lead Product Designer
Timeline
Feb – Aug 2025
Team
1 PM, 5 engineers, 1 designer
Scope
Research, IA, interaction, UI

Setup was where clinics gave up.

41%of trial clinics never published a bookable schedule.
3.5 hrsmedian time from sign-up to first booking.
1 in 4support tickets were about availability rules.

The setup flow was a settings page with a progress bar on top.

Clinics configured providers, rooms, services and hours on separate screens, each with its own rules. Nothing showed what a patient would actually see until the very end, so mistakes appeared as empty calendars or double bookings weeks later.

The first plan was to add a guided checklist. Before committing to that, I wanted to know where clinics were getting stuck, and why.

The original setup flow: twelve screens, no preview.

The problem wasn't the steps. It was the order.

I ran 14 interviews with clinic owners and front-desk staff, and coded 600 support tickets by the setup step they came from. Clinics didn't think in "services" and "resources". They thought in weeks: who's in on Tuesday, and what can they see?

Affinity map from clinic interviews.
Support tickets grouped by the setup step they came from.

"I don't need to set up a database. I need to tell you that Maria does mornings and Dev does evenings, and have it just work."

Owner, three-provider PT clinic

A better checklist wouldn't fix a broken mental model.

Availability lived in four places: provider hours, room hours, service rules and clinic closures. A bookable slot existed only where all four overlapped, and clinics had no way to see that overlap. When a slot went missing, they had to check every screen.

That isn't a setup problem. It's a visibility problem.

Old model (left): availability built from four separate rules. New model (right): one weekly template.

One week, one source of truth.

We moved availability out of settings and into a single weekly template for each provider. Rooms and services became properties of a shift, not separate rule sets. Clinics now edit the week directly, and the bookable result updates as they go.

Three changes that make the schedule readable.

01

Week builder

Clinics paint shifts onto a week instead of filling in forms. Each shift carries its room and services, so the "why can't patients book this?" question has one place to look.

02

Live patient preview

A side panel shows exactly what a patient sees for any service, updating as the schedule changes. Slots are marked bookable, limited or blocked, with the reason.

03

Conflict check

Before publishing, Harbor flags double-booked rooms, providers with no services, and gaps against the clinic's stated hours. Each flag has a one-click fix.

Helping support without rebuilding their tools.

The support team asked for a full admin redesign. Instead, I proposed a read-only "clinic lens" that shows the same week builder and patient preview a clinic sees, inside the existing admin. It shipped in two sprints and left the larger rebuild for later.

The clinic lens inside Harbor's existing support admin.

"For the first time, I can see the clinic's schedule the way they do. Most tickets are now a two-minute answer."

Support Team Lead, Harbor

Faster setup, fewer surprises.

+22 ptstrial clinics publishing a schedule (41% → 63%).
48 minmedian time to first booking, down from 3.5 hrs.
−35%availability-related support tickets.

Building it together.

The new model meant a data migration for every existing clinic. I worked closely with engineering on how legacy rules would map into templates, and we designed the edge cases together: split shifts, rotating weeks, and clinics that close for lunch.

With our PM, I set the release order. We shipped the week builder to new clinics first, proved it on a small group, then migrated existing accounts in waves.

  • Jordan LeeProduct Manager

    Scope, sequencing and the migration plan.

  • Priya NatarajanEngineering Lead

    Template data model and the live preview engine.

One of many exploration boards from the week builder.

Clinics didn't need fewer steps. They needed to see the result of each one.

Once the schedule was visible, setup stopped being a settings page and became the product. The lesson I took away: when people keep making the same mistake, fix what they can see, not just how many steps there are.

The shipped schedule view.