What it does
Smootables generates timetables with CP-SAT, a constraint solver used for industrial scheduling. The solve runs in two phases: phase one proves that a clash-free timetable exists under your hard rules, phase two improves it against the preferences you weight. The model works on 15-minute intervals with lesson durations from 5 to 480 minutes, so short check-ins, double lessons, and all-day workshops are placed natively instead of being forced into fixed periods. Recurring periods solve one master week; custom periods solve every week separately, so a term where no two weeks match still generates.
The difference you feel in daily use is explainability. Before the solve, 13 validation checks stop a doomed run and name the problem: a placement with no teacher, a teacher over weekly hours, a pinned lesson outside its availability window, too few rooms for the groups that meet at once. When a solve is genuinely impossible, the report classifies the conflict as one of 13 typed causes and adds suggested actions for the run, such as adding a teacher, splitting a group, or widening the allowed rooms.
How it works in Smootables
- Finish the period plan and press Generate timetable. Validation runs first, and the sidebar lists every error with the placement it comes from, marked "fix before generating".
- Set priorities once in Solver Settings: six weighted preferences covering student gaps, teacher gaps, student and teacher daily balance, subject spread, and morning preference, each from 0 to 200. Weights are normalized, so 100 means the same importance in a small school and a large one.
- Read the result in the Timetable analysis panel: generation time, how each preference scored, and solution quality up to "Proven optimal".
- If the solver proves the plan infeasible, choose Complete with partial placement: everything placeable lands on the grid and the remaining lessons wait in the waiting area for manual resolution.
- Regenerate on your terms. Generation scope rebuilds "Changed groups only" or all groups, pinned lessons stay exactly where you put them, and every generation saves a version you can restore or undo.
Key capabilities
Hard rules that always hold
Clash-free teachers, rooms, and groups; teacher availability and weekly hour limits; breaks between lessons and lunch waves; pinned lessons; finish-to-start dependencies between placements; exact lessons per week; blocked days and holidays.
13 pre-solve validation checks
Missing teachers or rooms, weekly-hour overloads, invalid pinned placements, room sufficiency against simultaneous groups, and more, each pointing at the placement to fix.
13 typed infeasibility causes
A failed solve produces a classified report, from teacher over-allocation to dependency violations, with suggested actions for the run instead of a bare error.
Partial placement, deliberately
When infeasibility is proven, accept a partial timetable: the grid keeps everything placeable and never-placed lessons park in the waiting area, ready to drag into slots.
Versions and recovery
Each generation saves a version with an immutable snapshot of the plan behind it. Rename it, restore it, or undo the last generation from the Versions and changes panel.
Variable lesson lengths
15-minute scheduling intervals and durations from 5 to 480 minutes cover double blocks, labs, and full-day sessions without workarounds.
Where it fits
Generation sits in the middle of the workflow. Upstream, the plan decides what the solver can do, and individual learning paths shows how groups and single students shape that plan. Downstream, you rarely ship the first result untouched: drag, swap, and pin in hands-on editing, or ask the Planner assistant to make the change in plain language. For the craft itself, the timetabling guides cover the planning decisions that make a solve easy, constraint guides explain hard and soft rules, and the constraint recipes answer specific questions such as minimizing teacher gaps.