हिंदी संस्करण उपलब्ध नहीं — अंग्रेज़ी में देखेंHindi version not available yet — viewing the English page.
FEATURE · Examinations

Marks in. Results out. No Excel formula. Totals, percentages, ranks, grades — class-wise, in one click.

After every subject in the exam reaches LOCKED, click Calculate Results once. Inkwelly aggregates the marks across components, applies grace and best-of-N, computes percentages, picks grade bands from the configured scale, ranks students within the class and exports the whole sheet to Excel for the principal's morning meeting.

BG PICCOZONE

How most Indian schools compute exam results today

It is the Saturday after the Class 10 pre-board has wrapped up in a CBSE school in Pune. The exam coordinator has 412 children across 11 sections and 12 subjects, with marks lying in 132 separate Excel sheets dropped into a shared drive. The Sunday plan is straightforward on paper — import the sheets into a master spreadsheet, sum the marks per child, compute percentages, derive grades, sort the rank, and produce a class-wise topper list for Monday morning's staff meeting. The reality is two interns, one accountant, eleven hours and three percentage typos that a parent will spot before the principal does.

The cost is not just the Sunday. The aggregation logic encoded in the master spreadsheet is brittle — a teacher who marks an absent child as zero instead of leaving the cell blank skews the percentage. A child whose Sanskrit was a best-of-3 best-of-2 component is incorrectly summed three times. Grace marks are tracked only in the principal's notebook and never make it to the printed marksheet. Two children's percentages tie at exactly 89.4 and the rank-2 vs rank-3 decision is made by the accountant's discretion, not a tie-break rule. The Class 11 commerce stream's aggregate excludes 'optional' subjects in some sheets and includes them in others. The trustees ask for the school topper list by 6 PM Sunday, and the coordinator delivers a list that contains one mistake she will discover only when an alumni magazine reprints it three years later.

This is the cost of computing exam results in Excel. Inkwelly's Examinations module collapses the entire process to a single button click, with the rules — grace, best-of-N, scaling, optional, tie-break — baked in from the subject configuration so the coordinator never re-derives them and never fights an Excel formula again.

Inkwelly exam results dashboard showing class summary card with total students 412 pass count 388 fail count 24 average percentage 76.4 and rankings table
Exam results dashboard — summary card, rankings table, per-student breakdown, ready in seconds after the last subject is LOCKED

How exam results computation works in Inkwelly

When the coordinator opens the Exam → Results screen for an exam where every subject has reached the LOCKED status, she sees a Calculate Results button at the top. The button is disabled until every subject for every class is LOCKED and every component is verified. The state — 'eligible to calculate' or 'X subjects pending' — is shown explicitly so the coordinator knows what is blocking her, and a one-click 'Take me to the pending subjects' link routes her to the Subjects screen with the right filter applied.

After the click, Inkwelly's results engine runs server-side. For every student linked to the exam through the Class assignment feature, the engine pulls every component-level mark, applies the per-subject scalingFactor, picks the best-of-N where configured, adds gracePoints where the principal has authorised them, sums the totals subject-wise, computes the overall total, derives the percentage, picks the grade band from the exam's gradingScaleId (with per-subject overrides honoured), checks the overallPassMarks per subject for fail flags, and writes the resulting studentResult row to the database. The whole compute completes in seconds for a 412-child exam; minutes for a 4,000-child senior secondary chain.

Once computed, the results page renders a summary card at the top — total students, pass count, fail count, average marks, average percentage, top scorer name and percentage. Below the card, two views — the rankings table (rank, name, roll number, total marks, percentage, grade, pass status) and the results table (student-by-student subject-wise breakdown). Both are filterable by class, sortable by every column, exportable to Excel with a class-and-board-aware column layout. Both tables are read-only at this stage — the marks have been LOCKED upstream, so the rankings cannot be edited at the results screen. Re-computation, if needed, requires unlocking a subject upstream and re-running the engine; the audit log captures both compute runs.

