Home > Case Studies > Revenue Operations

CASE STUDY

RESCUING A FAILED PRACTICE MANAGEMENT SYSTEM AND SCALING TO €3M IN ANNUAL BOOKINGS

RESCUING A FAILED PRACTICE MANAGEMENT SYSTEM AND SCALING TO €3M IN ANNUAL BOOKINGS

4-location medspa chain, Germany | 16 months engagement

4-location medspa chain, Germany | 16 months engagement

€250k Monthly Bookings

€250k Monthly Bookings

60% → 85-90% Utilization

60% → 85-90% Utilization

€10k+ Monthly Savings

€10k+ Monthly Savings

70% Faster Booking Engine

70% Faster Booking Engine

The Client

A 4-location aesthetic medicine chain in Germany running on legacy practice management software that felt like it was built in the early 2000s. Slow, sluggish, and frustrating - but it worked. Barely.

They knew they needed a modern, custom solution built specifically for their multi-location aesthetic practice workflow. So they hired an agency with 3 full-time engineers and invested heavily in building a replacement system.

Six months later, that project was a disaster. The agency was over budget, behind schedule, delivering broken features, and making excuses. Doctors testing the new system were pulling their hair out. The agency started saying things were "not possible to do." Trust was gone.

At that point, I'd built some smaller projects for them - fast, reliable, and with clear communication. They asked if I could take over the entire practice management system. Alone. And fire the agency.

I said yes.

The Challenge

Inheriting a broken, over-engineered system The agency had built an incredibly complex, over-engineered mess. My instinct was to scrap it and rebuild from scratch in a month. But internal politics prevented that - the company had already spent significant money on the existing system, and leadership couldn't justify throwing it all away.

I had to work with what they gave me: fix the broken code, salvage what was usable, and get it working.

Replacing critical legacy infrastructure The new system had to completely replace the old practice management software that ran their entire operation. Any downtime or bugs on launch day would mean chaos across 4 locations with real patients and practitioners.

Timeline pressure The company had been waiting months for the agency to deliver. They needed this working, now.

Zero margin for error on migration We had to migrate patient data, appointment history, and practitioner schedules from TWO different legacy systems without losing anything or creating inconsistencies.

Live deployment with no downtime window I had to deploy over a weekend between Saturday night and Sunday morning when usage was lowest. One shot to get it right.

The Solution

Phase 1: Takeover and Stabilization (2 months)

I took over the broken codebase from the 3-person agency team and spent 2 months fixing, rebuilding, and getting it production-ready while simultaneously working on other projects for the company.

What I built/fixed in those 2 months:

Complete practice management system:

  • Multi-location scheduling and calendar management

  • Multi-resource booking (practitioners, treatment rooms, equipment/devices)

  • Appointment types configuration (pricing, duration, resource requirements)

  • Doctor schedule management

  • Patient records and treatment history

New booking funnel (frontend):

  • Multi-language support for international patients

  • Real-time availability calculation

  • Treatment selection and scheduling flow

  • Replaced the slow, broken funnel from the agency

Booking engine optimization:

  • Reduced timeslot calculation time by 70%+ through algorithm optimization

  • Built logic for edge cases and specific booking scenarios

  • Foundation for future utilization optimization

Data migration:

  • Built scripts to migrate data from 2 different legacy systems

  • Ensured data integrity across patient records, appointments, and history

  • Scheduled migration for Saturday night/Sunday morning deployment

The weekend deployment: I stayed up through the night between Saturday and Sunday to deploy, monitor, and fix any issues in real-time. We ripped off the band-aid. It worked. The old legacy system was gone. We could now iterate and improve on a system that actually functioned.

Phase 2: Building improvements rapidly (Next 3-4 months)

After the successful launch, I became a forward-deployed engineer - embedded with the users, shipping features constantly.

My approach:

  • Talked daily with doctors, front desk staff, remote customer care, marketing team, and management

  • Fixed bugs and shipped improvements until 3 AM to ensure issues were resolved by the next morning

  • Built trust by responding immediately to problems on Slack

Initially, staff were resistant to change. But because I fixed their issues so fast - often the same day, sometimes within hours - they started trusting that problems could actually be solved now. They went from skeptical to constantly texting me feature requests.

What I built in this phase:

