MODULE · Academics

Your academic backbone. Sessions, classes, subjects, timetable — all linked.

Sessions, classes, subjects, board codes, teaching batches, timetable and a five-axis readiness score — one structured backbone for the Indian school year. Set up once in March; run for the next thirty CBSE, ICSE, IB and State Board years without rebuilding the structure every April.

BG PICCOZONE

How most Indian schools manage academics today

It is the third week of March. Admissions are tapering, results are being entered, and the principal of an upper-primary CBSE school in Bhopal has four versions of "what classes will we run next session" sitting on her desk. The class teachers' Excel master, mailed three years ago and edited every April, has the section list. The exam coordinator's printout has the subject mapping — but only for Class 8 onwards. The timetable in-charge keeps a whiteboard pinned next to the staff-room photocopier; one column has been erased seven times. The CBSE affiliation cell asks, mid-call, how many periods of Hindi the school taught in 2024-25. Nobody has the same answer.

By the second week of April, the school has rebuilt the timetable from scratch on Excel. A teacher who left in January is still on three slots. Section C of Class 9 has been added to handle 18 over-strength admissions, but the bus route, library category and attendance app have not caught up — three different staff are calling parents to "just confirm one more time". UDISE+ submission lands in October and somebody asks for the class-wise subject list with hours per week. It takes two days and a phone call to the previous office assistant who has since moved to Indore.

Inkwelly's Academics module replaces this with one structured backbone. Sessions, classes, subjects, board codes, teaching batches, timetable, examinations and the academic calendar live inside a single hierarchy. Every entity carries a real database identifier — gradeLevelId, subjectOfferingId, teachingBatchId, entryScope — and every dependent module reads off the same source of truth.

Inkwelly Academics dashboard showing readiness score, class structure, subjects coverage and timetable conflicts for a CBSE school session
Academics dashboard — sessions, structure, subjects, teachers and timetable on one screen

What we built instead

Academics in Inkwelly is a five-axis system that tracks readiness as a live number, not a feeling. The module dashboard runs a readinessBreakdown across structureReady (classes and sections defined), teachersAssigned (every class has at least one class teacher and every batch has a primary teacher), timetablePublished (timetable status moved out of DRAFT), syllabusUploaded (curriculum data loaded against subjects), and examsScheduled (term exams created). The result is a 0-100 score — green at 85+, amber at 60-85, red below — that the principal can show the trustees without preparing a presentation.

Underneath the dashboard sit nine concrete sub-systems: academic sessions, classes with NEP-aligned grade levels, subjects with six types and seven assessment modes, board codes for 24 Indian and international boards, subject groups for streams and electives, teaching batches for split-section delivery, timetable with reusable templates and conflict detection, the academic calendar with terms and holidays, and a data-quality engine that surfaces specific alert codes — CLASS_NO_TIMETABLE, TEACHER_CONFLICT, ROOM_DOUBLE_BOOKED, SUBJECT_NO_BOARD_CODE — instead of a vague "things are not okay" badge.

What the Academics module gives you

  • Academic sessions with `startDate`, `endDate` and `isCurrent` flag — supports April-March, January-December and any custom calendar a board demands
  • Class structure with `gradeLevelId`, `sectionId`, `maxStudentsCapacity` and `mediumOfInstruction` — Pre-Primary to Class XII with NEP stages FOUNDATIONAL, PREPARATORY, MIDDLE and SECONDARY
  • Subject library with `subjectType` (Scholastic, Co-scholastic, Health & PE, Art, Work, Vocational) and `assessmentMode` (Marks, Grade, Rubric, Portfolio, Descriptive, Competency, Mixed)
  • Board code mapping for 24 boards — CBSE, ICSE, ISC, UP Board, Maharashtra, Karnataka, Tamil Nadu, Kerala, Gujarat, Rajasthan, MP, West Bengal, Bihar, Andhra, Telangana, Odisha, Assam, Jharkhand, Chhattisgarh, Haryana, Punjab, IB, Cambridge IGCSE
  • Subject groups (`STREAM`, `LANGUAGE_GROUP`, `ELECTIVE_GROUP`, `MANDATORY_GROUP`) with five selection modes — Free choice, Mandatory one, Mandatory all, Mandatory range, Conditional
  • Teaching batches with `batchCode`, `batchName`, `periodsPerWeek` and `maxCapacity` — split a class for languages, labs, sports, vocational
  • Vocational subject support with NSQF level (1-10), NSDC code, required practical hours, industry partner flag and certification body
  • Timetable templates per NEP stage with `slotType` (Teaching, Break, Lunch, Assembly, Activity, Homeroom, Zero Period, Remedial) and per-day slot configuration
  • Conflict detection — `teacherDoubleBooked`, `roomDoubleBooked`, `classOverlap` flagged before a timetable is published, not after parents call
  • Substitution overrides with four actions — `SUBSTITUTE`, `CANCEL`, `EXTRA_CLASS`, `ROOM_CHANGE` — and 7-day / 30-day override-rate tracking
  • Bloom's taxonomy distribution per subject (Remember, Understand, Apply, Analyze, Evaluate, Create) for curriculum auditors
  • Data-quality alerts with severity (`HIGH`, `MEDIUM`, `LOW`) and specific codes that link straight to the screen where the fix is one click away