What the results engine actually does

  • Reads from LOCKED marks across every component of every subject — nothing computed from in-flight or DRAFT data
  • Applies per-subject scalingFactor for theory/practical aggregation per CBSE/ICSE/State Board rules
  • Picks best-of-N components automatically when isBestOfEligible is set; the marksheet header reads '(Best 2 of 3)'
  • Adds principal-authorised gracePoints from the marks audit log into the total, with footnote on the marksheet
  • Excludes isOptional subjects from the aggregate; includes them on the marksheet for record but not for promotion
  • Applies the gradingScaleId from the exam, honouring per-subject overrides for language and elective bridging
  • Computes overall percentage (total marks obtained / total max marks) with two decimal places, never rounded silently
  • Ranks students within each class with explicit tie-break rules — percentage, then total marks, then English marks, then alphabetical
  • Writes a studentResult row per student per exam to the historical results table for the long-term student profile
  • Renders the rankings table, results table and summary card on the same screen — the principal scrolls, no extra clicks
  • Exports to Excel with class-aware column layouts — Class 10 CBSE export is different from Class 12 ISC export
  • Recomputes safely on demand — every recompute writes to the audit log with prior values and reason

See the results computation flow

BG PICCOZONE
Eligible-to-calculate state — every subject LOCKED, the Calculate button activated
BG PICCOZONE
Summary card — 412 students, 388 pass, 24 fail, average 76.4%, top scorer at 96.8%
BG PICCOZONE
Rankings table — rank, name, roll, total, percentage, grade, pass status — sortable per column
BG PICCOZONE
Excel export — class-aware column layouts, no manual reformatting

The aggregation rules — every formula written down once

The single biggest reason exam results go wrong in Excel is that the formulas live in the head of the accountant who runs them. Two years later, when she has left the school and a new accountant runs the same exam, the formulas drift — a different rounding decision here, a different best-of-N choice there, an inconsistent treatment of optional subjects. The school's two-year topper list is no longer comparable.

Inkwelly fixes this by writing every aggregation rule into the subject and exam configuration, not into a formula. The grace mark is a field on the marks-audit-log row, not a hidden cell in a spreadsheet. Best-of-N is a flag on the subject component, not a SUMIF formula. Scaling is a numeric scalingFactor on the subject row, not a hand-applied multiplier. Tie-break order is a configurable list at the school level, applied uniformly across every exam. Two years later, when the new accountant computes the Class 10 result, she gets the same number the old accountant would have.

Inkwelly aggregation rules editor showing scaling factor best-of-N grace marks tie-break order and optional subject treatment per board affiliation
Aggregation rules — written into config, never re-derived, never drifted

Class-wise rankings with explicit tie-breaks

A real Class 10 in 2026 typically has 1-3 ties at every rank position when computed only on percentage. The school's tie-break order is the rule that resolves these. Most schools follow CBSE-style tie-break — percentage first, then total marks, then English marks, then alphabetical by first name. Inkwelly stores this order at the school level and applies it uniformly across every exam in every session.

The rankings table renders with the rank, the name, the roll number, the total marks, the percentage, the grade and the pass status. Tied ranks are displayed as the same rank with the next position skipped — if rank 2 is shared by two students, the next student is rank 4, not rank 3. The class teacher reading the ranks knows immediately whether the principal has used the tie-break rule, and the audit log captures the tie-break decision in plain text. The school's annual report can quote the tie-break order verbatim. Parents who challenge a rank in a meeting can be shown the exact rule applied.

Inkwelly class-wise rankings table showing rank name roll number total marks percentage grade and pass status with tie-break order documented
Class-wise rankings — explicit tie-break order, audit-logged, parent-defensible
Inkwelly per-student results breakdown showing subject-wise marks Theory Practical Internal totals percentage and grade with grace marks footnote
Per-student breakdown — every component, every grace mark, every footnote

Per-student breakdown — subject by subject, component by component

Click a student's name in the rankings table and Inkwelly opens a per-student page that shows every component of every subject, with the marks obtained, the max marks, the grace marks (if any), the resulting subject total, the grade band, and the pass status per subject. The same page shows the overall total, the overall percentage, the overall grade, the rank within the class and the rank within the grade.

Footnotes are stored as part of the result — 'Class 10 Sanskrit — grace 1 mark on principal's discretion' renders next to the Sanskrit row. 'Class 10 Maths — best 2 of 3 unit tests selected' renders for best-of-N components. 'Class 11 Photography — elective, not counted in aggregate' renders for optional subjects. The page is the source of truth for the marksheet template; the same data renders in the parent app, the WhatsApp PDF and the printed report card. There is no separate workflow to maintain footnotes; they come from the same marks-audit-log entries that drove the aggregation.

