The challenge
Healthcare staffing is a constraint satisfaction problem that people are asked to solve in spreadsheets.
Every shift has requirements: a qualification, sometimes a specific certification, a location, a time. Every person has constraints: availability, contracted hours, rest periods between shifts, travel distance, and preferences that determine whether they stay with the employer. At 50,000 shifts a month across 10,000 personnel, the number of valid combinations is far beyond what manual rostering can search.
What happens in practice is that coordinators stop optimising and start firefighting. Shifts get filled in the order they become urgent rather than the order that produces good coverage, the same reliable people get asked repeatedly until they burn out, and a single late cancellation triggers a chain of phone calls.
The cost is visible in two places: unfilled shifts, and turnover among the staff who absorbed the badly distributed work.
Approach
Constraints were separated into hard and soft. Hard constraints cannot be violated: qualification requirements, statutory rest periods, contracted maximums. Soft constraints should be optimised but can bend, such as preferred locations, shift-pattern continuity and fair distribution of unsociable hours. Encoding the difference explicitly is what allows the system to produce a schedule automatically without producing an illegal one.
Allocation runs as a solver, not a loop. Assigning shifts greedily in sequence produces a schedule that is valid at the start and impossible at the end, because the early assignments consume the availability the later ones needed. The allocation considers the period as a whole, which is the difference between filling most shifts and filling nearly all of them.
Rules are configuration, not code. Qualification hierarchies, rest-period rules and contracted-hours policies change with regulation and with individual client agreements. Holding them as data means a policy change is an administrative action rather than a deployment.
Changes were designed for, not exceptioned. In healthcare staffing the schedule begins changing the moment it is published, through sickness, cancellations and urgent cover. Re-allocation handles a mid-period change without rebuilding the whole schedule and without cascading disruption through people whose shifts were already confirmed.
Auditability throughout. Every assignment records why it was made and what changed it. When someone asks why a shift went to one person rather than another, and in staffing someone always does, the answer is a record rather than a reconstruction.
Results
The platform manages 10,000 personnel and schedules 50,000 shifts per month, with allocation performed automatically where it was previously manual.
The change in what coordinators spend their time on is the more meaningful outcome. Automated allocation handles the bulk of the schedule, which moves the human effort to the genuinely hard cases, such as the difficult-to-fill specialist shift or the person whose circumstances have changed, rather than to the mechanical work of matching thousands of routine shifts to thousands of available people.