Shift Scheduler Blog

How to Schedule an Exact Number of Hours Per Month in Shift Scheduler

AI assistant scheduling extra shifts to reach a monthly hours target

Many teams do not just need "enough people" on the schedule. They need each person to land on a specific number of hours for the month.

A common example: a part-time contract that says 7.5 hours per business day. Over a 22-business-day month, that is about 165 hours. Coverage alone does not guarantee that number. A roster can fill every open shift and still leave one person at 130 hours and another at 190.

Shift Scheduler can now close that gap directly. You tell the AI assistant the target, and the scheduler adds extra shifts above your minimum coverage to reach it, without breaking your rules.

Open Slots Are A Minimum, Not A Target

Open slots are the minimum staffing your weekly template and day overrides require: how many people, doing which shift, on which day. They exist to answer one question: is this shift covered?

They do not answer a different question: does this specific person end the month with the right number of hours?

A roster can satisfy every open slot and still be unbalanced. Full-time staff might land above target. Part-time or flexible staff might land well below it, especially if they are only scheduled for the minimum required shifts.

Coverage Is Not The Same As Hours

Before this feature, Shift Scheduler already tried to keep total hours fair. If two people were both available for the same work, the scheduler leaned toward giving them a similar share of it.

That is fairness, not a target. Fairness balances people against each other. It does not know that a specific contract says 7.5 hours per business day, or that a specific person is supposed to reach 100 hours this month while a full-time colleague reaches 165.

If you needed an exact number instead of a relative balance, there was no direct way to ask for it. That is the gap this feature closes.

What Is New: Target Hours And Extra Shifts

When you ask the AI assistant to build or update a schedule, you can now state an ideal number of hours for the run.

You can give one number that applies to everyone you are scheduling:

Schedule August so everyone works 7.5 hours per business day.

Or you can give a default plus specific exceptions:

Everyone should reach 165 hours this month, except Maria, who should reach 100.

The assistant passes this target to the scheduler for that run. It is not a saved Scheduling rule sitting in your rule list. It is closer to an instruction you give each time you generate or adjust a schedule, the same way you would tell a colleague what to aim for before they build the roster.

The scheduler then looks at what each person already has: existing scheduled shifts, plus approved paid time off, plus the shifts required by your open slots for that period. If that total is already below the target, the scheduler tries to add extra shifts to close the gap.

How The Solver Decides Which Extra Shifts To Add

Extra shifts are not invented out of nothing. The scheduler only reuses shift templates that already appear as coverage on that date, at that location. If Tuesday's minimum coverage uses a 08:00-16:00 template, an extra shift on Tuesday reuses that same template. Nothing is stretched or shortened to force an exact fit.

The pool of possible extra shifts is bounded. The scheduler estimates roughly how many additional hours are needed to reach the stated targets and builds a pool sized around that estimate, not an unlimited number of "maybe" shifts. This keeps the schedule generation fast and keeps extra shifts genuinely tied to the target, rather than scattered around for no reason.

Once a person's target is met, no more extra shifts are added for that person. Preferences and "likes" cannot create unnecessary extra work after the target is already satisfied.

Rules Still Come First

Target hours do not override your scheduling setup. The priority order is:

  1. Required open-slot coverage and Must rules. These are never broken to reach a target.
  2. Target hours. The scheduler tries hard to get every person to their stated number.
  3. Normal (soft) Scheduling rules and preferences, such as "prefer mornings" or a normal rest rule.

Because target attainment is checked before normal rules, the scheduler will accept breaking a soft preference if that is what it takes to reach someone's target hours. It will never break a Must rule to do it. Rest requirements, availability, blocked shifts, and other hard constraints apply to extra shifts exactly as they apply to required shifts. If a Must rest rule means an extra shift cannot legally follow a previous one, that extra shift is not scheduled, even if the target is not fully reached.

This means extra shifts are held to the same standard as your normal roster. A target is a strong goal, not a way to bypass your setup.

What Counts Toward The Target