Excel export — class-aware, board-aware, ready for the staff meeting

The single Excel format we have ever seen on a principal's desk that worked for both Class 10 and Class 12 is a fiction; the schools that use one are quietly editing it manually for one of the two grades. Inkwelly recognises this and exports class-aware Excel files — a Class 10 CBSE export carries CBSE-prescribed columns (Roll, Name, English, Hindi, Maths, Science, SST + IT/AI elective, Total, Percentage, Grade, Result), a Class 12 ICSE export carries ICSE-prescribed columns (with stream subjects), a Class 6 export uses a simpler primary-school layout.

The export is generated server-side, downloads as a single .xlsx file, and is generated in under 10 seconds for a typical 400-child exam. The principal can email it to the trustees, print it for the staff briefing, or upload it to the school's affiliation portal directly. The export carries the school's letterhead, the exam name, the date of result, the principal's signature placeholder and a verification QR code that links back to the Inkwelly result page.

Inkwelly results Excel export with class-aware column layout showing Roll Name English Hindi Maths Science Social Science Total Percentage Grade Result for a Class 10 CBSE exam
Excel export — class-aware columns, school letterhead, verification QR
Pichli baar Sunday raat 11 baje result calculate kar rahe the. Is baar Inkwelly mein 'Calculate Results' button click kiya, 30 second mein saari class ki ranking ready ho gayi. Topper list trustees ko 4 baje hi bhej diya.
Sunita Joshi · Exam Coordinator · Modern High School, Pune

Real-world scenarios for the results engine

  1. Two students tied at exactly 89.4%. The school's tie-break order is percentage → total → English → alphabetical. Both students have the same total and the same English marks. Inkwelly applies alphabetical order and ranks them differently — the rank-2 candidate is the alphabetically first student. The audit log captures 'tie-break rule applied: alphabetical, after percentage, total and English'. The principal can show this rule to the parent who challenges.

  2. A grace mark added after results computation. The principal authorises a 1-mark grace for a Class 10 child after the Sunday compute. The coordinator opens the marks audit log, adds the grace with reason 'principal discretion — health emergency', and re-runs Calculate Results. The new compute updates the percentage, the grade band and the rank. The audit log shows both runs.

  3. A subject unlocked after publish for re-evaluation. A Class 12 ISC child requests a re-evaluation of Physics. The principal unlocks the subject after publish, the marks are reviewed, the new mark is entered. The Calculate Results re-runs; the new aggregate, percentage and rank are computed. The parent app shows both copies; the marksheet re-prints.

  4. An optional subject excluded from the aggregate. A Class 11 commerce child has a Photography elective marked isOptional=true. The aggregate excludes the elective; the marksheet shows the elective marks separately with a footnote. The percentage is computed only over the non-optional subjects.

  5. A Class 10 ICSE three-section English aggregation. The Class 10 ICSE English has Section A (40), Section B (40), Internal (20). The engine sums all three sections (subject to per-section pass), computes the subject total out of 100, and rolls into the overall aggregate. The marksheet renders the three-section breakdown.

Common operations on this screen

  • Click Calculate Results when every subject has reached LOCKED — the only manual step in the entire workflow
  • View summary card at top — total students, pass count, fail count, average marks, average percentage, top scorer
  • Filter rankings by class, sort by any column, click any student for the per-student breakdown
  • View per-student breakdown — subject-wise marks, components, grace marks, footnotes, grade, pass status
  • Export to Excel with class-aware and board-aware column layouts; one .xlsx per class or one combined file
  • Re-run Calculate Results after upstream marks change — every recompute writes to the audit log with reason
  • Drill into the marks audit log to see who entered, who verified, who approved every cell at every moment
  • View grade distribution chart — percentage of children in A1, A2, B1, B2, C1, C2, D1, D2, E1, E2 bands per class
  • Print rankings as a class-wise topper sheet for the staff briefing or the trustees' meeting
  • Compare results across exams in the session — Class 10 half-yearly vs pre-board for the same student

See exam results computation running on your school's data

Bring last term's marks Excel; we will load it into a sample exam and run Calculate Results in front of you. The output is what your principal would receive in real production.

