Walkthrough

Asking the School for Something

A broken projector, a box of markers, a hall for Saturday. Requests that have no record yet, raised by anybody — including the classroom teacher who holds no office — addressed to the office that answers that kind of ask, and closed by a signed memo the artisan can have checked without an account. Four request types, six registers cut by the module that raised them, and a decision route per type so a narrow grant stays narrow.

Teaching StaffSchool AdminSupplier or Artisan
Approvals

The asks that have nowhere to live

Most of what a school approves is a decision about a record that already exists: a refund of an invoice, a disposal of an asset, a leave request against a contract. Those stay where the record is, because an approver who cannot see the surrounding record is guessing. But a school also spends its week on asks with no record at all — the JSS 2A projector has died, we are out of whiteboard markers, the hall is needed on Saturday, release forty thousand naira for the inter-house sports. Nothing in the product could hold those, so they lived in WhatsApp and in somebody’s memory. This walkthrough follows one of them from a teacher who holds no office to the artisan who fixes the projector and gets paid on the strength of a memo he can verify himself.

On this page
Step 1 · Any member of staff

Somebody with no office asks for something

The test for whether a request belongs here is simple and worth stating before any screen: does approving it CREATE something that does not yet exist? A repair, a purchase, a released sum, a booked hall — yes. A refund of invoice 4471 — no, that decides a record Finance already owns, and it stays there. Everything in this walkthrough is on the first side of that line, which is why none of it was absorbed from another module.

1

My requests

The staff portal’s own queue: what this person has asked the school for, and where each ask got to. A separate namespace from the school register rather than a filtered view of it — the server pins every read here to the caller whatever the client sends, so a teacher’s list cannot accidentally render rows the school-wide register fetched.

Reference, subject, type and status on every row — a request is quotable from the day it is raised
Pending, approved, fulfilled, rejected and cancelled as distinct states, not one “open” flag
No source filter here on purpose: a teacher reporting a broken projector does not think in emitting modules
Withdraw an ask that has not been answered yet — nobody said no, and the record says so
2

Raising one

The form, open. Four types, and the type decides both the shape of the form and the office it will reach: Maintenance goes to the Facilities Officer, Purchase to the Store Keeper, Funds to the Bursar, Booking back to Facilities. Choosing the type is the only routing decision anybody makes, and it is made by the person who knows least about the school’s org chart.

Maintenance · something is broken — a location, free text, and no amount, because the artisan quotes afterwards
Purchase · something must be bought — what, how many, and what it is expected to cost
Funds · money must be released — an amount is required, because a funds request naming no figure is not actionable
Booking · a room, hall or pitch, with the window it is needed for
“Needed by” is a stated need, not an SLA — the product does not pretend to promise a date on the school’s behalf
Priority is the asker’s claim about urgency, and stays the asker’s claim: it never travels from low to urgent on its own

Ready to run your school on this?

Every screen in “Somebody with no office asks for something” is the live product, not a mockup. Create your school account, or have us walk you through it on a call.

Step 2 · The office that answers

It lands on an office, not on a person

Nothing here is assigned to an individual, and there is deliberately no field that could be. A request is addressed to an OFFICE; whoever holds that office today sees it, and whoever inherits it tomorrow inherits the pending work with it. That is the same routing every other approval in the product already uses — separation of duties, conflicted-office escalation, the visibility predicate — reused rather than reimplemented.

1

All requests

The complete register, ungated. It is first and it is where somebody holding a single decision grant actually works, because their own queue is spread thin across the source tabs by design — one hostel purchase here, one library repair there.

“Awaiting you” counts requests addressed to an office you hold, or one you are standing in for while it is vacant
The stat row and the table are filtered by one predicate applied in one place, so the card and the rows cannot disagree
Filter by type, status and priority; search the reference, the subject or the raiser’s name
The register is NOT pre-filtered to you — an administrator opening it wants the school’s whole picture
2

One request, and the decision

The projector, in full: who raised it and what office they held at the time (none — she is a classroom teacher, and refusing her would have defeated the intake), what they asked for, and the two buttons that answer it. Approving issues the memo; rejecting requires a reason, because a refusal nobody can act on is not an answer.

Approve or reject — and the confirm step names the instrument it will issue, “this issues a Work Order”
The author is barred from approving their own request, and stays barred after they move on
A decision records the office it was made in, not just the person, captured by the check that authorised it
Approved is not the end: the office that RAISED it marks the request fulfilled, because they are the ones who know the projector works

