Smart Schedule¶
Smart Schedule is WFM's automatic schedule generation feature. It uses an AI optimisation algorithm (Timefold) to assign employees to shifts while respecting all constraints - needs, contracts, skills, and preferences.
How it works¶
Smart Schedule:
- Creates the day structure for the entire period
- Loads staffing requirements (needs) for each day
- Runs the optimisation algorithm to find the best assignment
- Assigns employees to shifts while satisfying requirements and respecting contracts
The algorithm considers:
- Staffing needs (minimum agents per skill per time slot)
- Employee contracts (working hours, days, breaks)
- Skills and proficiency levels
- Shift constraints (valid days, employee allowlists)
- Minimum rest periods between shifts
- Employee shift preferences (soft - solver tries to honour them but may override to cover needs)
Note
Only employees with an assigned contract are scheduled. Workplace members without a contract (typically managers, planners, or team leaders who don't work the rota) are never assigned shifts and don't count towards available capacity.
Generate a schedule¶
- Open the schedule detail (created via Creating a Schedule).
- Click the Smart Schedule button in the top bar.
- Wait for the calculation to complete (typically a few seconds).
- Review the generated schedule.
The schedule is now in Calculated state with shifts assigned to employees.
What Smart Schedule considers¶
Needs¶
Smart Schedule tries to satisfy all defined needs. If a need requires 5 agents with the Sales skill from 9:00-17:00, the system assigns shifts to meet this requirement.
Contracts¶
The system respects all contract constraints:
- Maximum hours per day/week/month
- Working days
- Required breaks
- Minimum rest periods
- Holiday and night shift permissions
Skills¶
Employees are assigned to shifts based on their skills. The system matches employee skills with the needs' required skills.
Skills combinations¶
If employees have skills combinations defined, the system can assign multiple skills to a single shift, reducing the total number of required shifts.
Shift constraints¶
The system only uses shifts that are:
- Active and valid for the period
- Allowed at the workplace
- Permitted for the specific employee (if a whitelist is defined)
Shifts covering the same time window¶
Needs are matched to a time window, not to one specific shift. If two shifts cover the same window - for example an 08:00-16:00 shift with a lunch break at 11:30 and a second one with the break at 12:30, or a separate shift per team - they compete for the same need and Smart Schedule splits the demand between them.
How the demand is split depends on the Employees list on each shift:
- No employees listed on either shift - the demand is divided evenly between them.
- Employees listed (for example 5 on one shift, 1 on the other) - the demand follows those numbers, so shifts are not planned where nobody is allowed to work them.
After each run, the right panel lists shifts that overlap:
- Shifts ... cover the same time window - identical start and length. Both shifts are planned; this is a notice, not an error.
- Shifts ... differ by 15 minutes or less - nearly identical, for example 08:00 and 08:15. Here the demand can end up on only one of them, because the shift fitting the need more closely wins. If the difference is a typo, correct the times; if it is intentional, list the employees on each shift to control who works which one.
Needs cannot be tied to one specific shift. If a fixed number of employees has to work one particular shift, control it through the Employees list on that shift.
Shift preferences¶
If an employee has submitted a shift preference (a request of type Preferred shift with a shift template + date), the solver treats it as a soft constraint - it tries to assign that exact shift on that date, but may pick a different shift if needed to cover staffing requirements. After the run, each preference is marked Fulfilled or not in the requests list.
Split shifts¶
Split shift templates (e.g. 08:00β12:00 + 16:00β20:00 with an unpaid midday gap) are treated as one logical assignment. Smart Schedule keeps every work window of the same split shift with the same employee, ignores the unpaid gap when checking the contract's minimum rest period, and counts only paid windows toward daily/weekly/monthly hour limits. If no single employee can cover all windows, the whole split shift is rejected and listed in Uncovered slots.
After generation¶
Once Smart Schedule completes, you can:
- Review the schedule in the grid view
- Make manual adjustments by dragging shifts or editing cells
- Validate the schedule to check for constraint violations
- Fill gaps to add more shifts where needs aren't fully met
- Publish when the schedule is ready
Fill Gaps¶
If some needs are not satisfied, use Fill Gaps to add shifts only where needed. It works on any schedule that has at least one shift - including plans you have built entirely by hand, without ever running Smart Schedule.
- Click Fill Gaps in the right panel.
- The solver completes the remaining schedule from Needs using employees with remaining capacity.
- Existing manual and generated shifts are not changed.
This is useful for incremental adjustments without regenerating the entire schedule.
Regenerate Needs¶
If staffing requirements change after you've started scheduling:
- Click Regenerate Needs in the right panel.
- The system reloads needs from the current definitions.
- Run Smart Schedule or Fill Gaps again.
Validation¶
The right panel shows validation results. The system checks:
- Contract compliance (hours, breaks, rest periods)
- Need coverage (are all requirements met?)
- Skill requirements (do assigned employees have the required skills?)
Validation errors are highlighted and should be resolved before publishing.
Tips¶
- Define realistic needs - overly strict requirements may make it impossible to find a valid schedule.
- Make sure contracts accurately reflect actual working conditions.
- Use skills combinations to allow more flexibility in shift assignments.
- Review and adjust the generated schedule before publishing.
- If the algorithm can't satisfy all needs, consider adding more employees or adjusting requirements.
Troubleshooting¶
| Issue | Solution |
|---|---|
| Schedule generation takes too long | Reduce the number of employees or simplify constraints |
| Needs not fully covered | Add more employees with the required skills, or reduce the need minimums |
| Contract violations | Adjust contracts or reduce assigned shifts |
| No shifts generated for an employee | Check that the employee has assigned skills and allowed shifts |
| Split shift split across employees | The solver could not keep both windows of a split shift with one agent. Make sure at least one qualified employee is available for the whole span. |
| Split shift partially covered | Only some windows of a split shift could be assigned. Add a qualified employee available for all windows, or shorten the unpaid gap so more agents qualify. |
| Employee already busy at that time | The solver placed a shift on an employee who already has another shift at the same time, so it was returned as unassigned. Use Fill Gaps to offer the slot to another available employee, or add more agents who can work this time window. |
| Demand unexpectedly split between two shifts | Both shifts cover the same time window, so they draw from the same need. Check the notice in the right panel - either remove the duplicate shift, or use the Employees list on each shift to steer who works which one. |
| A nearly identical shift gets no shifts planned | Shifts differing by 15 minutes or less compete for the same need and the closer fit wins. Align the times, or make the difference large enough that each shift matches its own need. |