Utilization optimization:

  • Improved practitioner utilization from 60-65% to 85-90%

  • Reduced wasted calendar gaps from 6.9% to 3.5%

  • Result: €10k+/month saved in recovered practitioner time

Booking funnel optimization:

  • Worked with head of marketing and designer to improve conversion

  • Added bundle upsells and treatment packages

  • Made the design faster and more intuitive

  • Now processing 2,000+ appointments/month (€250k value)

Invoice generator:

  • Built compliant with German tax regulations and legislation

  • Automated invoice generation for all treatments and payments

Live analytics dashboard:

  • Real-time operational metrics for management

  • KPI tracking to drive decision-making

  • Improved data quality across operations

"Board" feature (live operations view):

  • Kanban-style view of all today's appointments

  • Drag appointments from "scheduled" → "waiting room" → "treatment room"

  • Gave front desk and doctors real-time visibility into patient flow

  • Doctors could see if their next patient had arrived

  • Front desk could send emails, generate QR codes, process payments instantly

  • Reduced wait times and prevented delay ripple effects

Digital paperwork:

  • Patients fill out required forms online before arrival

  • 75% completion rate pre-arrival

  • Reduced in-clinic waiting time by 10+ minutes per patient

  • Eliminated delays caused by patients arriving and needing to complete paperwork

Deep integrations:

  • Connected to marketing tools for smart notifications

  • Integrated with internal workflow systems

  • Built features to reduce cancellations and no-shows

  • Working toward making this system the single source of truth for the entire operation

The REsults

Successful rescue of a failed project Took over a broken system from a 3-person agency team, fixed it in 2 months, and deployed it successfully across 4 locations with zero critical downtime.

€250k in monthly bookings processed The system now handles 2,000+ appointments every month, representing €250k+ in monthly revenue (€3M annually).

60-65% → 85-90% practitioner utilization Calendar optimization and reduced gaps meant practitioners were billing for 20-25% more time. That's an extra 20-25 hours of revenue per practitioner per month.

€10k+ saved monthly By reducing wasted calendar gaps from 6.9% to 3.5%, the company saves over €10k per month in recovered practitioner time that would have otherwise been lost.

70%+ faster booking engine Algorithmic optimization reduced timeslot calculation time by over 70%, significantly improving the patient booking experience and reducing drop-off.

10+ minutes saved per patient Digital paperwork completed before arrival (75% adoption) eliminated waiting room delays and prevented schedule ripple effects.

Staff buy-in through speed By fixing issues the same day (often within hours), staff went from resistant to change to fully bought in. They trusted that problems could actually be solved now.

Scalable foundation The system was built to handle growth and has become the operational backbone of the practice. It continues to evolve based on real user needs.

Timeline

Month 1-2: Takeover from agency, code fixes, stabilization, data migration preparation, and deployment
Saturday night/Sunday morning: Live deployment and migration
Month 3-6: Forward-deployed engineering - rapid iteration, feature development, optimization, and user support
Ongoing: Continued refinement, new features, and integration work throughout 16-month engagement

Initial critical path: 2 months from takeover to live deployment

Key Takeaways

This project succeeded because I was willing to get my hands dirty with a messy inherited codebase and fix it, even though rebuilding from scratch would have been cleaner and faster. Sometimes you have to work with organizational constraints.

But the real success came from the forward-deployed approach: being available 24/7, talking directly to users, fixing issues immediately, and building trust through speed. Features don't matter if users don't trust the system. Trust comes from responsiveness.

The 85-90% utilization improvement wasn't from one big feature - it was from dozens of small optimizations, edge case handling, and algorithmic improvements compounded over months.

The lesson: Taking over failed projects is hard. But if you can ship fast, communicate clearly, and actually solve user problems, you can turn skeptics into advocates. And sometimes the best engineering decision is being available on Slack at 3 AM to fix a critical bug before the morning shift.

NEED SOMEONE TO FIX YOUR BROKEN SYSTEMS?

Whether you're starting from scratch or rescuing a failing project, let's discuss how I can deliver operational systems that actually work.

Daniel Holler

Ready to Scale Your Aesthetic Practice?

© Daniel Holler. All rights reserved.

Daniel Holler

Ready to Scale Your Aesthetic Practice?

© Daniel Holler. All rights reserved.

Daniel Holler

Ready to Scale Your Aesthetic Practice?

© Daniel Holler. All rights reserved.