You're still using the default password. Choose a new password to secure your account before continuing.
Update the password for SAP ID .
We couldn't find any performance records for your SAP ID in the current data file. Contact your coordinator if this seems wrong.
A plain-language guide to every calculation and chart
The dashboard reads a merged Excel file that your Python pipeline produces (the Merged_All_Forms.xlsx). It contains one row per student per subject, with pre-calculated Bloom's level scores.
Type any SAP ID in the search box. As you type, matching IDs appear as suggestions. Pick one or press Enter.
Select a specific subject to see that subject's Bloom breakdown. Or keep it on "All Subjects" to see an overview of the student's performance across every subject they appeared in, with clickable subject cards.
Full Class — compares with every student in the dataset for that subject.
Same Division — compares only with students in the same division (A/B/C/D/E).
The dashboard shows stat cards (scores and gap vs class), a grouped bar chart, a radar chart, and a detailed table — all for Bloom's levels and overall performance.
Priority_* column is empty/null). The dashboard shows these levels as "N/A" and excludes them entirely from all averages — both the student's score and the class average for that level. This ensures optional questions do not unfairly lower or inflate anyone's scores.
Read directly from the Priority_Understand column (and similarly for other levels). Your Python pipeline stores this as a value between 0 and 1. The dashboard multiplies by 100 to show it as a percentage.
100% is not a bug. Some exam questions are structured so that students get either full marks or zero — for example, Corporate Finance I's Remember question. In that subject, 86% of students score exactly 1.0 on Remember, making both the student value and class average close to 100%. If the class average also shows 100%, it means almost everyone in the comparison pool scored perfectly on that level — the question was likely straightforward or binary-scored. The table now shows n= (number of students) next to each class average so you can judge how many students it is based on.
Read from the PerTotalScore column, which is the student's total obtained marks divided by total marks (calculated by your pipeline). Multiplied by 100 to show as percentage.
For each Bloom level, the dashboard collects all non-null, non-N/A values from students in the comparison pool (full class or same division, for that subject), then calculates the simple mean. The n= number shown next to each class average tells you how many students contributed to that average. If n is very small (shown with a ⚠ warning for n<10), treat the average with caution.
Simple difference between the student's score and the class average for that level. Green = more than 5% above average. Red = more than 5% below average. Yellow = within ±5% of average.
Shows all 6 Bloom levels side by side — the amber bar is the student, the blue bar is the class average. Levels the student did not attempt appear greyed out and labelled "(N/A)". Hover over any bar to see the exact value and how many students (n=) contributed to the class average. This is the best chart to spot which levels a student struggles with compared to their peers.
Shows the same 6 levels arranged in a hexagon. A larger shape means stronger performance across the board. When the amber shape (student) extends beyond the blue shape (class average) on any corner, the student is above average at that level. Gaps and imbalances in the shape reveal where the student is weak relative to the class.
A row for each Bloom level showing: exact student %, class average % with n= sample size, gap (colour coded), and a progress bar. A ⚠ symbol next to the class avg means fewer than 10 students contributed to it — treat it with caution. Levels marked N/A are shown as "excluded" — they do not affect any calculation. A footnote at the bottom of the table explains all symbols.
One card per subject the student appeared in. The top amber bar shows the student's overall score; the blue bar below shows the class average for that subject. The number in the top-right shows the gap. Cards are sorted by the biggest positive gap first (best relative performance at the top). Clicking a card drills into that subject's Bloom breakdown.
| Column Name | Required? | What It Contains |
|---|---|---|
SAP ID | Required | Student identifier. Also accepts: SAPID, SAP No, PRN, PRNNumber, Student No |
div | Required | Division (A/B/C/D/E). Used for division-based comparison. |
Program | Required | Academic program (e.g. BFM, BMS, BAF, B.COM). Used for program-based comparison. |
SubjectName | Required | Name of the subject. Also accepts: Subject, Subject Name |
PerTotalScore | Required | Overall marks percentage as a decimal (0 to 1). e.g. 0.55 = 55% |
Pct_Remember | Required | Bloom's Remember level score as a percentage (0–100). Null = not asked / not attempted. |
Pct_Understand | Required | Bloom's Understand level score (0–100). |
Pct_Apply | Required | Bloom's Apply level score (0–100). |
Pct_Analyze | Required | Bloom's Analyze level score (0–100). |
Pct_Evaluate | Required | Bloom's Evaluate level score (0–100). |
Pct_Create | Required | Bloom's Create level score (0–100). |
Comment_Remember | Optional | Text comment for the Remember level. Used to detect if level was not asked/not attempted. |
Comment_Understand | Optional | Text comment for the Understand level. |
Comment_Apply | Optional | Text comment for the Apply level. |
Comment_Analyze | Optional | Text comment for the Analyze level. |
Comment_Evaluate | Optional | Text comment for the Evaluate level. |
Comment_Create | Optional | Text comment for the Create level. |
TotalOutOf_* | Optional | Total marks available for each Bloom level (e.g. TotalOutOf_Understand). Used in Marks Detail chart. |
TotalScored_* | Optional | Marks actually scored for each Bloom level. Used in Marks Detail chart. |
Att | Optional | Attendance percentage (0–100). Shown in subject detail view. |
TotalPriority | Optional | Overall weighted score (0–100). Pipeline reference column. |
FinalComment | Optional | Overall assessment text (e.g. "Good performance", "Moderate performance", "High attention required"). |
All Bloom's scores and overall percentages are read directly from your Excel file as produced by the Python pipeline. If the pipeline has any errors, those errors will be reflected here. Always cross-check results against source mark sheets when making critical decisions.
The class average is calculated from all rows in the Excel file for that subject. If some students were excluded from the export, the average will not reflect the true class. Similarly, division averages only work correctly if the div column is correctly populated.
A Bloom level is treated as N/A in two situations:
(1) Null/empty value — the student did not attempt an optional question. The Priority_* cell is blank.
(2) Zero value + "not specified" comment — the subject had no questions at that Bloom level at all (e.g. Corporate Accounting I has no Remember questions). The pipeline writes 0 with a comment like "Remember not specified." The dashboard detects this phrase and treats the level as N/A, not as a 0% score.
A genuine score of 0% (student attempted but got zero marks) would have a comment like "You need high focus on…" and is kept as 0%.
All percentages are rounded to the nearest whole number for display. The underlying calculation uses full decimal precision, so rounding only affects what you see on screen.
Everything happens in your browser's memory. When you close or refresh the page, all data is gone. No data is sent to any server. Re-upload the file to use the dashboard again.