Features
Waitlist auto-fill
When a patient cancels, Orla offers the slot to everyone on the waitlist who matches it, at once, and books whoever answers first. No phone calls, no lost hour.
A cancellation costs a clinic twice: the fee for the hour, and the twenty minutes somebody spends ringing down a list to refill it. Orla refills it without anybody at the desk knowing it happened until the diary shows the slot taken.
What happens the moment a booking is cancelled
The slot is released and the engine asks one question first: is this cancellation worth offering at all? A slot less than 90 minutes away is returned quietly to public availability instead — nobody realistically drops what they are doing and crosses town in an hour, and an offer that cannot be taken is a text message that only annoys.
If it qualifies, Orla finds every waiting patient the slot actually suits:
- The same service. A waitlist entry for an initial assessment is never offered a follow-up slot.
- The practitioner they asked for, if they asked for one. An entry with no practitioner named matches anybody.
- A date inside their window, read in the clinic's own calendar — an entry good until the 17th is good for all of the 17th in Dublin, not until midnight UTC.
- The half of the day they said they could do. Mornings means before midday, afternoons means midday onwards, and "any" means any.
Everybody who matches is offered it at once
This is the part people expect to work differently. Orla does not walk the list one patient at a time, waiting on each to reply before trying the next — that is how an hour disappears while three people who would all have said yes hear nothing.
Instead the matching patients are ranked and the top of that ranking is offered the slot simultaneously, up to a batch size the clinic sets (five by default). The ranking is deliberate:
- Patients who asked for this practitioner by name come first. They have been waiting for this person, not for any slot.
- Then longest waiting. Among equals, the entry that has been on the list the longest is offered first.
Each patient gets an SMS naming the service, the date and the time, with a link that books it. The link carries a signed token that is only valid for this offer, this patient and this clinic, and it stops working when the offer expires.
First click wins, and it cannot go wrong under load
The offer holds for 30 minutes by default. Whoever opens their link first gets the appointment; everybody else sees that it has gone.
That arbitration is not done in application code, where two people tapping at the same second could both be told yes. It is a single conditional database write — the row is claimed only if nobody has claimed it yet — so concurrent claims cannot both succeed no matter how many people tap at once. The loser is told the truth immediately rather than being booked into a slot that no longer exists.
If the window closes with nobody claiming, the next batch down the ranking is offered the same slot, excluding everyone who has already had their chance.
What it deliberately will not do
- It will not message outside consent. Every send goes through the same guard as the rest of the clinic's messaging: a patient who has not given consent for SMS is not texted, and quiet hours are respected.
- It will not offer a slot that is not free. The availability engine decides what is bookable, and the waitlist offers only what it says is open.
- It will not offer a cancelled class as a free slot. When a class is called off, every attendee's booking is cancelled at once. Without a guard, each one of those would offer the waitlist a place in a room nobody is opening. Orla checks and stays quiet.
- It will not keep a stale list. An entry whose last date has passed can never match again, so it retires itself. A waitlist that is mostly people who stopped waiting months ago is a list the desk stops trusting, and trusting the list is the whole point.
The half that is not automatic
Somebody rings the clinic and there is a gap on Thursday that no cancellation created. The receptionist has the waitlist open, picks the patient, and books them straight from their entry — the service, the practitioner and the preference are already written down, so nothing is retyped and nothing is mistyped.
The entry is then marked claimed rather than deleted. A waitlist should be able to show that waiting worked.
What the clinic can see afterwards
Every offer and every expiry writes a line to the clinic's append-only journal: which slot, how many patients it went to, and what became of it. When a patient asks why they got a text, or a practitioner asks why an hour filled itself, the answer is a record rather than a recollection.