The full walkthrough

The year, in four stages.

Bellweave builds a school’s timetable, then keeps it honest — through the Monday a teacher calls in sick.

Book a demo Back to the overview

1.0

Set up the campus.

A timetable is not built out of constants. It is built out of what a campus actually does on a Wednesday.

A screenshot of the Bellweave timetable: the whole school's week as a grid, cohorts down the left and each weekday split into its periods across the top. Every cell names a subject, its teacher and its room, colour-coded by subject family — thirty cohorts and 867 sessions a week, with no cohort, teacher or room double-booked.

The bell schedule is configuration.

Periods default to 45 minutes, with a 15-minute break after every two, plus lunch — and then you change all of it, per campus, per weekday. Ashford Grange runs a standard day on Monday, Tuesday, Thursday and Friday, and dismisses early on Wednesday. Days that share a skeleton share one schedule. An assembly day, or a block rota where Monday runs P1–P4 and Tuesday runs P5–P8, is the same mechanism.

The teaching week is not a setting anyone types. It is derived from whatever the bell schedules cover — Monday to Friday here, Monday to Saturday elsewhere. Leave counting keeps its own working week; that one you do set.

Named periods hold no lessons.

Homeroom, assembly, break, lunch, supervised study. They appear on the grid, labelled, taking up the room they really take up — and the generator is never allowed to schedule into them.

Then the things that constrain it.

Each cohort’s curriculum — subjects and periods per week. Each teacher — the subjects they are qualified for, the weekly window they are available in, and their load caps: most periods in a day, most in a week. Each room — its capacity, and its feature tags.

Tags are picked from a curated catalog, never free-typed: chem-lab, fume-hood, gym, projector. That is deliberate. The day somebody types gymnasium is the day room matching quietly stops working, and nobody finds out until a class has nowhere to go.

Bell schedules · Ashford Grange

Standard Mon · Tue · Thu · Fri

  1. P108:30–09:15
  2. P209:15–10:00
  3. Break10:00–10:15
  4. P310:15–11:00
  5. P411:00–11:45
  6. Lunch11:45–12:30
  7. P512:30–13:15
  8. P613:15–14:00

Half-day Wed

  1. P108:30–09:15
  2. P209:15–10:00
  3. Break10:00–10:15
  4. P310:15–11:00
  5. P411:00–11:45
  6. Dismissal11:45
Two schedules cover the week between them. Break and lunch are on the grid and labelled; nothing is ever scheduled into them.

2.0

Publish what you can defend.

Generation runs per campus, per term. What comes back is a draft — and a list of everything it refused to do.

A screenshot of a Bellweave generation report for a term: 258 requirements, 232 fully placed (90 per cent), 867 sessions placed and 26 a period short. The summary reads “232 of 258 requirements are fully placed; 26 are a period short. The generator never breaks a hard rule, so it left those slots open,” and each shortfall is listed with the cohort and subject it belongs to.

The generator cannot break a hard rule. Not quietly, not loudly, not at all.

That sentence is the whole product. There are thirteen hard constraints. They are not preferences, and they are not weighted — they hold, or the slot stays empty.

When everything cannot be satisfied at once, Bellweave does not quietly produce a timetable that looks fine and isn’t. It leaves the period unassigned, flags it, and tells you exactly what it collided with.

Only a human may waive a hard rule — and only with a recorded reason, naming which rules were waived. There is no other door.

Feasibility report · one unplaced period

Grade-9 Chemistry — period 3 unplaced

“Grade-9 Chemistry needs a chem-lab in period 3, but the only chem-lab room is already taken by 10-B chemistry.”

unassigned Collides with H5 — the room must carry every feature the lesson requires — and the only room that does is already occupied that period (H2).

Every unplaced period comes back with a diagnosed reason written like this one — a sentence, not a warning count. Not a shrug. The sentence that tells you what to go and fix.

The thirteen. Never violated — not by generation, not by a substitution, not by a room change.

  1. H1A teacher is in at most one session per (date, period).
  2. H2A room hosts at most one session per (date, period).
  3. H3A cohort has at most one non-elective session per (date, period).
  4. H4A student is in at most one session per (date, period).
  5. H5A session’s room has all the feature tags the lesson requires — the subject’s own, plus anything the curriculum adds.
  6. H6Room capacity ≥ the number of students attending.
  7. H7The teacher is qualified for the subject.
  8. H8The teacher is available — weekly window, and not inside an absence.
  9. H9The room is available — no closure and no booking.
  10. H10A teacher never exceeds max periods per day / per week.
  11. H11All options of an elective block are scheduled in the same period(s).
  12. H12A session’s teacher and room are on the same campus as its cohort.
  13. H13A multi-period session occupies consecutive teaching periods, with one room and one teacher.

