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.
Harbor/Scheduling
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.
Why it mattered
Where we started
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.
Research
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?
"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
The reframe
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.
The restructure
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.
Old model
New model
Solution
01
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
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
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.
Enabling support
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.
"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
Outcomes
Collaboration
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.
Scope, sequencing and the migration plan.
Template data model and the live preview engine.
Key takeaway
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.