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.