Before the scheduler adds a single extra shift, it credits what a person already has for the period:

  • Shifts already on the schedule, including shifts created outside this run
  • Approved paid time off
  • The shifts that minimum open-slot coverage requires for them in this period

Only the remaining gap, if any, is what the scheduler tries to close with extra shifts. Someone who is already close to target because of existing shifts and approved leave gets few or no extra shifts. Someone who is far below target gets more, as far as the rules and the available shift templates allow.

When The Target Cannot Be Fully Reached

Sometimes an exact number is not reachable. A Must rule might block the last shift that would have closed the gap. The available shift templates on a given day might not divide evenly into the remaining hours needed. The bounded pool of extra shifts might run out before every target is met.

In those cases, Shift Scheduler does not force an unsafe or rule-breaking assignment. It reports the shortfall or overage for each person instead, so you can see exactly who is under or over target and by how much, and adjust rules, availability, or staffing if needed. A schedule that reaches the best possible result within the time available is a genuine result, not a failure, even if it does not hit every target exactly.

Worked Example

A retail location has 6 part-time staff, each with a contract of 7.5 hours per business day. August has 22 weekdays, so the monthly target for each person is about 165 hours.

The location's minimum open-slot coverage for August only adds up to about 120 hours per person; it was set to guarantee the store is staffed, not to guarantee anyone's full contracted hours.

Without a target, the schedule would fill every open slot and stop there, leaving each person roughly 45 hours short. With Schedule August so everyone reaches 165 hours given to the assistant, the scheduler fills the required open slots first, then adds extra shifts, using the same shift templates already used for coverage, spread across the month, respecting rest rules and availability, until each person is at or as close as possible to 165 hours.

How To Use It

  1. Open a conversation with the AI assistant.
  2. Ask it to build or update the schedule for the period you need.
  3. State your target in plain language: a single number for everyone, or a default plus named exceptions.
  4. Review the summary. Shift Scheduler reports how many shifts were required versus extra, the credited hours range for the group, and any shortfalls or overages by person.

You do not need to calculate anything in advance. If you know the daily hours and the number of business days, just say both and let the assistant do the math, or simply state the monthly number if you already know it.

FAQ

Can I set an exact number of hours for each person per month?

Yes. State the target when you ask the AI assistant to build or update the schedule, either as one number for everyone or as a default with named exceptions. The scheduler adds extra shifts above your minimum open-slot coverage to reach it, subject to your rules.

Is this different from the automatic hour balancing Shift Scheduler already does?

Yes. Automatic balancing is relative: it keeps people's hours similar to each other when they are available for the same work, using a fair share the scheduler computes on its own. A target is exact: you state the number you want a person to reach, and the scheduler optimizes toward that specific figure instead of a computed fair share.

Where do the extra hours come from?

Extra shifts reuse a real shift template that already appears as minimum coverage on that date and location. The scheduler does not invent new shift shapes or stretch shift lengths to force an exact match.

Will this override my scheduling rules or Must rules?

No. Required open-slot coverage and Must rules are never broken to reach a target. Target attainment is optimized after coverage but before normal, soft Scheduling rules and preferences.

What happens if the target cannot be fully reached?

Shift Scheduler reports the shortfall or overage for each person instead of forcing an unsafe or rule-breaking assignment. A best-possible result within the time available is a genuine result, not a failure.

Does approved time off count toward the target?

Yes. Approved paid time off is credited toward a person's target before the scheduler decides how many extra shifts, if any, are needed.

Can different people have different targets?

Yes. Give one default number for everyone, then name specific exceptions for people who should reach a different number.

Final Thoughts

Minimum coverage answers "is this shift staffed?" A target hours goal answers a different question: "did this person work the hours they were supposed to work this month?"

Shift Scheduler now answers both, in the same run, without asking you to hand-add shifts or recalculate hours yourself. State your target once, in plain language, and let the scheduler handle the arithmetic, the rules, and the extra shifts.

If you have not read it yet, how Scheduling rules work is a good next stop, along with how continuous scheduling history keeps rest rules and fairness consistent across month boundaries.

More from blogs