Four soft goals bend. The thirteen do not.

These are optimised and weighted, and the weights are yours to set. When one of them loses, nothing breaks — the timetable is simply a little less elegant than it could have been.

S1Balance teacher load evenly across the week.

S2Spread a subject across the week rather than clustering it on one day.

S3Honour teacher preferences — preferred rooms, avoid-early.

S4Prefer the homeroom teacher for the cohort’s core subjects. Configurable; off by default.

Draft, review, publish.

The draft and its feasibility report land together, so the review is a real one: here is the week, and here are the periods it could not place, each with the sentence explaining why. You fix the inputs and run it again, or you resolve the gaps by hand and record that you did.

Publishing versions the result. That version number matters later — every override made against a published timetable remembers which version it was made against, which is what makes stage 4.0 possible at all.

3.0

Monday, 13 July 2026.

Ashford Grange. Mr T. Bell calls in sick at 07:41, before anyone has unlocked a classroom. Here is the rest of the morning.

A screenshot of Bellweave's cover screen: the day's absences on the left with a coverage bar for each, and on the right the open session — 1A PYP Norwegian, period 2, Room 1A — above its ranked cover candidates. Each candidate carries the reason it ranks where it does (teaches this subject to this class, no clash at P2) and its weekly load, with an Assign button.
  1. The absence lands. Unplanned, phoned in. It is recorded as an availability exception on the date — the same shape a planned leave takes, only later. Approved leave arrives through request, approval and a balance decrement, and the sessions it will hit surface weeks ahead so cover is arranged calmly. This one does not have that luxury.

  2. The affected sessions surface. Bellweave expands the published timetable for Monday and keeps every occurrence whose effective teacher is Mr T. Bell. Nothing has started yet, so the whole day is in scope.

  3. 9A · Science (Biology) · P2 · 09:15–10:00 · Lab 3

    Candidates are gated. Four gates, all of which must pass: on the same campus as the cohort · qualified for the subject · free at that period and inside their own availability · and still under their load caps — for the day and for the week — once this period is added.

    The survivors are ranked. Familiarity first, because that is what the students feel: a teacher who already takes this subject with this cohort ranks above one who merely knows the cohort, and both rank above a stranger. Fair workload breaks the tie — fewest recent substitutions, most headroom left under the caps.

    Ms A. Iqbal takes it. She already teaches 9A and Biology is her subject, so she ranks first. Mr S. Nolan is qualified too, but 9A would not know him — he ranks second and stays where he is.

    substituted

  4. Mr E. Mensah is out too — and he is the only Geography teacher on this campus. Same four gates, same morning.

    8B · Geography · P5 · 12:30–13:15 · Room 09

    Nobody passes. The list comes back empty — not because the ranking is timid, but because there is no one to rank. Not “here is the closest match” — empty.

    needsCoverage

    So that is what it says. The period is flagged and left open on the day’s board, and it stays there until a person deals with it. It is not handed to whoever was nearest and unqualified. Whatever the human then does — an out-of-gate substitute by override, supervised study, or cancelling the period outright — is recorded as the resolution that closed it, along with any hard rule they chose to waive.

  5. A third absence: Ms L. Price. By now P1 is running. Periods that have already started keep their original teacher — no exceptions — because the record has to stay true to who was actually stood in the room. Only what has not started yet goes up for coverage.

  6. 9A · English · P3 · 10:15–11:00 · Room 07

    The admin picks Mr J. Hale. He already takes 9A for English on Thursdays, so the cohort knows him. It is written as an override on that occurrence, not on the plan. Status: substituted. Audit entry: who, when, before, after.

    The base timetable is untouched. Next Monday reverts to Ms L. Price on its own, without anyone remembering to undo anything.

    substituted

  7. The Geography period is closed by hand. No substitute existed to offer, so a person decides: supervised study, with Ms T. Bianchi covering the room. The reason is recorded, the occurrence moves to resolved, and the gap is on the record rather than papered over.

    resolved

