Schedule generator
Schedule generator
The generator is a helper that fills empty future days with shifts to bring coverage closer to your targets. It never touches what's already in the schedule — existing shifts, time off, and any other entries stay exactly as they are. It doesn't change past dates or today — it only works forward.
What the generator does
- It looks at your department coverage thresholds (the same ones set up in coverage and alerts) and tries to close them by assigning shifts to employees who are free on that date.
- It respects unavailability reported through the bot, weekly-hours and rest rules, and days already taken — it won't assign a shift where that would break a rule.
- If a target can't be closed (nobody is free, hour limits are used up, and so on), the day stays a gap — the generator won't break a rule just to hit a number.
- The result is a draft, not a finished schedule. Until you click "Apply," nothing changes in the actual schedule.
Dialog parameters
Before generating, open the parameters dialog:
- Shift — the preset (start/end time) new shifts will use. Only fixed (non-flexible) shifts are listed; if there are none, the dialog points you to set up shifts first.
- Max hours/week, Max consecutive days, Min days off/week — the rules the generator must respect while assigning.
- Use demand forecast — a toggle for the target itself:
- off — the target is your regular minimum coverage per department;
- on — the target is minimum + forecast: if the demand forecast expects a busier day, the generator will try to staff more than the bare minimum. The forecast doesn't replace your settings — it scales the minimums you've already configured per department, proportionally to each department's share, and it can never push the target above the department's actual headcount.
Reading the banner
After generating, a draft banner appears above the schedule:
- "filled X of Y" — how many of the planned slots across all days the draft actually fills, out of the total target slots.
- Gaps — if slots remain unfilled, the banner shows the count; hover to see a per-day breakdown with the reason (unavailable, already scheduled, weekly-hours limit, consecutive-days limit, not enough days off, budget).
- Conflicts — how many of the draft's suggestions no longer apply because the slot is already taken by another entry (someone assigned a shift manually after the draft was generated).
- Cost — the estimated cost of the draft is shown only to people with the "Labor budget" permission. Everyone else simply doesn't see that line in the banner.
- If several draft versions exist for the month, the banner includes a version switcher so you can look at an earlier generation attempt.
Ghost chips in the grid and excluding by click
Shifts the draft proposes are shown in the grid as translucent ghost chips layered over the cells, so you can see the outcome before applying:
- A normal ghost — a proposal that will be included when you apply.
- A struck-through ghost — you clicked it to exclude that assignment; clicking again brings it back in.
- A dashed-outline ghost — a conflict (the slot is already taken); this chip can't be toggled or applied, it just shows that the generator proposed a shift here that's no longer valid.
Applying and "skipped"
The "Apply N" button writes to the schedule only the proposals that are neither excluded nor conflicted. After applying:
- New entries show up immediately in the grid as ordinary shifts.
- The "skipped" count in the confirmation covers both conflicts and any slots someone else claimed at the very moment of applying (this is expected when several managers work at once — the system simply never overwrites someone else's entry).
A note on budget. The labor budget's hard limit is checked once, right before applying. If the limit hasn't been exceeded at that moment, the entire draft is applied as one unit, even if the month's resulting cost ends up over the limit. This is a deliberate trade-off: applying a draft is a single manager decision, not a sequence of small steps that could be stopped halfway through. The next attempt to apply a draft, or an ordinary manual shift entry, will be blocked until the month's cost drops back under the limit.
Version history
Up to 5 most recent drafts are kept per month. A draft that's already been applied is marked in the version list and is kept separately from that 5-draft cap — it won't be pushed out by new generation attempts. You can delete a draft with the trash button in the banner if you no longer need it.
Explanations and text adjustments
Below the draft summary there is an AI panel.
Explain (1 AI credit). Click "Explain" and the system retells the draft in plain words: what got filled, which days remain uncovered and why, who has the most and the fewest hours. The explanation is saved — viewing the same version again is free.
Adjust (5 AI credits). Type an adjustment in plain text — for example, "don't schedule Anna on weekends" or "Petro max 3 shifts" — and the system recalculates the draft with it. You get a new version in the history; the previous one stays. Adjustments accumulate: the next one takes the previous ones into account.
If the phrase can't be parsed, no credits are charged — rephrase it: say who and when not to schedule. Adjustments only work with people (don't schedule, prefer, shift limit); run limits and coverage targets are changed in the generate dialog.