See it in action

BG PICCOZONE
Academics dashboard — readiness score, structure, subjects, teachers, timetable on one screen
BG PICCOZONE
Subject offerings — per-class list with board codes, electives and language groups
BG PICCOZONE
Timetable view — class-wise grid with conflict markers and free-teacher overlay
BG PICCOZONE
Data-quality alerts — every alert code linked to the screen where the fix is one click away

The whole academic year, on one page

The Academics dashboard at /school/<your-school>/<session>/academics is intentionally dense. It is not a marketing page — it is the screen the principal opens at 8:15 am and closes at 4:30 pm. Every card tracks a real piece of school operations and links straight to the screen where data is entered.

Below is the breakdown of what every card surfaces and where the underlying data lives. None of these are vanity metrics; every one of them maps to a question a CBSE inspector, a UDISE submission, a parent on a WhatsApp call, or a trustee in a quarterly meeting will eventually ask. Most school ERPs surface five or six dashboard cards because that is what fits on a sales screenshot. Inkwelly surfaces twelve because that is what running a real CBSE upper-primary actually needs.

Twelve cards on the dashboard, all real

Hero KPIs

Classes, teachers, subjects and student-teacher ratio with `vsSession` growth comparison. Verdict tagged HEALTHY, ACCEPTABLE, STRAINED or CRITICAL against CBSE, ICSE and RTE benchmarks.

Readiness Score

Five-axis 0-100 score across structureReady, teachersAssigned, timetablePublished, syllabusUploaded and examsScheduled. Verdict: Ready to Go, Almost There, or Needs Attention.

Structure

NEP stage stacked bar (Foundational, Preparatory, Middle, Secondary) with grade-level breakdown, mediums of instruction, streams, over-capacity and under-utilised classes flagged.

Subjects

Donut by subject type, top-5 by enrolment, board-code coverage percentage, mandatory coverage, electives fill-rate. Pre-loaded codes for 24 Indian and international boards.

Teachers

Load distribution histogram against benchmark (typically 18-24 periods/week), top 5 most-loaded with class-teacher badge, qualification match, gender mix and 30-day substitutions.

Timetable

Class coverage percentage, daily-load heatmap (top 8 classes × 7 days), conflict count broken into teacher and room double-bookings, 7-day and 30-day override rate.

Curriculum

Bloom's taxonomy stacked bar (Remember to Create), average learning outcomes per subject, syllabus coverage percentage, lesson-plan publish rate.

Examinations

Exams by status (Draft, Scheduled, In Progress, Marks Entry, Verification, Approved, Published, Archived), marks-entry progress, next exam callout, admit-card generation rate.

Calendar

Session progress percentage, term progress per term with status badge, working-day projection, upcoming events for next 30 days with affected-class count.

Data-Quality Alerts

Every issue carries a code (CLASS_NO_TIMETABLE, TEACHER_CONFLICT, SUBJECT_NO_BOARD_CODE, ELECTIVE_UNFILLED, MARKS_NOT_ENTERED, ADMIT_CARD_BLOCKED) and a one-click jump to the fix screen.

Growth

Session-over-session trend for enrolment, class count, subject offerings and teaching batches. Useful for trustee meetings and CBSE renewal forms that ask for three-year movement.

Activity

Audit-style log of recent academic actions — promote session, add subject offering, create teaching batch, override timetable — with the user, timestamp and affected entity.

Inkwelly Academics readiness score breakdown with structure, teachers, timetable, syllabus and exams axes for an Indian CBSE school
Readiness score with the five-axis breakdown, ready for the trustees' quarterly review

Sessions and the Indian school year

The academic session is the root of every academic record. Inkwelly stores it as a SchoolAcademicSession row with startDate, endDate, an isCurrent flag and a slug — 2025-26, 2026-27, or whatever convention your school keeps. The structure does not assume April-March: schools running on the IB or IGCSE January-December calendar configure their sessions exactly the same way, and a multi-school trust can run one school on April-March and another on January-December under one organisation without contortions.

When the next session begins, the principal calls setCurrentSession(isCurrent=true) from /academics/sessions. The previous session is not deleted — it is sealed read-only. Marks, attendance, behaviour notes, transfer certificates, scholarship records and parent communications from the closed session remain queryable forever, but cannot be edited. Three years later, when the same student applies for a foreign university and the admissions office calls for verification, the 2022-23 record is one search away — not in a steel almirah.

Two boards under one roof? Handled.

Many Indian schools run two boards in parallel — CBSE for the main wing and IGCSE for the senior wing, or CBSE plus the State Board for an aided pre-primary section. Inkwelly handles this without forcing two systems. Each class can be tagged to its own board via the subject library; subject offerings, board codes, examination patterns and timetables are kept separate per board, while the student list, fee ledger and staff directory remain shared.