Assignments commit sequentially. A substitute booked for one period is seen as busy when ranking the next — so the last decision of the morning is as sound as the first.

When a room goes out instead of a teacher, the shape holds. Eligible rooms are the ones on the same campus, with no closure and no booking, whose tag set covers everything the session requires, with capacity for the students attending, and free at that period. They are ranked tightest-capacity-fit first, so a class of twelve does not take the hall.

And a chem lab is never swapped for a gym. If the session needs chem-lab and every chem lab is closed or busy, no room is eligible, and the occurrence is flagged needsRoom for a human. The non-interchangeability is the feature. A system that would put a titration in the sports hall to keep its grid tidy is a system that is lying to you.

Candidates, ranked · Monday 13 July 2026

9A · Science (Biology) · P2 · 09:15–10:00 · Lab 3 — Mr T. Bell out

  1. 1 Ms A. Iqbal Teaches 9A, and Biology is her subject — this subject, this cohort. 2/5 today.
  2. 2 Mr S. Nolan Qualified in Biology, but does not take 9A — a stranger to the cohort. 3/5 today.

substituted Ms A. Iqbal, assigned 07:46.


8B · Geography · P5 · 12:30–13:15 · Room 09 — Mr E. Mensah out

No teacher passed all four gates. He is the only Geography teacher on this campus, so the list came back empty.

needsCoverage Open on the board until a person resolves it.

Same gates, same morning, two answers. The second answer is allowed to be “nobody” — and that is the point. Where a campus has just one teacher qualified for a subject, no automated substitute can exist, and Bellweave would rather say so than invent one.

4.0

Answer for it later.

Two layers. One is the plan; the other is the week that actually happened. Keeping them apart is what makes a year auditable instead of merely finished.

A screenshot of Bellweave's insights for a published term: 26 unplaced requirements, 867 sessions placed and an average of 14.9 periods per teacher each week, alongside panels naming what the numbers mean — which teachers carry noticeably more than the rest, which room is at capacity, and which teachers have few in-gate stand-ins if they are away.

Layer 1 — the base timetable.

The plan. Generated, versioned, published. It says 9A have English with Ms L. Price at P3 on Mondays, and it goes on saying that. It does not know Mr T. Bell was ill, and it should not.

Layer 2 — what happened on the date.

Monday’s substitution lives here, on the occurrence. Which is exactly why next Monday needs no undoing: the plan was never edited, so it simply reasserts itself.

Every override — substitution, room change, cancellation — and every flag and every manual resolution is audited: who, when, before, after. Including which hard rules a human chose to waive, and the reason they gave. At the end of term you can say not just how many gaps there were, but exactly how each one was handled, and by whom.

Audit entry

WhenMon 13 Jul 2026 · 08:52

WhoImran R.

Session9A · English · P3 · 10:15–11:00

BeforeMs L. Price

AfterMr J. Hale

Statussubstituted

Versionv11

The version is not decoration. It records the published timetable this override was made against — which is what lets a republish tell a stale override from a sound one, rather than guessing.

Republishing is where most systems quietly lose the truth.

Half-way through term the curriculum changes, a teacher leaves, and you have to generate and publish again. The new base plan does not know about the fortnight of overrides sitting on top of the old one. This is the moment a scheduling system either keeps its record or silently rewrites history.

Past occurrences are immutable. Frozen. A republish never rewrites a day that has already happened — whatever was taught, by whom, in which room, stays exactly as recorded, including the days that went wrong.

Future overrides are re-validated, never silently dropped. If the new base moved or removed the session an override was attached to, the override is not deleted and it is not blindly re-applied. It is flagged needsReview, and a person decides.

Because every override remembers its version, a mismatch is detectable rather than inferred. That is the difference between a system that can be audited and a system that merely looks tidy.

Republish · v11 → v12

PastFrozen. Untouched by the republish.

FutureRe-validated against v12.

MatchedOverride retained. The slot survived the change.

MovedneedsReview

A future override whose base session moved between v11 and v12. It is not dropped and not silently re-applied — it waits for a human.

Nine statuses carry a session’s life on the day — all of them Layer 2. The base plan has no status at all; it only says what should happen. These say what did: scheduled, substituted, roomChanged, needsCoverage, needsRoom, needsReview, resolved, cancelled, oneOff. Three of them exist purely to say “a person needs to look at this”.

Next step

Ready to see it against your own timetable?

Book a demo

In active development — piloting with a handful of schools this term.