All Cases
−75% No-Shows · +43% Booking Completion · 1.5M+ Appointments/Month

Vitalis-Q — Rebuilding the Healthcare Scheduling Experience

Product Health-Tech SaaS · B2C & B2B
My Role Lead Product Manager
Timeline 28 weeks
Team 4 designers, 8 engineers, 1 data analyst

The platform and its scale

Vitalis-Q is a digital healthcare appointment platform operating across six European markets — Luxembourg, Belgium, Germany, Austria, Switzerland, and the Netherlands. It connects patients with over 200 medical specialties and supports 55+ languages, serving both walk-in patients and chronically ill users who require regular, coordinated care.

By the time I joined the product team, the platform was processing over 1.5 million appointment bookings per month and had strong top-of-funnel brand recognition. The provider network had scaled quickly — but the product infrastructure had not kept pace. The booking flow, provider dashboard, and notification system had been patched iteratively over four years without a structural review.

Three numbers sat at the center of every leadership conversation: a 23% no-show rate across the network, a 38% patient booking abandonment rate during the six-step reservation flow, and a practitioner-side NPS that had dropped eight points in two quarters. The data team had the numbers. No one had a plan to move them.

23%
No-show rate across network
38%
Patient booking abandonment
−8pt
Practitioner NPS drop (2 qtrs)
6
Steps in the old booking flow

Patients left. Practitioners complained. The system didn't tell us why.

Session recordings and funnel analysis pointed to a consistent pattern: patients initiated bookings, navigated through specialty selection and location filters, and then dropped off — most commonly at Step 4 (practitioner selection) and Step 5 (time slot confirmation). The UX had been designed around system logic rather than user intent.

On the practitioner side, the dashboard offered almost no operational value. Providers could see their appointments in a raw list — no daily load indicators, no no-show trends, no demand signals. High-volume clinics were scheduling blind, accepting slots that repeatedly went unfilled.

Booking funnel drop-off — patient sessions (n = 212,000)

Specialty selected
100%
Location confirmed
84%
Filter applied (lang/avail)
71%
Practitioner selected
52%
Time slot confirmed
38%
Booking completed
29%

The steepest drop occurred between practitioner selection and time slot confirmation — a 14-point fall driven by slot unavailability, ambiguous cancellation terms, and lack of alternative suggestions.

Old booking flow — 6 steps, designed around system constraints

Step 1
Specialty
100%
Step 2
Location
84%
Step 3
Filters
71%
Step 4
Doctor
52%
Step 5
Time Slot
38%
Step 6
Confirm
29%

The biggest discovery: 61% of abandoned bookings happened because patients couldn't find an available slot with their preferred practitioner and saw no alternative path. They weren't uninterested — they were stuck. The system had no fallback logic.

Two audiences, two completely different failure modes

We ran 24 patient interviews across Luxembourg, Belgium, and Germany — split between first-time users and existing patients. In parallel, we ran structured usability sessions with 18 practitioners (GPs, specialists, and clinic admin staff) using the existing Vitalis-Q Pro dashboard.

The patient research uncovered a confidence problem: users didn't trust the availability shown on screen. Slots marked as "available" had often already been taken by phone bookings that hadn't synced. Encountering this twice was enough for patients to abandon digital booking entirely and call the clinic directly.

The practitioner research uncovered an entirely different problem: practitioners had no analytics. They couldn't see which days drove no-shows, which specialties had chronically low utilisation, or how their schedule looked relative to patient demand patterns. They were reactive managers of a system that gave them no forward visibility.

No-show root cause analysis — 3,400 follow-up calls

Forgot the appointment
44%
Could not cancel easily
28%
Wrong time / misread slot
17%
Booked duplicate elsewhere
11%

72% of no-shows were directly addressable through product changes — reminders, frictionless cancellation, and clearer slot communication.

The booking experience: before and after

The old flow forced patients to specify specialty, location, language, insurance, and doctor preferences before seeing any availability. The new flow inverts this — showing real-time available slots first, letting patients refine from there, and offering intelligent alternatives when their preferred slot is taken.

