The master schedule — a deterministic, seeded, structure-only solve
Hand the engine every course section for a term — period, room, teacher, seat capacity — and it returns a conflict-minimized timetable proposal plus an explainable list of what it could not place and why. The same seed over the same sections reproduces the same placement every time: this is a deterministic structural solve, not a black box, and re-running it is how you audit it. It reasons over period clash, room double-booking, and teacher double-booking — structure only. It does not read a transcript: prerequisite and grade-eligibility gating is not wired, and this page does not claim it is. The build is advisory end to end — propose, review, commit. Nothing is written or enrolled by the solve itself; a human reviews the proposal and the unplaced report before anything touches a real roster. A what-if surface takes the same term, layers a drop/add tweak on top, re-solves, and diffs the result against the committed schedule — so you can model “what happens if we add a fourth section of Algebra I” before you commit to it, on the same engine, not a separate simulation.
Built · module-dark (advisory only; structure-only; no eligibility gating)
POST /v1/schools/:schoolId/scheduling/auto-schedule · /what-if