See this on your own school’s data.

Every screen in “It lands on an office, not on a person” is the live product, not a mockup. Create your school account, or have us walk you through it on a call.

Step 3 · The school office

Cut by the module that raised it

The registers are grouped by SOURCE, not by type, because “what is outstanding for the hostel?” is the question a school actually asks and “show me every booking” is not. Type stays a column and a filter on all six. Each register is gated on its module’s entitlement, so a school with no boarding house never meets a Hostel tab — an empty table with a confusing name is worse than no tab at all.

1

General

The catch-all, and the busiest — the only register that is not a purchasable module. A classroom projector belongs to no module, and it was the single most common request the product had nowhere to put.

Everything raised by the school itself rather than by a module’s workflow
Always present: a school cannot switch off the register its ordinary requests land in
The same table as the other five, narrowed by the route rather than by a control the reader has to find
2

Inventory

Requests the store room’s own work raised. This is the register that receives a work order automatically: when the holder of a school laptop reports it damaged or faulty, that report raises a Maintenance request here addressed to the Facilities Officer — with the custodianship row named, so the Facilities Officer knows which laptop.

Raised by a person’s own report, not retyped by an administrator
The originating record travels with the request, which is the difference between a work order and a sentence
Amending a report reconciles the work order — it raises one, or withdraws a pending one as the reporter
Resolving the report does not close the work order: “has the school dealt with what it was told” and “has the job been done” are different questions
3

Library

Shelving, repairs, and the purchases a librarian raises that are not book acquisitions. Acquisitions have their own register in the Library module and stayed there — they decide a record that already exists.

Present only for a school that has bought the Library module
Maintenance and purchase asks the library desk raises, in the library’s own words
Answered by the same offices as everything else — a librarian does not become an approver by being a librarian
4

Hostel

Boarding-house asks. Note what is NOT here: a broken window in Unity House is a hostel maintenance request, which the Hostel module already owns against a specific room. Maintenance in this module targets the Facilities Officer and never the Warden, who is scoped to one hostel — routing here would force every request to name a boarding house.

Bunk beds, kitchen equipment, house funds — the asks with no hostel row to hang on
Room-level faults stay in the Hostel module, against the room
Present only for a school that boards pupils
5

Health Clinic

The sick bay’s own asks — restocking, equipment, a released sum for an emergency. The nurse raises them; the Bursar and the Store Keeper answer them, which is exactly the separation a clinic budget needs.

Consumables and equipment the clinic runs out of
Funds requests for an unplanned cost, answered by the Bursar rather than by the clinic
Present only for a school that has bought Health & Clinic Management
6

School Store

The shop’s restocking and equipment asks. Six registers, one table, one endpoint set — the source travels as a query argument and the cache is keyed by it, so the hostel’s rows and the store’s rows were already separate without six copies of the same page.

Restocking asks the store raises against the school, not the orders families place
Same columns, same filters, same stat row — a reader learns one register and knows all six
Present only for a school running the School Store module

Set this up for your team.

Every screen in “Cut by the module that raised it” is the live product, not a mockup. Create your school account, or have us walk you through it on a call.

Step 4 · The person holding the paper

And then it leaves the building

This is the only workflow in the product that ends outside it. An approved request issues a signed memo — a frozen PDF carrying the asker’s signature and the approver’s — and the person who acts on it is an artisan or a supplier with no account and no reason to have one. The memo is rendered ONCE, at approval, and never re-rendered: a school that changes its letterhead next term must not change the bytes of a document somebody already signed.

1

Checking that the paper is genuine

A code printed on the memo, typed into a public page — or followed as the link the memo itself prints. The answer is deliberately thin: nothing here is anything the holder cannot already read off the sheet in their hand. The value is that the system confirms it rather than the paper asserting it.

No account, no session, no school context — the visitor has a code, not a short code
Genuine, current, and issued by this school, with the two names that signed it
A memo can be genuine and spent: a withdrawn or superseded one comes back genuine and NOT current
The page stays in neutral colours on purpose — a system vouching for a document in that document’s own livery is not vouching for anything
A re-issue supersedes rather than overwrites, so an old printout tells the truth about itself

Ready to run your school on this?

Every screen in “And then it leaves the building” is the live product, not a mockup. Create your school account, or have us walk you through it on a call.

Run your whole school on one connected platform

Start with the base package, switch on the modules you need, and give every parent, student and staff member a single place to log in.