Before
vitalis-q.com/book/step-1
Step 1 of 6 — Select Specialty
Medical Specialty *
General Practice
Cardiology
Dermatology
+197 more…
Location *
Insurance Type *
Preferred Language
Next →
You haven't seen any doctors yet. Steps 26 remain.
After
vitalis-q.com/book
Find a doctor near you
3 steps
🔍 Cardiology, Luxembourg
Search
Available today
DR
Dr. Renata Möller
Cardiologist · 0.8 km · EN / DE / FR
09:30 11:00 14:30
3
slots today
KV
Dr. Klaus Vandenberg
Cardiologist · 1.4 km · EN / NL
10:15 ★ 15:00
2
slots today
Slot confirmed instantly · Free cancellation up to 2h before

The provider dashboard: from appointment list to scheduling intelligence

Practitioners told us during research that the old dashboard "shows me what happened, not what's happening." It was a backwards-looking list — appointments, date, status. Nothing actionable. The redesigned Pro Dashboard gives practitioners their daily load at a glance, no-show trends over time, and demand signals they can act on: days with high unmet patient demand, time blocks with chronic underutilisation, and same-day cancellation rates by slot type.

Before — Vitalis-Q Pro Dashboard
pro.vitalis-q.com/dashboard
Appointments
09:00
M. Schneider Confirmed
09:30
A. Fontaine Pending
10:00
J. Müller No-show
11:00
L. Dubois No-show
14:00
S. Weber Confirmed
No analytics available
After — Vitalis-Q Pro Dashboard
pro.vitalis-q.com/dashboard
Good morning, Dr. Möller
Thursday, 8 May · 6 appointments today
↑ Fill rate 94%
No-shows
1
↓ from 3.2 avg
Demand unmet
4
Fri has gaps
Avg wait time
2.1d
↓ 31% this wk
No-show trend — last 8 weeks
23% → 6% no-show rate over 8 weeks post-launch
09:30
M. Schneider
Cardiology consult · 30 min
Confirmed
10:15
A. Fontaine
Follow-up · 20 min
Confirmed

Redesigning the booking state machine

One of the most consequential changes was invisible to patients: the appointment state model. The old system had four states — Pending, Confirmed, Cancelled, Completed. No-shows were logged retroactively by clinical staff, often days late. This made it impossible to build any proactive intervention.

We redesigned the state machine with seven distinct states and automated transitions based on time and patient action. This powered the reminder system, the cancellation incentive flow, and the provider analytics pipeline.

New appointment state machine — 7 states with automated transitions

Draft
Slot selected, booking not yet submitted
Expires in 8 min
Pending Confirmation
Submitted, awaiting practitioner acceptance
Auto-confirm in 2h
Confirmed
Accepted — patient notified by SMS + email
Reminder at −24h, −2h
Reminder Sent
Automated 24h reminder dispatched
Patient action tracked
At Risk
Reminder not opened within 4h — escalation triggered
+1 push notification
Attended
Completed — patient prompted for review
96% prompt response
No-Show
Auto-flagged at appointment time + 15 min — slot recycled
Slot offered to waitlist

The At Risk state alone — targeting patients who hadn't opened their 24h reminder — reduced no-shows by an additional 9 percentage points via a single follow-up push notification.

The new booking flow: from 6 steps to 3

The redesigned flow surface availability first, then confirmation. Patients see real-time slots before selecting a practitioner — removing the most common failure point. Alternative suggestions appear instantly when preferred slots are unavailable. Booking is completed in under 90 seconds from search.

