Yearbook.systems · the operational control tower
Run 40 kids against 400 dated pages without losing track of who touched what.
This is not the book a family reads, and it is not what the newsroom feels like. It is the console an adviser runs the whole program from: who is on staff and what they may do, which student may edit which block of which spread, the plan that turns a page count into an ordered flatplan, the states every spread walks to the printer, and the one live list of what needs the adviser today.
The finished book a family opens lives at onlineyearbook.software. That is the product; this is the operations behind it.
What staff culture, deadlines-night and the newsroom feel like lives at yearbook.zone. This page is the machinery, not the mood.
Staff & roles · separation of duties
Five roles. One approver. Zero students anywhere near the money.
The roles an adviser can assign are a closed vocabulary — a role not on this list cannot be given. Two capability flags matter for governance: who can approve and lock pages, and who is finance-capable. Only the adviser carries either. The four student-holdable roles carry neither, and that is not a default someone can change.
| Role token | What it is | Can approve / lock | Finance-capable |
|---|---|---|---|
| chief_editor | Chief Editor Full editorial control across the book -- but not an approver and not finance-capable. | no | no |
| staff_editor | Staff Editor Edits the pages and spreads assigned to them. | no | no |
| restricted_staff | Restricted Staff Only the pages explicitly assigned to them -- nothing else in the book. | no | no |
| photographer | Photographer Uploads photos to the folders and albums assigned to them. | no | no |
| adviser | Adviser Approves and locks pages; manages money and deadlines. The one approver in the room. | yes | yes |
The non-negotiable rule, enforced in code. A validator refuses to assign any finance-capable role to a member marked as a student, returning a plain issue instead of silently allowing it. Minors edit the book; they never touch money or the finance side of the program. The other finance-capable identity is the platform-level district_admin — an administrator, never a student.
Assignment & scope · who can touch what
A student writes only their blocks — and the cage fails closed.
Assignment is enforced per block of a spread, not per page and not on the honor system. A scoped student’s reach is the union of their persisted write grants. An edit is allowed only when every block it touches is inside that union; a single off-region block denies the whole operation, because a collaborative update is one transaction and cannot be partially applied. A scoped student with no grants at all cannot structurally write.
Who bypasses the cage. The people who SET the assignments are never region-bound: adviser co_adviser district_admin school_admin support_admin partner_admin editor_in_chief. Everyone else is caged to exactly their grants. The predicate is pure and unit-tested, and it returns the same deny codes the live collaboration gate already speaks, so the resolver and the gate can never disagree on “is this an adviser.”
The ladder / flatplan · the production plan
A page count and a section list become an ordered, role-stamped book.
You describe the book: an interior page count and an ordered list of content sections, each with a compose role and an optional page budget. The flatplan driver lays the canonical spine — cover, endsheet, title, your content, then index, colophon and autographs — and stamps every spread with the engine that fills it. It is deterministic: the same plan produces the same flatplan every time, so a re-run reproduces the identical book and a test pins it exactly.
| Compose role | Engine dispatched | What it does | Kind |
|---|---|---|---|
| people | portraitFlow | The portrait section -- a deterministic roster paginator. | auto-composed |
| content | draftSpread | The candid/coverage workhorse -- autoLayout from the consent-gated pool. | auto-composed |
| feature | applyRichTemplate + draftSpread | A designed feature spread; copy threaded by computeFlowPlan when budgeted. | auto-composed |
| index | buildIndex | The back-of-book name/topic index, alphabetized from placement data. | auto-composed |
| divider | structural | One styled spread that opens a content run (consumes a section spread). | structural |
| title | structural | Front-matter title spread, body pp.1-2. Typed, not auto-packed. | structural |
| colophon | colophonSealBlock (honest-off) | The plan RESERVES the spread; the seal block is not wired into the worker boot yet. | structural |
| autograph | structural | Blank signature pages -- an empty styled spread, no engine. | structural |
| cover / endsheet | structural | Non-folio leaves; outside the body page count, not auto-composed. | structural |
Where the line is drawn, honestly. This driver PLANS; a separate conductor service walks the plan and calls each shipped engine to compose the spread. The plan can reserve a colophon spread, but the colophon seal block is not yet wired into the worker boot — so the page says “reserved,” not “printed.” Nothing here designs your book with a model; the layout math is deterministic and inspectable.
Production & proofing · the state machine
Every spread walks one ordered path, and the adviser holds the lock.
A spread advances through five ordered states. Because the states are ordered, progress is just position on the path — which is what lets the control tower always surface the pages furthest from done. “Proofed” is a real gate: a second set of eyes on names, dates and spelling. “Final” means approved and locked for the printer, and only the adviser can approve and lock.
Print-plant deadlines are first-class. The adviser sets internal deadlines against sections and spreads; a spread whose deadline has passed and is not yet approved surfaces on the worklist and deep-links to planning. At plan time the flatplan also warns when a page count is odd (rounded up — books print in even leaves) or not divisible by four (printers impose in four-page signatures), so the plan already matches how the plant binds the book.
The control tower · “Needs you”
One live list of what actually needs the adviser today.
Six signals, each a real count from a surface the adviser already runs. A row with a zero count is dropped, so the list is the live work and never a parade of zeroes. Each read resolves independently and fails soft — a read that is unavailable contributes nothing rather than blanking the page or inventing a number.
Why this matters. The workspace used to hard-wire every count to zero, so it was structurally always “all caught up” — a lie by omission on the one triage surface an adviser trusts. Now “all caught up” appears only when every read genuinely returns zero. The cockpit tells the truth or it stays quiet.
In proportion · not a bare number
The honest fractions behind the console.
Stated plainly · what this page does not claim
The parts that aren’t wired, named out loud.
The colophon seal block is not wired into the worker boot. The flatplan can reserve the colophon spread; it is not composed yet.
Region-scoped write grants resolve from a persisted per-block map. A book with no grants leaves a scoped student at the fail-closed floor — that is by design, not a claim that every book already carries grants.
No face-matching, no facial recognition, no AI photo-tagging anywhere on this surface. The flatplan is deterministic layout math, not a model guessing your design.
No mail is sent, no inbox is provisioned, and there is no reply-from address on this product. This page provisions no mailbox.
No checkout, no card capture, no charge on this site. Money capability in the program is adviser-only by construction; commerce is a separate product and is not switched on here.
Questions an adviser and a district technologist actually ask
Straight answers, traced to the mechanism.
How is this different from onlineyearbook.software or yearbook.zone?
Can a student ever touch the money side of the program?
What actually stops a staffer from editing a spread that isn't theirs?
Does the platform lay the book out for me automatically? Is that AI?
How are the section page budgets divided?
What are the production states a spread moves through?
What does the adviser 'Needs you' list actually show?
How do print-plant deadlines fit in?
What happens to a student who opted out of the book?
Is there a live checkout or payment on this page?
What is honest-off today, stated plainly?
Book a walkthrough
See your program in the console — no signup, no card.
We walk the real surfaces honestly: the role matrix, the write-grant cage, the flatplan driver, the production ladder, and the live worklist. Where something is honest-off, we show you exactly where the line is.