A sibling group split between CBSE Class 8 and IGCSE Class 9 still appears as one family for parent communication, fee discounts and address-change updates. The accountant does not maintain two student rosters; the principal does not log in to two systems. One school, two boards, one operational view.

Inkwelly subject offerings showing parallel CBSE and IGCSE class lists with separate board codes and timetables under one school
Inkwelly class structure screen showing a Class 9-D section being added mid-session with capacity and class-teacher fields

Mid-session changes without a restart

It is the third week of August. Class 9 admissions overflowed Section C and the school needs a Class 9-D — twelve days from now. In most ERPs this means a 'data correction request' to the vendor, two weeks of follow-up calls, and a Friday-night data import that breaks the parent app for three classes.

In Inkwelly, adding a section is a two-minute screen. Set gradeLevelId, sectionId and maxStudentsCapacity, assign a class teacher with isPrimary=true, and the new class appears in the timetable, attendance roster, fee ledger and parent app on the next page load. Add an optional language for Class 6 mid-year, change a teaching batch's periodsPerWeek from 5 to 6, swap a room — all without locking the system. The school year does not have to be perfect on day one.

Closed sessions are sealed forever, not deleted

Closing a session in Inkwelly does not archive it into a different system. The records remain in the same database, with the same identifiers, but flipped to read-only. A teacher who leaves in June 2024 still has her exact teaching assignments visible in 2025-26's records — useful when a previous student returns three years later for a Bonafide Certificate, or a CBSE inspector asks for the 2022-23 timetable to verify language teaching hours.

This is what makes Academics survive a CBSE renewal cycle. Affiliation paperwork frequently asks for three-year movement of subject offerings, teacher load and student strength. With sessions sealed and queryable, the answer is a one-click export, not a four-day reconciliation between an old Excel and the current ERP.

Inkwelly closed academic session showing a 2022-23 timetable with read-only badge and original teacher assignments preserved

Classes, sections, and the NEP stage tree

A class in Inkwelly is not a label; it is a row with gradeLevelId, sectionId, maxStudentsCapacity, enrolledStudentCount, mediumOfInstruction and a multi-language nameI18n field. The grade-level taxonomy is aligned to the National Education Policy 2020 — every grade carries a nepStage (FOUNDATIONAL for Pre-K to Class 2, PREPARATORY for Class 3 to 5, MIDDLE for Class 6 to 8, SECONDARY for Class 9 to 12) with ageRangeMin, ageRangeMax and gradeNumber fields.

Why this matters: timetable templates, exam patterns, attendance rules and assessment modes are configured per NEP stage, not per individual class. Set up a single FOUNDATIONAL template once, and every Pre-Primary, Class 1 and Class 2 in your school inherits it. Change the assessment mode for SECONDARY to MARKS_BASED, and Class 9 through 12 update together. The work scales sub-linearly as the school grows.

Pre-Primary to Class XII with NEP-aligned stages

The class structure supports Pre-Primary (Nursery, LKG, UKG), Class 1 to 12, and the Science / Commerce / Humanities streams at Class 11 and 12 — all rendered in the structure card with stacked bars per NEP stage. A school in Pune running CBSE Pre-Primary to XII sees a four-segment stack (FOUNDATIONAL · PREPARATORY · MIDDLE · SECONDARY); a Tier-3 school in Bahraich running only Class 1 to 8 sees three; an aided Madrasa upper-primary sees two.

Grade levels can be added or modified per board: a Cambridge IGCSE school maps Cambridge Lower Secondary to MIDDLE and IGCSE to SECONDARY; an IB school maps PYP, MYP and DP to the same NEP frame for UDISE compliance. Inkwelly stores both the school's labels and the NEP-mapped category — the latter is what UDISE+, RTE reports and trustee dashboards use.

Inkwelly Academics structure card showing NEP stage stacked bar with Foundational, Preparatory, Middle and Secondary segments for an Indian CBSE school
Inkwelly class detail screen showing maxStudentsCapacity, enrolledStudentCount, mediumOfInstruction and primary class teacher assignment

Capacity, medium of instruction, and class teachers

Every class carries a maxStudentsCapacity and a derived enrolledStudentCount. Over-capacity classes are flagged in the structure card; under-utilised classes are flagged below the configured threshold (typically 40%). For trustees and the affiliation team, this is the single screen that answers 'how full is the school' without anyone running a SQL query.

Class-teacher assignment is a first-class workflow. assignClassTeacher(employeeId, isPrimary=true) makes the employee the primary; secondary class teachers (often a co-teacher or a wing in-charge) can be added too. Class-teacher coverage as a percentage shows up on the teachers card — and any class without a primary teacher fires CLASS_NO_TEACHER in the alerts feed before the academic year goes live.

Subjects, board codes, and the subject library

