Your Schedule Is an Airline Flying Empty Seats
An empty appointment slot expires at zero value, just like an empty airline seat at takeoff. Here's the yield management system your practice is missing.
Mike Kohl
Founder, Health Biz Scale
An empty seat at takeoff is worth exactly zero
Airlines figured this out decades ago. A seat that flies empty at 6:45pm cannot be sold at 6:46pm. It's gone. So they built an entire discipline, yield management, around never letting that happen: dynamic pricing, standby lists, overbooking models, last-minute fare drops. The seat is perishable inventory, and every airline treats it that way.
Your 2:00pm slot on Thursday works the same way. At 1:59, it's worth your full rate. At 2:01, if no one is in the chair, it's worth nothing. It cannot be sold tomorrow. It cannot be batched with next week's slots and sold in bulk. It expired.
Most practices don't treat it that way. They treat a no-show as bad luck and an open slot as a quiet afternoon. I've spent 20 years as a software engineer, the last several building for functional medicine practices, and I keep seeing the same gap: clinics have built a receptionist and a prayer where they need a system.
Practices already sell perishable inventory, they just don't manage it
Every appointment slot is inventory with a hard expiration date. That's not a metaphor, it's the literal mechanics of a calendar. You cannot inventory unsold time the way a retailer inventories unsold shirts. There's no clearance rack for last Tuesday.
Airlines don't leave this to chance because chance is expensive at scale. A 150-seat plane with 12 empty seats isn't losing 8 percent of revenue, it's losing 100 percent of the revenue those 12 seats could have produced, since the marginal cost of flying them full was already paid. Practices have the same math and worse habits. The provider, the front desk, the lights, and the rent are already paid for whether the chair is full or empty. An empty slot doesn't just fail to add revenue. It doesn't reduce any cost either. It's pure loss layered on top of fixed cost you're paying regardless.
The reason this gets ignored is that it doesn't show up as a line item. Nobody invoices you for the empty slot. It just quietly doesn't happen, and quiet losses don't trigger the same alarm a bounced check does.
The empty-slot cost model
Here's the actual math, worked with labeled assumptions you can swap for your own numbers.
Assumptions (swap these for your real numbers):
- Average visit value: $180
- Slots per provider per day: 16
- Working days per month: 20
- Current no-show/cancellation rate: 12%
- Percentage of those slots currently refilled by staff: 20%
Step 1: Slots lost per month. 16 slots/day x 20 days = 320 slots/month. 320 x 12% no-show rate = 38.4 empty slots/month.
Step 2: Slots actually recovered today. 38.4 x 20% refill rate = 7.68 slots recovered. 38.4 minus 7.68 = 30.72 slots lost for good, every month.
Step 3: Dollar cost. 30.72 lost slots x $180 average visit value = $5,529.60/month, per provider.
Step 4: Annualize it. $5,529.60 x 12 = $66,355.20/year, per provider.
Run your own numbers. A two-provider clinic with a 15% no-show rate and a $220 average visit is closer to six figures a year in inventory that flew empty. This is not a marketing problem. It's an operations leak, and it's the same leak airlines closed with yield management instead of better gate agents.
Three mechanisms, borrowed from the airline playbook
Airlines don't fix this with one tool. They run three systems simultaneously: rebooking displaced passengers, standby lists for open seats, and dynamic pricing that moves inventory before it expires. The clinic version is reactivation, waitlist automation, and dynamic recall. Here's each one, built.
1. Reactivation: rebooking the passengers who already fell off
Every practice has a list of patients who haven't been seen in 60, 90, or 180 days and have no future appointment on the books. That list is your rebooking queue.
Build it as a simple query against your EHR or scheduling system: last visit date older than your threshold, no upcoming appointment. Segment it by why they stopped: completed a program, went quiet mid-treatment, or drifted after a single visit.
The message is not "we miss you." It's specific: reference their last visit, their last stated goal, and a single next step. AI can draft and personalize these at volume, one message per patient referencing their actual chart notes instead of a mail-merge that just swaps in a first name. Run it as a standing monthly job, not a one-time cleanup.
2. Waitlist automation: the standby list that actually gets called
Airlines run standby lists because manually calling passengers when a seat frees up doesn't scale past a few names. Most practices have the same manual bottleneck: a paper list or a sticky note of patients who want an earlier slot, and a front desk that's too busy to work it.
Automate the match. When a cancellation hits the calendar, the system checks the waitlist for patients who fit that specific slot (day, time, provider, visit type) and texts them immediately, first-to-respond gets it. This has to run in minutes, not end-of-day, because the value of that slot decays the closer it gets to its start time. A cancellation at 9am for a 2pm slot is easy to fill. A cancellation at 1:45pm for a 2pm slot needs a system firing texts in seconds, not a human checking a list when they get a chance.
3. Dynamic recall: pricing the calendar like an airline prices a route
Airlines discount seats as departure nears because a discounted seat beats an empty one. Your version isn't discounting, functional medicine patients aren't shopping on price, it's recall timing tied to actual clinical windows instead of a generic 6-month reminder blast.
Build recall rules around what you already know clinically: a patient on a 90-day protocol gets a recall trigger at day 75, not a flat calendar tick. A patient who completed labs gets a follow-up trigger the week results are expected back. This is dynamic because the trigger date moves with the patient's actual treatment arc, not a static rule that fires the same for everyone regardless of where they are in care.
I built a version of this kind of system for Dr. Piper Gibson. It's the same principle under it: AI doing the timing and matching work a human would otherwise have to remember to do for hundreds of patients at once.
What AI actually changes here
None of these three ideas are new. Front desks have always known reactivation lists matter. What's new is that AI runs all three without adding headcount. A person can manage a waitlist of 15. A system can watch every open slot across every provider in real time, cross-reference it against a waitlist of 500, and text the right match in under sixty seconds. A person can write a thoughtful reactivation message to 10 patients this week. A system can draft 300 individually, referencing each chart, and let a human spot-check before send.
This is Time Leverage: the same clinical hours you already have, filled instead of flown empty. And it compounds with Asset Leverage, because the patient list, the appointment history, the visit notes you already hold are the raw material these systems run on. You don't need new patients to run this. You need the ones already in your system, worked properly.
What to set up first
Don't build all three at once. Start with waitlist automation. It has the shortest feedback loop: you'll know within a week whether cancellations are getting refilled, because you can watch it happen in real time. Once that's running, layer in reactivation as a monthly job. Dynamic recall comes last because it requires the most clinical judgment to set the right trigger points per protocol.
If you want to build this yourself: pull your no-show rate and average visit value, run the model above with your real numbers, then build the waitlist matching logic first. It's a text automation and a query against your existing scheduling data. Most practice management systems already expose the data you need, the missing piece has always been the matching logic running fast enough to catch the slot before it expires.
If you'd rather have it built for you, work with me.
Get the next essay
AI leverage, business systems, and the doctrine, one essay at a time. No pitches. Unsubscribe anytime.
Want the systems built for you? Work with me →