KarmaSchedule Sign in

Fair call distribution

"Fair" is the word that causes the arguments, because it means at least four different things and a call policy usually does not say which.

Four definitions that conflict

Equal counts. Everyone takes the same number of call nights over the period. Simple, and wrong for anyone part-time or on a reduced share.

Proportional counts. Everyone takes call in proportion to their clinical commitment. Fixes part-time, and still says nothing about which nights.

Equal burden. A Saturday night is not a Tuesday night, and a holiday is not either. Weighting the count by how undesirable each slot is gets closer to what people mean, and immediately raises the question of who sets the weights.

Equal over time. Any of the above can be satisfied this quarter and badly violated over three years, because the same person keeps getting Christmas. A policy that only looks at the current period will drift.

KarmaSchedule handles all four, because they are the same mechanism with different inputs: a counted burden, an optional per-person share, optional weights, and a window.

What the generator does

The schedule is built against hard rules first — minimum rest, maximum consecutive days, eligibility. Within everything that satisfies them, it minimises the spread of the counted burden across the pool.

That ordering matters and is not negotiable. A schedule that is perfectly even and breaks a rest requirement is not a usable schedule. So fairness is optimised inside the space of legal schedules, never traded against them.

Where it cannot even something out, it reports which constraint stopped it. A pool of four where one person is ineligible for nights has an unavoidable imbalance, and the useful output is the reason rather than a flat number.

What the tally shows

Every person has a tally: call nights, weekends, holidays, and whatever else your site counts, over the window you choose. Staff see their own numbers alongside the group's distribution. Admins see the whole spread.

This is the part that does the real work, and it is not a technical feature.

A request to be excused from a holiday is a different conversation when both people are looking at the same table. So is a complaint about weekends. The scheduler stops being the person who decides and starts being the person who maintains the rules — which is a much easier job to hold, and a much easier one to hand over.

Common questions

How does KarmaSchedule decide what is fair?

Fairness is measured as the spread of a counted burden — call nights, weekends, holidays — across the people who share it, over a window you choose. The generator minimises that spread subject to the hard rules, and the resulting tally is visible to staff as well as admins.

Can someone be excluded from a call pool?

Yes. Eligibility is set per shift template against the staff categories a site admin defines, and an individual can be made ineligible or given a reduced share. The tally accounts for a reduced share rather than reporting it as unfairness.

What happens when a schedule cannot be made fair?

The generator satisfies hard rules first, then minimises unfairness within what remains. Where it cannot even out a burden, it says so and shows which constraint prevented it, rather than producing a schedule that looks arbitrary.