GenerateRandomSearch

Shift Coverage Generator

Coverage planning is not the same problem as writing a rota. Before anyone is named, someone has to decide how many shifts start when, so that every hour has enough people on. This generates an hourly demand curve with a genuine peak, starts a shift whenever an hour would otherwise be short, and then recounts every hour from the rostered shifts — so the coverage is verified rather than assumed, and the paid slack that fixed shifts create is shown rather than glossed over.

What this generator does

Builds an hourly demand curve that peaks in the middle of the day, then sweeps forward starting shifts wherever an hour would be short. Every hour is recounted from the finished shift list before display, so coverage is proved rather than assumed.

How to use this tool

  1. Set how many hours the day spans and how busy the peak is.
  2. Generate and read the shifts and their start times.
  3. Compare staff-hours against demand hours — the gap is unavoidable slack.
  4. Re-run to see how a different demand shape changes the shift pattern.

Understanding the controls

Hours in the day
Between 4 and 24 hours to cover. The shift length is set to half the day, capped at eight hours.
Peak demand
How many staff the busiest hour needs: one hour in the middle half of the day needs exactly this many, and no hour needs more. The curve tapers away either side of it, with some hour-to-hour variation, so the peak is real rather than flat.

Common use cases

  • Planning coverage before assigning any individual to a shift
  • Showing why fixed-length shifts always cost more hours than demand
  • Producing staffing exercises with a checkable coverage guarantee
  • Generating demand curves for a rota tool to be tested against
  • Teaching the difference between coverage planning and rostering

How this generator works

The sweep goes forward through the day. Whenever an hour has fewer staff on than it needs, a shift starts at exactly that hour with enough people to close the gap — the latest possible start that still covers it, which keeps as much of the shift as possible inside the busy period. A gap in the last few hours is closed by a shift that starts one shift-length before the day ends, so every shift on the list is a whole one. The table under the shifts gives every hour: staff needed, staff on, and how many are spare. Before display every hour is recounted by finding which shifts genuinely overlap it, rather than trusting the running total that built the plan, and the staff-hours are re-added from the shift list.

Randomness and fairness

Uses your browser's cryptographic random source for the demand curve by default. A seed reproduces the same demand and therefore the same coverage plan; that mode is deterministic and not cryptographically secure.

For how randomness is produced across the whole site, see how Generate Random works.

Limitations and good to know

  • This decides how many people are needed when, not who works — names, availability, contracts and rest rules belong to a rota tool.
  • Shifts are all the same length and cannot be split, so no part-time or overlapping split-shift patterns are considered.
  • Breaks are not modelled, so a real plan needs additional cover on top of these numbers.
  • The sweep gives the fewest staff-hours that whole shifts of this one length can. A mix of shift lengths, which is not considered, could cover a spiky day more cheaply.

Privacy and your data

The demand curve and the coverage plan are generated in your browser and never transmitted, stored or included in analytics.