A subject in Inkwelly carries six independent dimensions. subjectType is the broadest classification (SCHOLASTIC, CO_SCHOLASTIC, HEALTH_PE, ART_EDUCATION, WORK_EDUCATION, VOCATIONAL). subjectCategory adds the academic family — Language, Mathematics, Science, Social Science, Computer, Commerce, Humanities, Physical Education, Arts, Vocational Skill, Other. assessmentMode decides how marks or grades are computed (MARKS_BASED, GRADE_ONLY, RUBRIC_BASED, PORTFOLIO, DESCRIPTIVE, COMPETENCY_BASED, MIXED). priorityLevel (CORE, HIGH, MEDIUM, LOW, EXTRA_CURRICULAR) drives the order in which subjects appear on report cards. Language flags (isLanguage, isFirstLanguage, isSecondLanguage, isThirdLanguage) handle the first-language / second-language / third-language paperwork that every UDISE submission and CBSE renewal asks for.

Each subject can be mapped to one or more BoardSubjectCode rows — the bridge between Inkwelly's internal label ('Hindi Course-A') and the board's official code ('CBSE 002'). Mapping carries theoryMaxMarks, practicalMaxMarks, internalMaxMarks, theoryPassMarks, practicalPassMarks and the corresponding weightages — exactly what the marksheet generator needs to compute a board-compliant result without anyone touching a calculator.

Six subject types, seven assessment modes — every Indian board fits

Indian school subjects do not fit into a single column. Mathematics is SCHOLASTIC and MARKS_BASED; Yoga is HEALTH_PE and RUBRIC_BASED; Art is ART_EDUCATION and PORTFOLIO; SUPW is WORK_EDUCATION and DESCRIPTIVE; an NEP-aligned Bagless Day project is CO_SCHOLASTIC and COMPETENCY_BASED. CBSE's CCE-era schools, ICSE schools running rubrics for art, IB schools using portfolios, and State Boards mixing marks and grades — all map cleanly onto these dimensions without forcing one assessment style on every subject.

This is why Inkwelly does not need a separate 'CCE module' or 'rubrics module'. Assessment shape lives on the subject row itself; the marks-entry and report-card screens read it directly. Mixed-mode subjects (theory marks plus practical rubric, common in Computer Science) are first-class — assessmentMode = MIXED covers that without per-subject hacks.

Inkwelly subject library showing six subject types and seven assessment modes including marks based, rubric, portfolio and competency for an Indian CBSE school
Inkwelly board code mapping screen showing CBSE, ICSE, UP Board, Maharashtra and other Indian state board codes attached to subjects

Board codes for 24 Indian and international boards

The EducationBoard enum carries 24 named boards out of the box — CBSE, ICSE, ISC, IB, Cambridge IGCSE, plus every major State Board: Maharashtra, Karnataka, Tamil Nadu, Kerala, Gujarat, Rajasthan, UP Board, West Bengal, Bihar, MP Board, Andhra Pradesh, Telangana, Odisha, Assam, Jharkhand, Chhattisgarh, Haryana, Punjab. New boards can be added under the OTHER slot without a schema change.

For each board, a subject's boardCode, boardSubjectName (the board's official name, often different from the school's label), theoryMaxMarks, practicalMaxMarks, internalMaxMarks, pass marks and weightages are stored once. The marksheet template, the transcript export, the APAAR-linked transcript, the migration certificate — they all read from this single source. No more 'check the printed circular' to find the correct CBSE code 086 vs 087 the night before result publication.

Vocational subjects with NSQF level and NSDC code

NEP 2020 pushed vocational education from a side stream to a core requirement. Inkwelly bakes it in. Subjects flagged isVocational = true carry a vocationalCategory (IT-ITeS, Healthcare, Agriculture, Retail, Tourism, Beauty & Wellness, Banking & Finance, Construction, Automotive, Electronics, Apparel, Media, Food Processing, Logistics, Manufacturing, Sports & Fitness, Telecom, Security, Plumbing, Electrical, Other), an nsqfLevel from 1 to 10, an nsdcCode for the National Skill Development Corporation qualification pack, requiredPracticalHours, an industryPartnerRequired flag and certificationBody (NIELIT, Sector Skill Council, etc.).

When CBSE asks 'how many students completed Level 2 NSQF in IT-ITeS this session', the answer is a one-screen filter, not a phone call to the vocational coordinator. When DGT or NSDC wants the practicum-hour return, it is a one-click export. Schools running CBSE Skill Subjects, ITI integration or NEP vocational pilots get this without a separate vocational ERP.

Inkwelly vocational subject configuration showing NSQF level 4, NSDC code, required practical hours and certification body NIELIT for Information Technology stream
If the structure of your school year is not in one place, it is not your school year — it is four people's interpretation of it.

Before and after Inkwelly Academics