Subjects in the examAdmit cards

Limits, safety and the small print

The results engine reads exclusively from LOCKED marks. A subject in any other state — NOT_STARTED, DRAFT, SUBMITTED, VERIFIED, APPROVED, PUBLISHED — cannot contribute to results. The engine does not approximate, does not skip, does not silently ignore. If even one subject is not LOCKED, the Calculate Results button is disabled and the screen tells the coordinator which subjects are blocking, with one-click navigation to fix them.

Results computation is server-side and stateless. The same input (locked marks + subject config + grading scale) always produces the same output. There is no caching that could go stale, no client-side computation that could drift between two browsers. The audit log captures every compute run with the input snapshot hash, the output, the user and the timestamp. Two compute runs with the same inputs produce the same hash; two runs with different inputs produce different hashes; the trustees comparing results can verify the chain of custody.

For schools with re-evaluation policies (the right of a parent to request a re-check of marks within 30 days of publish), Inkwelly's re-evaluation workflow creates a new compute run linked to the original via re_evaluation_of. The original result is preserved; the re-evaluation result is computed afresh; the parent app shows both side-by-side with the date of each. Supplementary exams for failing children are modelled the same way — a supplementary_for link — and the student's profile shows both attempts.

किस मॉड्यूल का हिस्सा

1 module

अक्सर पूछे गए सवाल

7 सवाल
Can I re-run Calculate Results after a marks correction?

Yes. Re-running is the supported workflow when a subject is unlocked, re-marked and re-locked. The engine recomputes from scratch using the current LOCKED state. The audit log captures both runs with their input hashes, output values and the reason. The marksheet template re-renders; the parent app shows the corrected version in the audit timeline.

How does the engine handle absent students?

An absent flag on a marks-entry row writes `ABSENT` instead of a numeric mark. The aggregation excludes absent subjects from the total max marks and the total marks obtained, then computes the percentage only over subjects sat. Whether absent counts as fail for promotion is a per-school policy configured on the exam; Inkwelly applies the chosen policy uniformly.

What tie-break order does Inkwelly use?

The default tie-break order is percentage → total marks → English marks → alphabetical by first name. Each step is a separate comparator and the system applies the next one only when the previous step ties. The school can override the order at the school configuration level. Every tie-break decision is captured in the audit log with the rule applied.

Can the school weight different exams differently for the final aggregate?

Yes. The Examination row has a `weightagePercentage` field. CBSE schools commonly weight Periodic Test 1 at 5%, Periodic Test 2 at 5%, Half-Yearly at 30% and Annual at 60%. The engine respects this when computing session aggregates. The weightage is locked at exam creation; changes mid-session are logged.

Does the export include the school letterhead and signatures?

Yes. The Excel export and the printed PDF carry the school letterhead, the principal signature placeholder, the date of result, the exam name and a verification QR code that resolves to the Inkwelly result page. The marksheet design is configured separately via the [Marksheet Templates](/features/marksheet-templates) feature when available; the results export uses the school's default template until then.

What grade scales are supported?

All commonly used Indian board scales — CBSE A1-E2 (8 bands plus E1/E2 for fail), ICSE percentage with descriptors, IGCSE 9-1, IB MYP 1-7, Maharashtra State Board Distinction/A/B/C, Karnataka PUC. Schools can define custom scales for boards we have not modelled. Each scale stores the band thresholds, the band labels and the descriptor text.

Can I see the result before publishing?

Yes. The Calculate Results step is a preview — nothing is published to parents until the principal clicks Publish on the [Results Publish](/modules/examinations) workflow. The coordinator and class teacher can view the rankings, the per-student breakdown and the Excel export immediately. The PUBLISHED status, with WhatsApp and parent app delivery, is a separate, audited transition.

आपको ये भी पसंद आ सकता है

2 लेख

Inkwelly आपके स्कूल पर — खुद देखें

30 मिनट का डेमो। आपके मौजूदा ERP को आपके साथ खोलकर, कॉल पर ही आपका डेटा Inkwelly में लोड करते हैं। कॉल ख़त्म होते-होते एक तय तारीख़ का गो-लाइव प्लान आपके हाथ में।

Exam Results & Rankings — Totals, Percentages, Ranks · Inkwelly