New booking flow — 3 steps Live prototype
Step 1 of 3 — Find & Select Slot
vitalis-q.com/book
🔍 General Practitioner · Luxembourg
Find
14 doctors available today
AM
Dr. Anne Meier
GP · 0.3 km · ★ 4.9 · EN / DE
09:00 10:30 ● 14:00
Tap a time slot to continue →
Step 2 of 3 — Confirm Details
vitalis-q.com/book/confirm
Selected appointment
Dr. Anne Meier · General Practice
Thursday 8 May · 10:30 AM · 30 min
12 Rue du Fort, Luxembourg City
Reason for visit (optional)
Annual check-up
Send me a reminder 24h and 2h before
Confirm Booking →
Free cancellation up to 2h before appointment
Step 3 of 3 — Confirmed
vitalis-q.com/book/success
You're booked!
Dr. Anne Meier · Thu 8 May · 10:30 AM
Confirmation sent to your email and phone.
You'll receive
Email confirmation (now)
SMS reminder (Wed 7 May, 10:30 AM)
Push notification (Thu 8 May, 8:30 AM)
Cancel or reschedule anytime in My Appointments

What we tested and what happened

# Hypothesis Test Outcome
H-01 Surfacing available slots before practitioner selection will reduce abandonment at Step 4 A/B test · 50/50 split · 3 weeks · n=48,000 ✓ Validated −19pt abandonment at slot selection; +31% booking completion
H-02 A 24h + 2h automated reminder sequence will meaningfully reduce no-shows Phased rollout · 30% → 100% over 6 weeks ✓ Validated No-show rate fell from 23% to 9.2% in first 6 weeks
H-03 Frictionless cancellation (2-tap, no login required) will increase last-minute slot recycling Feature flag rollout · 14-day experiment ✓ Validated +67% cancellation rate · 84% of recycled slots rebooked within 4h
H-04 Showing practitioner ratings and patient reviews inline will increase practitioner selection rate A/B test · 50/50 · 2 weeks ~ Partial +8% selection rate but +14s avg decision time; kept ratings, removed review count
H-05 "At Risk" escalation push (for reminder non-openers) will reduce no-shows further Targeted push test · opt-in cohort · 3 weeks ✓ Validated −9pt additional no-show reduction; 23% open rate on escalation push
H-06 In-app waitlist for fully-booked practitioners will convert demand that would otherwise leave Beta rollout · 8 practitioners · 4 weeks ~ Partial 41% of waitlisted patients booked when slot opened; 59% had already booked elsewhere — waitlist window too long

What actually changed

We measured outcomes at 12 weeks post-launch across three cohorts: patient booking experience, practitioner dashboard adoption, and network-level metrics. The no-show reduction alone recovered an estimated 46,000 appointment hours per month across the network.

−75%
No-show rate
(23% → 5.8%)
+43%
Booking completion rate
(29% → 41.5%)
+22pt
Practitioner NPS
(recovered + exceeded baseline)
1.5M+
Monthly bookings
(all-time platform high)

Key metric changes — before vs after (12-week measure)

Booking completion rate
+43%
No-show reduction
−75%
Cancellation rate (healthy)
+67%
Slot recycling within 4h
84%
Practitioner dashboard adoption
78%

The most surprising outcome was the cancellation rate. Conventional product instinct is to minimise cancellations. But by making cancellation genuinely frictionless, we increased it — and 84% of those slots were rebooked within four hours by the waitlist. A 67% higher cancellation rate was actually a 67% improvement in slot utilisation.

What I'd do differently

The waitlist experiment (H-06) revealed a gap in our thinking. We assumed patients would wait 2448 hours for a cancelled slot to open. Most wouldn't — they had a health need, not a preference. We should have tested slot alert timing much earlier. A "notify me within 2 hours" design would have converted significantly better than the 48-hour batch model we shipped first.

We also underinvested in the practitioner onboarding for the new dashboard. Adoption hit 78% — good, but the 22% who didn't adopt were predominantly older single-practitioner clinics who saw no benefit in analytics they didn't know how to act on. A structured onboarding session with a single "insight to action" moment would have closed that gap.

The core lesson: the platform's unit of value is a completed, attended appointment — not a booking. Every design decision should be evaluated against that end state, not the intermediate confirmation event.

Interested in
working together?

I'm open to new opportunities and conversations about difficult product problems.

Get in Touch