FeatureExcel + whiteboardInkwelly Academics
Year-end promotionThree days, four staff cross-checking names across spreadsheetsOne workflow — promote session, set retention exceptions, sealed read-only in under a minute
Timetable creationWhiteboard rebuilt every April; teacher clashes spotted in week twoReusable templates per NEP stage; conflicts flagged before the timetable is published
Subject offerings per classLives in the class teacher's memory or a printed registerExplicit `subjectOfferingId` rows, exportable for UDISE+ and CBSE renewal
Board code lookupLook up CBSE 041 vs 086 from a printed circular each examPre-loaded for 24 Indian and international boards; flows into marksheets automatically
Substitute teacher coveragePhone calls to whoever is rumoured to be free this periodFree-period view + four override actions logged with reason and audit trail
Closed session recordsSteel almirah; finding a 2019 record takes hoursSealed read-only inside the same database; any year's record opens in seconds
Vocational subject trackingSeparate spreadsheet maintained by the vocational coordinator, never in syncFirst-class fields — NSQF level, NSDC code, practical hours, certification body
Data quality alertsDiscovered three days before the inspector arrivesCodes like CLASS_NO_TIMETABLE, SUBJECT_NO_BOARD_CODE, TEACHER_CONFLICT, ELECTIVE_UNFILLED — each links to the fix screen

Subject groups and teaching batches — the heart of NEP-aligned delivery

Indian school subjects rarely follow a single global rule. Class 9 students at a CBSE Mumbai school typically pick one of three languages (Hindi, Sanskrit, French) at the same period. Class 11 Science students choose Mathematics or Biology as the fourth scholastic subject. NEP-aligned schools split a Class 5 PE period into individual / pair / team batches each running in parallel. None of this fits a single 'class has subjects' table.

Inkwelly handles all of it through two linked entities — SubjectGroup (defines the rule) and TeachingBatch (the actual delivery). Subject groups carry a groupType (STREAM, LANGUAGE_GROUP, ELECTIVE_GROUP, MANDATORY_GROUP) and a selectionMode (FREE_CHOICE, MANDATORY_ONE, MANDATORY_ALL, MANDATORY_RANGE, CONDITIONAL) plus optional minRequired, maxAllowed, isMutuallyExclusive and prerequisiteGroupId for branching electives. The combination expresses every CBSE, ICSE, IB and State Board elective rule cleanly.

Streams, electives, language groups — one model fits all

A Class 11 Science stream is a STREAM group with MANDATORY_RANGE selection (minRequired = 4, maxAllowed = 5) and a list of subjects (Physics, Chemistry, Mathematics, Biology, Computer Science, Physical Education). The student picks four; the fifth is optional. A Class 9 third-language group is a LANGUAGE_GROUP with MANDATORY_ONE selection from Hindi, Sanskrit, French, or German. A Class 6 art-elective is an ELECTIVE_GROUP with FREE_CHOICE and isMutuallyExclusive = true — the student picks one out of dance, drama, music, visual art.

Selection rules can chain. A prerequisiteGroupId lets you say: only students who chose Biology in Class 9 are eligible for the Bio-tech stream in Class 11. A conditionalRules JSON field handles board-specific quirks — like CBSE's rule that students opting out of Mathematics at Class 9 must take a vocational subject. The system enforces the rule at enrolment, not after marks are entered.

Inkwelly subject groups screen showing a Class 9 third-language group with Hindi, Sanskrit and French as mandatory-one selection mode
Inkwelly teaching batch screen showing a Class 9 third-language batch with batch code, batch name, periods per week, max capacity and assigned primary teacher

Teaching batches — the real unit of delivery

A subject group is the rule; a teaching batch is the room. TeachingBatch carries batchCode, batchName, subjectOfferingId (the FK to which subject is being delivered), gradeLevelId, maxCapacity, currentStrength, periodsPerWeek and a preferredRoomId hint. A Class 9 with three language batches running in parallel is three TeachingBatch rows; a Class 11 Science stream is one TeachingBatch per subject; a co-scholastic art class with two batches (one for each section) is two batches.

Teaching assignment is a separate row — TeachingAssignment with teachingBatchId, employeeId and isPrimary. A batch can have a primary teacher and one or more assistant or substitute teachers. Bulk creation is supported via bulkCreateTeachingBatches(payload) for schools setting up a fresh session — paste a CSV of class × subject pairs and the batches are generated, ready for teacher assignment.

Inkwelly Academics vs generic Indian school ERPs

FeatureGeneric Indian ERPInkwelly Academics
Subject taxonomyOne label per subject; CCE-era schools force CBSE-only assumptionsSix subject types × seven assessment modes — fits CBSE, ICSE, IB, IGCSE, every State Board
Vocational educationOften a separate add-on with its own loginFirst-class — NSQF level, NSDC code, practical hours, industry partner, certification body
Subject electivesHard-coded 'Group A / Group B' pickerSTREAM, LANGUAGE_GROUP, ELECTIVE_GROUP, MANDATORY_GROUP with five selection modes and prerequisites
Timetable conflict detectionSpotted by the school in week two of the new sessionteacherDoubleBooked, roomDoubleBooked, classOverlap flagged before publish
Substitution trackingPhone log on a notepadTimetableOverride rows with SUBSTITUTE, CANCEL, EXTRA_CLASS, ROOM_CHANGE actions and 7-day / 30-day rate
Mid-session structural changeVendor data correction request, weeks of follow-upTwo-minute screen — add section, change teaching batch, swap room without restart
UDISE+ subject reportManual reconciliation of 4 spreadsheets in OctoberGenerated from real subject offering and timetable rows in one click

Timetable: templates, conflicts, substitutions

