student promotion — guided wizard with eligibility checks, capacity caps, soft-undo, hard reverse, carry-forward, and exam-end reports
New feature shipped to Inkwelly— India's most actively developed school management software. This change is in production at real Indian schools today, not on a roadmap.
- Six-step promotion wizard: Promotion now happens in a clearly labelled flow — pick scope and target session, select students (search by name or admission number, or pick whole class rosters), check eligibility, place each student into a target class, review the diff, then execute. Nothing hits the database until the principal explicitly clicks "Save as draft" or "Submit" — no orphan drafts left behind from exploration. Drafts are auto-saved to the browser so a power cut never loses progress.
- Marks-aware eligibility: Before promoting a class, every student gets a pass / warn / block readiness card from real exam marks, attendance percentage, outstanding fees, library and transport clearance, and whether a transfer is already in progress. Pass thresholds for CBSE (33% theory + 33% practical, both required), ICSE / CISCE (35%), state boards (33%), and IB (30%) ship out of the box and can be edited per school. When a warning fires, the principal can promote anyway by recording a 10+ character override reason which lands in the audit ledger pointing at exactly which rules were waived. Hard blocks like an open transfer, a terminal status, or a graduating class can never be silently overridden — they require resolving the underlying state first.
- Suggested decision per student: For each student the system suggests Promote, Detain, Compartment, or TC-Out (when it's the graduating class) based on the rules and the school's own policy. The principal still decides; the suggestion just removes the guesswork.
- Live capacity heatmap: While shuffling students between target sections each class tile shows 47 / 50 and turns green / amber / red as it crosses 80% / 95%. The wizard refuses to over-fill a section and the system re-checks capacity at the moment of execute so no race can quietly bust the cap.
- Stream election for Class 9 → 10 and 10 → 11: When the school is promoting into one of those transitions, a dedicated wizard step opens up where Science / Commerce / Arts groups, mandatory subjects, electives, and seat caps are configured per student. A "Quick assign top N" link picks students by source-class roll order in one click. Subject enrolments for the new academic year are written automatically when the run executes — no separate "now please add subjects" step the next morning.
- Carry-forward at promotion time: Transport route (carry / re-survey / drop), fee dues (carry as opening balance / write off / hold promotion), and scholarships (continue / re-evaluate / suspend) are picked once at the run level and overridden per student where needed. The run page surfaces every outcome — applied with the exact ₹ amount, pending fee onboarding with a clear "you'll see this resolve once you set up fees for the new session" hint, skipped with the reason ("no transport allotment to carry"), and failed with the reason ("Held back — ₹4,800 outstanding. Clear dues then re-run."). Pending fee carries auto-resolve the moment a fee profile lands in the new session, and the run page reflects that live.
- Find a student by name, not by id: The Selection step searches the source roster by name or admission number; matching students appear inline with their photo, current class and roll, and a status chip — already promoted, transferred, graduated and other non-active states are visible but greyed out so principals always understand why a name they expected isn't pickable. Class-roster mode shows the whole class with the same status chips and excludes non-promotable students from the run automatically while still listing them with a "will be skipped" tag.
- One-tap "undo" for 24 hours: Every completed promotion has a sticky red Undo button on the run page with a live countdown ("Undo for 23h 14m"). One click → confirm modal listing exactly what reverts → byte-identical restoration in under two seconds. If a teacher has already entered attendance, marks, fee invoices, or any other downstream data, the button greys out and a sticky inline card lists exactly what's blocking ("Fee invoices: 1 · Attendance entries: 12") so the principal knows what to clean before retrying. This removes the most common "we hit the wrong button on 2nd April" anxiety entirely.
- Hard Reverse for cases beyond the 24-hour window: A senior with the elevated permission can still revert a wrong promotion by recording a categorical reason (data error / parent complaint / board mandate / other) and a justification of at least 10 characters. The dialog probes the run first and shows exactly which downstream rows already exist, refuses to silently delete that data, and asks for an explicit second confirmation. The student's old enrolment is restored to active and carry-forward is cleanly undone, while the original promotion event, audit trail, and soft-voided new academic stay on file for compliance.
- Per-row Hard Reverse on the records tab: The Records tab shows a Hard Reverse button on each completed row whose Soft-Undo path is closed, mirroring the run-level controls. Useful when one student's promotion needs to be reversed long after the rest of the class has settled.
- Audit-grade run pages: Every promotion run has its own page with a workflow stepper, per-student records (status pill, eligibility snapshot, override reason, failure reason inline when something fails), and a full immutable audit ledger showing who did what and when. Failure reasons are surfaced both on the failed row and in the History tab in red callouts — never hidden behind "show details".
- One-click reports for the office: Once a run completes, the Reports tab exposes four downloads — promoted Excel for the office register, detained Excel for the parent-meeting list, A5 allocation-slips PDF for parent communication, and an A4 audit PDF for inspection records. The audit PDF works on any run status (handy for a parent meeting log before execute); the operational reports light up only after the run completes.
- Year-over-year on the run page: A coloured "YoY +1.1%" chip next to the run title plus a "Compare to last year" drawer show last year's promoted / detained / total alongside this year's headline counters, so the principal sees the detention-rate delta at a glance. Computed automatically from the school's prior runs and refreshed once a day.
- Per-school policy editor: A dedicated screen lets the principal flip approval-on-execute, change the soft-undo window from minutes to days, switch the roll-number strategy, and edit pass-mark rules per board (CBSE / ICSE / CISCE / State / IB) as JSON. A separate Stream Setup screen configures per-grade-transition stream groups, mandatory subjects, electives, and seat caps. Required vs Optional vs Disabled is a single dropdown so a school can dry-run the step before enforcing it. All changes apply to the very next promotion run.
- Hindi UI: Every promotion screen, button, error message, eligibility-rule label, and report column reads naturally in Devanagari Hindi for principals and teachers running the UI in Hindi — covering the hub, the six-step wizard, run detail tabs, policy editor, stream setup, carry-forward dropdowns, hard-reverse dialog, undo blockers, and reports tab.
This isn't a roadmap. It's already running in your competitor's school.
Every update on the Inkwelly changelog is in production at real Indian schools today. If you're tired of ERP vendors who promise features for “next quarter”, let's talk. We run a 90-day paid pilot with a pro-rata refund and full data export.