Healthcare Appointment System
Booking-flow analysis for a high-demand clinic
A system design exercise analysing the booking flow of a high-demand neurology centre: a 100+ person daily queue against only 50–60 monthly tickets. Not a production system — a demonstration of how I approach operational problems when a client describes one.

Problem
A 100+ person daily queue against only 50–60 monthly tickets. The root cause was not demand — it was uncoordinated booking channels producing a thundering herd and race conditions on the same tickets.
Context
A high-demand neurology centre where people queued physically and by phone for the same limited appointment slots. This was an analysis exercise, not a client production build.
Approach
- Model the actual queue behaviour before proposing any technology.
- Identify the contention point: multiple channels writing to the same ticket pool with no coordination.
- Design for atomic assignment first, interface second.
- Iterate — the first two designs were wrong, and the third was the one that accounted for the people the earlier ones forgot.
Architecture
- 01Two self-service channels: web and IVR
- 02Atomic ticket assignment with TOCTOU protection
- 03Hold-timer and booking TTL to release abandoned slots
- 04IVR routing tree for non-web callers
- 05One unified ticket database as the single source of truth
Tools
- System design
- Queueing analysis
- IVR flow design
- LLM-assisted design review
What worked
- Treating the ticket pool as a concurrency problem rather than a UI problem.
- Keeping an IVR channel so that non-web users were not excluded.
- Using an AI model to find the person each design iteration forgot.
What didn't work
- The first design assumed everyone would book on the web — it excluded a large part of the actual audience.
- The second still allowed two channels to hand out the same ticket.
Result
A documented architecture and a written breakdown of the three design iterations. Not a production system and no operational metrics are claimed.
What I learned
System design starts with the wrong answer. The value is in noticing who the design excludes and iterating.
Links
Let's build something real.
A system built to order, or advice on how to start. Tell me the manual work you want gone.
Get in touch →