Inkwelly draws a clear line between a timetable template and a timetable instance. A TimetableTemplate is a reusable period structure tied to an NEP stage — for example, a 'Primary 2024 Template' with eight teaching periods per day, a mid-morning recess, lunch at slot 5, and a homeroom period at the end of Friday. The template carries PeriodSlot rows per dayOfWeek, each with slotNumber, slotType (TEACHING, BREAK, LUNCH, ASSEMBLY, ACTIVITY, HOMEROOM, ZERO_PERIOD, REMEDIAL), startTime, endTime, durationMins and an isSchedulable flag.

A Timetable is a session-scoped instance — usually one per class per session, optionally per academic term. Status moves from DRAFT to PUBLISHED to ARCHIVED over its life. Inside the timetable, individual TimetableEntry rows specify what happens in each slot — a BATCH-scoped entry schedules a teaching batch, a CLASS-scoped entry schedules class-wide events (assembly, activity), and a SCHOOL-scoped entry schedules school-wide events (Independence Day, sports day) across all classes at once.

Reusable templates per NEP stage

Most ERPs ask schools to rebuild the timetable per class every April. Inkwelly inverts this — templates live longer than sessions. A 'Foundational Stage Template' (with shorter periods and a longer activity slot) is reused for every 2025-26 Pre-Primary class, every 2026-27 class, and every 2027-28 class until the school decides to revise the day structure.

Per-day-of-week period structure is fully supported. Saturday running on a half-day with five periods instead of eight is a different dayOfWeek row inside the same template, not a separate template. A Madrasa school running additional Friday classes for moral instruction adds a Friday-only slot type. The day-structure decision is made once per stage, not per class per session. New sessions inherit; new classes adopt.

Inkwelly timetable template editor showing per-day slot structure with teaching, break, lunch and assembly slot types for FOUNDATIONAL stage
Inkwelly timetable conflict view showing teacher double booked between Class 7-A Hindi and Class 9-C Sanskrit with conflicting entry IDs flagged

Three kinds of conflicts, all flagged before publish

The timetable engine detects three classes of conflicts. teacherDoubleBooked — the same teacher scheduled for two simultaneous batches. roomDoubleBooked — the same physical room scheduled for two simultaneous classes. classOverlap — the same class scheduled into two distinct entries at the same period (often a copy-paste error).

Each conflict carries the conflictingEntryIds so the school sees exactly which two entries collide. The dashboard shows a single conflict count with breakdown — teacherDoubleBooked: 3, roomDoubleBooked: 1 — and the timetable view marks the offending cells in red. Conflicts must clear before a timetable status can move from DRAFT to PUBLISHED. No more discovering on day three of the new session that the Maths teacher has been booked for two Class 8 sections at 11:30 every Tuesday since August.

Substitution overrides — four actions, full audit

A teacher applies for two days' leave on Friday. In most ERPs, the school's response is to scribble a substitute schedule on the back of the timetable printout and forget it. In Inkwelly, the response is createOverride(action: SUBSTITUTE, substituteEmployeeId, overrideDate, reason).

The TimetableOverride model supports four actions: SUBSTITUTE (swap one teacher for another), CANCEL (mark the period off), EXTRA_CLASS (add an unscheduled period), ROOM_CHANGE (move to a different room). Each override carries a reason, optional remarks, and an audit trail of the user who created it. The dashboard shows overrideRate.last7DaysCount and last30DaysCount per school plus a breakdown by action.

Why this matters: when a parent calls in November asking why their child's Hindi class did not happen on October 15, the answer is a one-row record — substitute teacher's name, the reason, and the time the override was logged.

Inkwelly timetable override dialog showing SUBSTITUTE action with substitute employee, override date, reason and audit trail entry

Readiness, data quality, calendar, exams — the operational dashboard

The Academics dashboard is the screen the principal opens every morning. The five-axis readiness score sits in the top-right; the structure card in the centre; the teachers, subjects and timetable cards along the next row; curriculum, examinations, calendar, alerts, growth and activity below.

The data-quality alerts feed is the most underrated piece. It surfaces specific codes — CLASS_NO_TIMETABLE, CLASS_NO_TEACHER, CLASS_OVERCAPACITY, SUBJECT_NO_BOARD_CODE, MANDATORY_NOT_OFFERED, ELECTIVE_UNFILLED, TEACHER_CONFLICT, ROOM_DOUBLE_BOOKED, SUBJECT_UNDERSCHEDULED, EXAM_NO_ROOM, MARKS_NOT_ENTERED, ADMIT_CARD_BLOCKED, TERM_NOT_DEFINED, WORKING_DAYS_INSUFFICIENT — each with severity (HIGH, MEDIUM, LOW) and a one-click navigation to the fix screen. By the time the office assistant arrives at 9 am, the principal has already cleared the morning's alerts.

Inkwelly Academics full dashboard with hero KPIs, readiness score, structure, subjects, teachers, timetable, curriculum, examinations, calendar and data quality alerts on one screen
The morning screen — twelve cards covering every operational question a CBSE principal will face today

Inkwelly Academics vs imported global SIS tools

