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. 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. 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 greedy sweep covers every hour but does not guarantee the fewest possible staff-hours; a demand curve with sharp spikes can sometimes be covered 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.