How nOS builds a schedule.

The short version, with the limits stated up front.

Why this takes real work

240students in the sample school
7periods in the day
63sections to fill
1,322course requests, and each one placed narrows the rest

There are far too many possible schedules for any person or program to check them all. nOS searches for a good one and shows you how close it came to the ceiling.

Four passes

nOS builds the schedule in four passes. Each one works on what the last one left.

The same data, rules and settings give the same schedule.

Place the hardest things firstA quick first pass takes the most constrained decision next: the student with the fewest options left, the course with the fewest places it can go.
Tear up parts of it and try againThe long pass takes apart a piece of the schedule and rebuilds it a different way, keeping whichever version is better.
Follow the chain of who has to moveSome students cannot be placed unless someone else moves first. The whole sequence of swaps is made at once.
Tighten what is leftThe remaining part goes to a mathematical solver, which searches it more thoroughly.
Then a final checkA separate pass checks the result against your rules before anything is saved, and tells you what it finds.
Results
ResultsSample school · Max Fulfillment · Verified
SummarySchedulesShow gender

Meets the 95% target. The placement gaps below close the last few.

63 sections · 24 courses

Fulfillment96.97%1,282 of 1,322 course requests · 40 unmet
Students placed240 / 240all have at least one class
Of the provable maximum100%reached the ceiling for this sample
Students missing 2+ courses5worst: 3 courses

Why 40 requests didn’t fit

17Add sections or seats to these courses.
23Add sections of these courses, or offer them in more periods.
Fulfillment by grade
Grade 996.05%
Grade 1097.30%
Grade 1198.20%
Grade 1296.33%

The ceiling

You see the ceiling before the build starts.

Before it builds anything, nOS works out the largest share of your requests any schedule could fill with your courses, sections, rooms and rules. After the build, you can see how close it came. If the ceiling itself is low, the build can’t fix that; your courses and sections need to change.

Results Max Fulfillment
This build, against the ceilingThe most any schedule could fill under your rules, worked out before the build.
96.97%this build 96.97%the ceiling Nonestill on the table

The final check

A separate check runs on every build before you see it.

What it looks for

Anyone in two places at once. A section over its room or its cap. A hard rule broken. Anything in the output that wasn’t in your data.

If it finds a problem

nOS tells you what it found before anything is saved.

Why it’s separate

It looks only at the finished schedule and knows nothing about how it was built.

When a request can’t be placed

You’re told why, in plain words.

Every unplaced request is listed under one of these twelve reasons, grouped by cause.

No class can run
Not offered for this grade
All classes are full
Conflicts with another class
Missing a prerequisite
Its paired course won't fit
Needed for a graduation requirement
Needed to meet a course rule
No seat yet
Course is at its size limit
Blocked by a manual change
Unknown course code

What nOS doesn’t do

A few things schools ask for that nOS doesn’t have yet.

No version history. You can keep schedules side by side and compare two, but you can’t roll one back.
No share link or publishing to staff. Export the files, or send the schedule back to your student information system and let it do that.
No approval workflow. Staged changes are reviewed before they commit, and that is the only review step.
No shared undo. Undo is yours, in your session. Committing is the durable step.
No user management screen. We set your team up and change it when you ask.
No viewer role. Two roles, member and account administrator. No department scoping.
Notes aren’t threaded. No replies, mentions or notifications. Anyone at your school can resolve one.

Try it on your own data.

Create an account and use the full planner on your own data.