FeatureGlobal SIS (PowerSchool, Veracross, etc.)Inkwelly Academics
Indian board codesManual configuration per board, often incomplete24 boards pre-loaded — CBSE, ICSE, ISC, IB, IGCSE, every major State Board, NIOS-ready
NEP 2020 alignmentNot modelled; schools force-fit US K-12 grade structureFOUNDATIONAL · PREPARATORY · MIDDLE · SECONDARY mapping built in
Vocational subjects (NSQF)Not supported; vocational tracked outside the SISFirst-class — NSQF level, NSDC code, NIELIT certification, practical hours
UDISE+ submissionCustom export script per school, frequently breaksClass-wise subject report generated directly from subjectOffering rows
Hindi / regional language UIEnglish only or auto-translation that office staff distrustEnglish, Hindi, plus 6 regional languages — Bengali, Tamil, Telugu, Kannada, Marathi, Gujarati, Punjabi
Pricing per student per year₹400-₹1,500 — out of reach for Tier-2 / Tier-3 schoolsBuilt to the budget of a typical Indian private school — covers academics + 11 other modules
Migration supportInternational consulting model — weeks of feesFree migration from Excel, Educomp, Campus Care, MyClassCampus, Vidyalaya, Teachmint for the first 200 students

Migrating from Excel, Fedena, Entab or Campus Care

Most schools that switch to Inkwelly are not switching from nothing — they are switching from a combination of Excel, a previous ERP that did not survive the last pandemic, and a class teacher's intimate knowledge that has not been written down. The migration is structured around exactly this reality.

Excel and CSV imports are the default — paste your class list, your subject list, your teacher roster, and the system maps columns to Inkwelly fields with a preview. From other Indian ERPs (Educomp, Campus Care, MyClassCampus, Vidyalaya, Teachmint) we accept the standard export and run a column-mapping pass with the school's data team. Most schools see a 95% mapping rate and a manual cleanup pass for the remainder. End-to-end is typically two weeks for a 1,000-student school.

From Excel and printed registers

The most common starting point. The school has a class master in Excel, a subject list in another sheet, a teacher roster in a third, and a printed timetable taped to the staff-room wall. Inkwelly's onboarding team starts with the Excel files — they are easier to map than the printed register, but the register catches subjects and electives that the spreadsheet missed.

A typical migration order: 1) Sessions and grade levels, 2) Classes and sections, 3) Subjects with type and assessment mode, 4) Board code mapping (we ship pre-loaded codes for major boards — pass them through), 5) Subject offerings per class, 6) Teaching batches, 7) Teaching assignments, 8) Timetable templates, 9) Timetable instances. Two weeks for a 1,000-student school is the median.

Inkwelly bulk-add subject offerings screen showing CSV paste with column mapping preview for an Indian school migrating from Excel
Inkwelly migration mapping screen showing source columns from a previous ERP mapped to Inkwelly subject offering and teaching batch fields

From Educomp, Campus Care, MyClassCampus, Vidyalaya, Teachmint

These five cover roughly 70% of the schools that approach us with an existing ERP. We have done the migration mapping for each. From Campus Care, the typical export drops class, section, subject and teacher data in a clean CSV that maps almost cleanly. From Educomp, the export is split across modules but the subject-offering relationship survives. From MyClassCampus and Teachmint, the timetable export tends to be the friction point — those tools store schedules in a slot-by-slot format that needs translation to our TimetableEntry rows.

In every migration, the team reconstructs the subject group rules (electives, languages, streams) by looking at which students are enrolled in which subjects. This is the part that requires school input — but it is one structured conversation, not a six-month consulting engagement.

See your academic year set up live

20-minute walkthrough — sessions, subject offerings, teaching batches, timetable and the readiness dashboard with a real CBSE school dataset.

Real schools that use this every day

CBSE schools running 6 to 12 with 800 to 2500 students are the most common Inkwelly Academics installation. Then ICSE / ISC schools (smaller, slower-moving, but exacting on board codes), then State Board schools (largest by count, most price-sensitive), and a small but growing tail of IB and IGCSE schools that need the multi-board model. The screen, the workflows and the alerts feed look the same. The data underneath does the work.

Workflow phase 1: session promotion at year end

BG PICCOZONE
Step 1 — open the previous session and click Promote
BG PICCOZONE
Step 2 — review auto-suggested retention list with override per student
BG PICCOZONE
Step 3 — confirm; entire school moves to next session, previous sealed read-only

Workflow phase 2: a teacher applies for leave

BG PICCOZONE
Step 1 — leave applied; affected periods highlighted on the timetable
BG PICCOZONE
Step 2 — pick a substitute from the free-period view; reason captured
BG PICCOZONE
Step 3 — override logged; substitute notified via WhatsApp; audit trail updated
Inkwelly Academics module overview hero image showing dashboard with readiness 92, structure card, subject coverage and timetable conflict resolution
Academics module — what a healthy CBSE school looks like at 8:15 am

