EMRS Bhopal Grade 12: every test answer, student by student
Avanti Fellows, built 2 November 2026. Shared for research only. Please do not redistribute.
Avanti runs a Centre of Excellence at the Eklavya Model Residential School (EMRS) in Bhopal, a government residential school for tribal students. This folder holds every answer that its current Grade 12 class gave on Avanti’s tests, from the start of Grade 11 in August 2025 to 29 October 2026. Each student is under a random study ID. It also holds each student’s score on every test, and the full text, options, answer key, worked solution and figures of every question that came from Avanti’s current question bank.
If you are using Claude or another AI assistant, give it this whole folder and start it on this README. Everything it needs to read the files is written here.
What is in it
Section titled “What is in it”| Students | 70 in Grade 12: 53 preparing for JEE (engineering), 17 for NEET (medical) |
| Tests | 61, from 23 August 2025 to 29 October 2026: chapter tests, part tests, major (mock) tests and full-syllabus tests |
| Answers | 115,795 question-student rows, of which 50,304 were answered and the rest skipped |
| Questions | 3,970 in all. 1,945 come with full text (new question bank); 2,025 have answers but no text (old question bank, see below) |
| Subjects | Physics, Chemistry and Maths for everyone; Biology for the NEET students |
| Figures | 845 image files, in 492 questions |
Old and new question banks. Avanti moved to a new question bank during 2026. Most Grade 11 tests (August 2025 to April 2026) and a few early Grade 12 tests used the old one. We hold the answers to those questions but not their text, so they appear in responses.csv and items.csv with question_bank = old and has_question_text = 0. They still count towards each student’s test scores and can be used to measure ability over time. Every question in the new bank comes with its full content.
| File | One row per | What it is |
|---|---|---|
questions_physics.md, questions_chemistry.md, questions_maths.md, questions_biology.md |
question | The new-bank questions in readable form, grouped by chapter: text, options with letters, key, the answer split, the solution and figures |
questions.jsonl |
question | The same content as JSON lines: item_id, subject, chapter, topic, question_type, text, options, key, key_matches_cms_today, solution, images |
items.csv |
question | Statistics per question, for all 3,970 (below) |
responses.csv |
student × test × question | Every answer (below) |
test_scores.csv |
student × test × section | Each student’s marks and percentage on every test, overall and by subject |
images/ |
figure | Files named q<item_id>_<n>, referenced from the question files |
Text is plain markdown with mathematics in LaTeX between \( and \). A figure appears where it sits in the question as . Some options are figures themselves.
responses.csv
Section titled “responses.csv”| Column | Meaning |
|---|---|
study_id |
A random ID for the student, made for this dataset (B and six digits). It carries no information, and the same student keeps the same ID throughout. Avanti holds the only key back to the student |
stream |
Engineering (JEE) or Medical (NEET) |
test_id, test_name, test_date |
The test. The name carries Avanti’s own code, e.g. AIAT-04 for the fourth major test |
test_type, test_format |
chapter_test, part_test, major_test (a full-length JEE or NEET mock) or full_syllabus_test |
test_grade |
The grade whose syllabus the test covers. Grade 11 tests sat in Grade 12 are revision |
subject, chapter, topic |
Where the question sits in the syllabus. topic is often blank for old-bank questions |
item_id |
The question. New-bank IDs are numbers and join to questions.jsonl; old-bank IDs start with old- |
question_bank, has_question_text |
new or old, and whether the text is in this folder |
question_type |
single-choice, multi-choice, numerical-integer or numerical-float |
position_in_test |
Where the question appeared in the paper |
response |
What the student answered: a letter (or letters) for MCQs, the number entered for numericals. Blank if skipped |
key |
The answer they were marked against |
answered |
1 answered, 0 skipped |
correct |
1 right, 0 wrong, blank if skipped |
marks, marks_if_right, marks_if_wrong |
Marks earned, and the scheme: +4 for right and −1 for wrong throughout, as in JEE Main and NEET |
time_spent_s |
Seconds the student spent on the question, from the test engine |
student_test_percentage |
The student’s overall percentage on that test |
items.csv
Section titled “items.csv”| Column | Meaning |
|---|---|
item_id, question_bank, has_question_text |
As above |
subject, chapter, topic, question_type |
As above |
key |
The answer students were marked against |
cms_answer, key_matches_cms_today |
The answer in the new bank today, and whether it agrees. For a numerical answer stored as a range (e.g. 0.45,0.55), whether the key falls inside it |
n_shown, n_answered, skip_rate |
How often the question was reached, answered and skipped |
p_correct |
Share of answers that were right, among those answered |
discrimination_r |
Correlation between getting this question right and the student’s percentage on the whole test. Blank when fewer than 30 answered |
median_time_s |
Median seconds spent, among those who answered |
n_students, n_tests |
Distinct students and tests |
choice_counts |
How the answers split, most common first |
has_figure |
1 if the question, an option or the solution has a figure |
test_scores.csv
Section titled “test_scores.csv”study_id, stream, test_id, test_name, test_date, section (overall, or a subject), marks_scored, max_marks, percentage.
Things to know before analysing
Section titled “Things to know before analysing”- This is one class, so per-question numbers are small. No question reached more than 53 of these students, and the typical one reached 17. Use
items.csvto see what this class found hard, not to fix a question’s difficulty. For difficulty across many students, see the companion dataset Motion in Two Dimension, built from 1,914 students. - Skipping is a choice. With −1 for a wrong answer, skipping a question you are unsure of is often the right move. So
p_correctis accuracy among those confident enough to answer, andskip_ratematters in its own right. For an item response model, treat a skip as missing, not as wrong. - Options never shuffle within a question, so the answer split shows how many students held each wrong idea. Question order within a test may be shuffled.
- Two questions had their options edited after the test. For items 3446 and 14873 the key students were marked against differs from the bank today, and almost all who answered chose the old key. The option text shown for them today may not be what students saw.
- Multiple-answer questions are marked right only when the student picks exactly the right set.
- Scores are comparable within a test, not across tests. Tests differ in length and difficulty.
- The tests were sat on site and supervised. EMRS Bhopal is residential, and Avanti’s tests there are proctored.
Starting points
Section titled “Starting points”- Where did each student lose marks? Group
responses.csvbystudy_idandchapter, separating wrong answers (which cost marks) from skips. - Which wrong answers did the class share? In
items.csv, a new-bank question where many students chose the same wrong option points to a shared misconception. Read the question in its subject file and name the wrong idea. - How did each student change over the year?
test_scores.csvtraces each student from Grade 11 to now. Compare like tests: major tests with major tests. - Could an AI tutor have named the misconception? For a shared wrong answer, ask a model what the student was thinking. Then check its answer against how the same students did on related questions.
A first prompt for Claude:
Read README.md, then items.csv and questions_physics.md. Find the ten new-bank Physics questions where the most common answer was a wrong one. For each, state in one sentence the misconception behind that answer, and point to another question in the dataset that tests the same idea.
Privacy and use
Section titled “Privacy and use”- No personal data. No names, contact details, dates of birth, gender, category or Avanti student IDs. The study IDs are random.
- This is a small, identifiable group: one class in one named school. Please do not try to re-identify any student, do not combine this data with other data to do so, and do not report results for groups smaller than five students.
- Shared for this research collaboration only. Please do not publish the student-level rows. Aggregates and question-level findings are fine to publish, with a mention of Avanti Fellows.
- Questions: contact Avanti Fellows (Akshay Saxena).
How it was built
Section titled “How it was built”build.py beside this README, in Avanti’s data-assistant repository at analysis/ai-coach/datasets/emrs_bhopal/. It shares its question-bank reader with ../motion_2d/build.py.
- Answers: Avanti’s warehouse table
fact_student_test_results_question_level, academic year 2026-27, programme EMRS CoE, school EMRS Bhopal, student grade 12. That year’s rows carry each student’s full test history, which is why tests from Grade 11 appear. - Test scores:
fact_student_test_results_overall, every section, for the same tests. - Question text, options, solutions and figures: Avanti’s new question bank, English versions, read on 2 November 2026. Figures are stored there as embedded images and were written out as files.
- Study IDs: random. The key from study ID to student is kept privately at Avanti and is not part of this folder.