← Back to POC indexProduct architecture & UX rationale
The thinking underneath the clickable POC: information architecture, roles, navigation, the journeys that were prototyped end to end, per-screen specifications, the gaps found in the brief, and what to build after MVP.
1. Information architecture
Platform (Jaber)
└── Tenant · one tuition centre, hard data isolation
├── Branch (Anna Nagar, Velachery …)
├── Academic year (holidays, working days, terms)
├── People
│ ├── Staff Owner · Admin · Accountant · Support
│ ├── Teachers availability · leave · salary structure
│ ├── Students guardian link · enrolment · fee plan
│ └── Parents one account, many children
├── Academics
│ └── Subject → Course → Batch → Sessions
│ ├── Classroom (auto-created)
│ ├── Attendance
│ ├── Recording → Drive file ref
│ └── Lecture notes → Drive file refs
├── Learning Assignments · Tests · Question bank · Results
├── Finance Invoices · Payments · Salaries · Expenses · P&L
├── Communications Announcements · Automations · Delivery log
└── Governance Roles & permissions · Audit log · Retention · ExportThe spine is Session. Attendance, recordings, notes, teacher pay (for per-class staff), student progress and parent notifications all hang off one class session. Getting that entity right is what keeps the product from becoming six disconnected modules — which is exactly what school ERPs feel like.
2. Roles & what each one is optimised for
| Role | One job | Optimised for | Never sees |
|---|
| Super Admin | Keep tenants healthy and paying | Desktop, dense tables | Tenant data without a consented, time-boxed grant |
| Owner / Admin | Run a profitable centre | Desktop-first, information-dense | — |
| Accountant | Close the month | Finance module only | Live classroom, student personal data beyond billing |
| Teacher | Teach and record the outcome | Mobile + classroom on desktop | Other teachers' pay, centre finances, students outside their batches |
| Student | Attend, learn, submit | Mobile-first | Other students' marks, attendance or fees |
| Parent | Know their child is okay | Mobile-first, 90-second visits | Other children, internal staff notes |
3. Navigation
Admin
Dashboard · Students · Teachers · Academics (Subjects/Courses/Batches) · Calendar · Finance (Fees/Salaries/Expenses/P&L) · Reports · Communications · Plan & billing · Settings
Teacher
Dashboard · My Classes · Students · Attendance · Assignments · Tests · Lecture Notes · Recordings · Performance · Salary
Student
Dashboard · My Learning · Classes · Recordings · Notes · Assignments · Tests & Results · Attendance · Fees
Parent
Dashboard · Attendance · Classes · Performance · Fees · Notifications
Nine items maximum per role, one level of nesting, and a ⌘K global search that spans students, teachers, batches, payments, recordings and notes. Learner-facing roles get a bottom tab bar on mobile; admin stays desktop-first because that's where a 150-row table belongs.
4. Prototyped journeys
Admin: add student → guardian → pick batches (conflict-checked) → fee plan with discount → review → invite sent to student + parent, first invoice scheduled, audit entry written.
Admin: create batch → assign teacher (double-booking blocked) → set recurring days/times → preview shows holidays skipped → N classes + classrooms generated.
Teacher: today's class → start → students join (attendance auto-captured) → mute/unmute, screen share, whiteboard, polls, hand queue → end class.
Teacher: summary → topics, concepts, homework → upload notes (live Drive upload states, retry on failure) → confirm attendance → submit → students & parents notified; recording finishes on its own.
Owner: finance dashboard → overdue fees → chase → salary run → mark paid → add expenses → P&L auto-computed with insights.
Parent: login → select child → attendance → upcoming class → recording & notes availability → fee status → pay.
10 steps from “I have a WhatsApp group” to “my first class is scheduled”, with CSV import and validation preview.
5. Screen specifications
Eight representative screens specified in full. The remaining ~50 follow the same pattern and are all clickable in the POC.
Admin DashboardCentre owner / admin
- Problem it solves
- The owner opens the app with one question: what needs me today? Numbers alone don't answer it.
- Primary action
- Resolve the top attention item (chase overdue fees)
- Secondary actions
- Approve payroll · open calendar · add student · open reports
- Important information
- Attention feed ranked by money & risk → 8 KPIs → revenue/expense/profit chart → today's classes → risks
- Empty state
- New centre: the feed becomes an onboarding checklist instead of alerts
- Loading state
- KPI tiles skeleton first, charts stream in after — the feed never blocks on charts
- Error state
- Finance panel fails independently; the rest of the dashboard still renders
Open screen →Student listAdmin / front desk
- Problem it solves
- Find any student in a 150+ roster and act on a group of them without opening 12 profiles.
- Primary action
- Find a student and open their profile
- Secondary actions
- Filter by batch/fee/grade · bulk move batch · bulk fee reminder · CSV import/export
- Important information
- Name, class, batches, monthly fee, fee status, attendance, admission date
- Empty state
- “No students yet” → CSV import as the primary action, not a blank table
- Loading state
- Skeleton rows preserving column widths so the layout doesn't jump
- Error state
- Inline retry banner above the table; filters stay applied
Open screen →Student profileAdmin
- Problem it solves
- One page that answers every question a parent could ask on a phone call.
- Primary action
- Record a payment
- Secondary actions
- Message · edit · assign batch · correct attendance · download receipt
- Important information
- Identity + guardian sidebar (always visible) with tabbed depth: overview, classes, attendance, fees, academics, files
- Empty state
- New admission: tabs show “first class is on Wednesday” rather than empty tables
- Loading state
- Sidebar renders from list data instantly; tabs load on demand
- Error state
- A failed tab degrades to a retry card, sidebar unaffected
Open screen →Live classroomTeacher (student view via the switcher)
- Problem it solves
- Teaching 18 teenagers online means knowing, at a glance, who is actually there and who needs to be muted.
- Primary action
- Teach — start, share, write, end
- Secondary actions
- Mute/unmute · camera control · lock room · poll · raise-hand queue · remove · record
- Important information
- Stage (video/screen/whiteboard) + filmstrip + presence panel + timer + REC + attendance counter
- Empty state
- Nobody joined yet: “waiting for students” with a nudge-all action
- Loading state
- Media connecting state with a device pre-check before joining
- Error state
- Network unstable banner (video pauses, audio + attendance continue); reconnecting badge per student
Open screen →Complete classTeacher
- Problem it solves
- Notes get skipped when they're a separate chore. Make them the natural last step of teaching.
- Primary action
- Submit summary + notes
- Secondary actions
- Correct attendance · retry a failed upload · toggle parent notification
- Important information
- Topics, key concepts, homework, attachments with live upload state, attendance confirmation, recording progress
- Empty state
- No attachments is valid — the summary alone is worth publishing
- Loading state
- Per-file progress bars; the form is never blocked by an upload
- Error state
- Failed upload keeps the local file, resumes rather than restarts, and doesn't block submission
Open screen →Finance / FeesOwner / accountant
- Problem it solves
- Money leaks quietly. Overdue fees must be impossible to miss and one click to chase.
- Primary action
- Chase overdue invoices
- Secondary actions
- Record payment · waive · generate receipts · export · switch period
- Important information
- Billed / collected / pending / overdue, then the invoice ledger with balance and ageing
- Empty state
- “Nothing is overdue” is a celebrated state, not a blank table
- Loading state
- Totals first (cheap aggregate), ledger after
- Error state
- Never show a partial total — if the aggregate fails, the tiles show an error rather than a wrong number
Open screen →Profit & LossOwner
- Problem it solves
- Owners run these numbers in a notebook. The system already holds every input.
- Primary action
- Understand this month's profit and why it moved
- Secondary actions
- Filter month/quarter/year/subject · export PDF & CSV · read the generated insights
- Important information
- Revenue → expense lines → net profit → margin, plus unit economics per subject
- Empty state
- First month: shows partial-month projection with a clear “month in progress” marker
- Loading state
- Statement skeleton with the row structure preserved
- Error state
- Explicit “figures unavailable” — never a plausible-looking wrong number
Open screen →Parent dashboardParent (mobile-first)
- Problem it solves
- A parent has 90 seconds and one question: is my child okay?
- Primary action
- Pay the fee, or check attendance
- Secondary actions
- Switch child · view results · read teacher feedback · manage notifications
- Important information
- Alerts first (attendance risk, fee due), then subjects with per-subject attendance, then results & fees
- Empty state
- Newly admitted child: “classes start Wednesday” with the schedule
- Loading state
- Child switcher and alerts render first
- Error state
- Each card fails independently — a broken results service must not hide the fee alert
Open screen →6. Gaps in the brief — added because production demands them
Scheduling conflicts as a first-class rule
Double-booking a teacher is the #1 operational failure in tuition centres. The POC blocks it at batch creation and at student assignment, and surfaces the specific clash rather than a generic error.
Recording lifecycle, not 'recording'
Capture → process → upload → verify → notify → retain. Every one of those can fail; each has a visible state, a retry, and an owner who gets told.
Receivables ageing
“Pending fees” is not one number. 0–7 days is a reminder; 30+ days is a conversation. The reports section ages receivables so the owner escalates proportionately.
Unit economics per subject and per teacher
Revenue minus attributable teaching cost, per batch. This is what tells the owner to open another Physics batch and close a Biology one.
Parent identity that handles siblings
One parent, many children, one login. Merging on phone number at admission avoids the duplicate-parent mess every school ERP ends up with.
Attendance semantics
Present / late / left early / absent, with join time, leave time and duration — because “present for 8 minutes” is not present, and fee-linked attendance rules need defensible data.
Teacher availability & leave feeding the scheduler
Leave approval must cascade into affected classes and notify students and parents automatically, or the approval is just a note in a chat.
Support access with consent and audit
SaaS staff entering a tenant is a privacy event. Time-boxed grant, tenant banner, entries in the tenant's own audit log.
Signed, expiring media URLs
Recordings must never be shareable Drive links. Playback is streamed through short-lived signed URLs scoped to enrolment.
Data export and deletion
No lock-in and DPDP-style erasure are table stakes for selling to thousands of centres — and are cheap to design in, expensive to retrofit.
Soft usage limits
Hitting a plan ceiling mid-term must warn and degrade gracefully, never block a class from starting.
Offline / poor-network reality
Indian home broadband drops. The classroom keeps audio and attendance alive through reconnects, and uploads resume rather than restart.
7. What to build, in what order
P0 — MVP (12 weeks)
- · Auth + roles + tenant isolation
- · Onboarding & CSV import
- · Students, teachers, academics
- · Batches & recurring scheduling
- · Live classroom + auto-attendance
- · Recording → Drive pipeline
- · Lecture notes workflow
- · Fees, salaries, expenses, P&L
- · Student, teacher, parent portals
- · Core notifications
P1 — Sell-ready (next 8 weeks)
- · Assignments & tests
- · Performance analytics
- · Reports + exports
- · Calendar polish, leave & holidays
- · Payment gateway
- · Audit log & permission matrix
- · Mobile-web polish
- · Announcement targeting
P2 — Scale & moat
- · AI summaries, notes, insights, doubt assistant
- · Multi-branch & white-labelling
- · SaaS billing lifecycle
- · WhatsApp
- · Native mobile apps
- · Franchise model
8. Additional features I recommend
Not in the MVP, but the difference between a working tool and a commercial-grade education SaaS.
- 01Payments that actually collectRazorpay/UPI autopay mandates, hosted payment links in every reminder, and webhook reconciliation. Collection rate is the single biggest lever on a centre's profit.
- 02Demo/trial-class funnel & CRM-liteEnquiry → demo class → follow-up → admission. Most centres lose money before the student ever exists in an ERP.
- 03WhatsApp as a first-class channelIn India this is where parents actually read. Template approval, delivery receipts, and two-way replies routed to the front desk.
- 04Doubt / discussion threads per classAsynchronous questions attached to a class, answered by the teacher — captures the WhatsApp-group behaviour inside the product.
- 05Study material libraryReusable material per course, not just per class, so a new batch inherits last year's notes and question bank.
- 06Mobile apps with push and offline downloadsStudents on ₹200/month data plans want to download a recording on Wi-Fi and watch it later.
- 07Proctoring-lite for online testsTab-switch detection, randomised question order, per-student time windows — enough to make marks credible without being creepy.
- 08Teacher substitution workflowWhen leave is approved, suggest an available teacher with the right subject and auto-notify — closing the loop the leave module opens.
- 09Report cards & certificatesTerm report card generation and course-completion certificates: high-perceived-value, low-effort, and a natural parent touchpoint.
- 10Fee plans with instalments and part-payment schedulesReal families pay in pieces. Model instalments explicitly instead of forcing partial payments into a monthly box.
- 11Accounting exportTally / Zoho Books export so the owner's accountant stops asking for spreadsheets.
- 12Referral & retention analyticsCohort retention by subject and teacher, referral tracking, churn reasons. Retention is cheaper than acquisition for tuition centres.
- 13Multi-language UITamil, Hindi, Telugu for parents and support staff. Parent-facing strings first.
- 14Accessibility to WCAG 2.2 AAKeyboard-complete flows, visible focus, captions on recordings (which the transcript pipeline gives you nearly free), and contrast-safe status colours.
- 15Uptime & incident commsA status page and in-app incident banner. If the classroom is down at 6 PM, silence is what loses the customer.
9. Does it pass the POC goal?
The test set was: can the owner, teacher, student and parent go from admission → class → learning → payment → reporting without another system? In this POC you can walk that path end to end: admit a student with a fee plan, create a conflict-checked recurring batch, run the live class with automatic attendance, close it with notes filing to Drive, watch the recording appear in the student portal, see the parent get the fee alert, collect the payment, and read the month's profit — all from seeded data that reconciles across every screen.
What a real launch still needs beyond UX: the media server and recording pipeline, the payment gateway, transactional messaging at volume, and the multi-tenant data layer with row-level isolation. Those are engineering commitments the UX here is deliberately shaped around — every failure mode they introduce (processing, upload failed, payment failed, disconnected) already has a designed state.
Back to the POC · Design system