What's included with the Academics module

  • Academic sessions with April-March, January-December and custom calendars; multi-school trust support
  • Class structure with NEP stages (Foundational, Preparatory, Middle, Secondary), grade levels 1-12, sections, capacity, medium of instruction
  • Subject library with 6 types, 7 assessment modes, language flags, vocational fields (NSQF, NSDC, NIELIT, practical hours)
  • Board code mapping for 24 boards including CBSE, ICSE, ISC, IB, IGCSE and every major State Board
  • Subject groups (Stream, Language, Elective, Mandatory) with 5 selection modes and prerequisite chaining
  • Teaching batches with bulk-create, primary teacher assignment, capacity tracking and per-week period count
  • Timetable templates per NEP stage with 8 slot types (Teaching, Break, Lunch, Assembly, Activity, Homeroom, Zero Period, Remedial)
  • Conflict detection — teacher double-booked, room double-booked, class overlap — flagged before publish
  • Substitution overrides with 4 actions and 7-day / 30-day rate tracking
  • Five-axis readiness score with verdict (Ready to Go, Almost There, Needs Attention)
  • Data-quality alerts feed with 14+ codes, severity grading and one-click navigation to fix screens
  • Bloom's taxonomy distribution per subject and average learning outcomes per subject
  • Academic terms, holidays, working-day projection and 30-day upcoming events feed
  • Examinations with 8 statuses, marks-entry progress, admit-card generation rate and grading scales
  • Hindi and regional language UI for ops staff who prefer it; multi-language storage of class, section and subject names

Run your school year on Inkwelly Academics

Most CBSE schools are live in two weeks. Migration from Excel, Educomp, Campus Care, MyClassCampus, Vidyalaya or Teachmint is free for the first 200 students.

Frequently asked

10 questions
How does year-end promotion work?

Open the previous session, click Promote. Pick the source and destination sessions, review the auto-suggested retention list (students who failed or are below attendance threshold), apply per-student overrides, confirm. Every active student moves to the next class with their fee profile, transport route, library category and parent links carried forward. Marks, attendance and certificates from the closed session are sealed read-only — they remain accessible forever but cannot be edited.

Can we run two boards (CBSE + IGCSE or CBSE + State Board) in the same school?

Yes. Each class can be tagged to its board, with its own subject offering, its own timetable, and its own exam pattern. The student list, fee ledger and staff directory remain shared, so a sibling group split between CBSE Class 8 and IGCSE Class 9 still appears as one family for parent communication and fee discounts.

Does timetable auto-generation respect teacher availability?

Yes. The generator considers each teacher's weekly load cap, off-day, language qualifications, and any blocked slots (department meetings, prayer assembly). Conflicts are flagged before the timetable is published, with a visual indicator showing exactly which teacher is double-booked. Manual edits remain available — auto-generation is a starting point, not a lock.

Can we change subject offerings or add a section mid-session?

Yes. Add a Class 9-D section in August because admissions overflowed Section C — students, timetable, attendance and parent app update without restart. Add a new optional language for Class 6 — it becomes available for marks entry from the next exam cycle. The system never forces you to wait for a new session to fix structural mistakes.

Does it support session calendars other than April-March?

Yes. Sessions accept any start and end date. IGCSE and Christian-administered schools commonly run Jan-Dec, some pre-primary wings run Jun-Apr — all supported. A multi-school trust can have one school on April-March and another on Jan-Dec without conflict.

Are CBSE, ICSE and State Board subject codes pre-loaded?

Yes. CBSE official subject codes (041 Mathematics, 086 Science, 087 Social Science, 184 English Communicative, etc.), ICSE/ISC codes, and the major State Board codes ship with the system. They flow straight into marksheets, transcripts and APAAR-linked transcripts — no manual lookup or template patching.

Can we generate a UDISE+ class-wise subject offering report?

Yes. UDISE+ requires a class-wise list of subjects taught, hours per week, language of instruction and number of teachers per subject. Inkwelly produces this directly from your subject offering and timetable data — exportable as a UDISE-compatible Excel one click before the October submission window.

How does substitute teacher coverage work?

When a teacher applies for leave, the timetable view shows every period that becomes vacant, alongside a live free-period view of the rest of the staff. Pick a substitute and the system updates the class roster, sends a WhatsApp note to the substitute, and logs the swap in the audit trail. No phone calls, no last-minute scrambles.

What about teaching batches — splitting a class for languages or sports?

Each class can be split into multiple teaching batches for any subject. A typical Class 9 with three language options (Hindi, Sanskrit, French) runs three parallel teaching batches at the same period — all reflected in the timetable, attendance roster and marks entry. Sports periods and activity slots are modelled the same way.

Can we run the interface in Hindi or our regional language?

Yes. The Inkwelly interface is available in English and Hindi, with regional language packs (Bengali, Tamil, Telugu, Kannada, Marathi, Gujarati, Punjabi) for staff who prefer it. Subject names, class names and section names can be stored in English plus your regional script for use on certificates and marksheets.

You might also like

4 reads

See Inkwelly on your school

30-minute demo. We open your current ERP with you and load your data into Inkwelly on the call. Dated go-live plan by the end of it.