EGRA in Five Minutes
Rumi · student assessment · plan, written for a first-time reader · bead bd-gqoz1

EGRA in Five Minutes

We want a coach to test a child's reading and maths in five minutes with a phone, have the computer do the marking, and have the coach check the marks before anything is saved. This page explains what that means, what we already know, what we tested, and what we plan to build.

15 Sep 2026 · version 3, plain-language editionBased on 187 real recordings, 2,233 children's scores, one alignment call, and about $49 of computer time

The idea in one minute

Today, to find out how well a child reads and counts, a trained person called an enumerator sits with the child for about 20 minutes, shows them letters, words, a story and some sums, and ticks right or wrong on a tablet. That is slow, needs a specialist, and only happens once or twice a year.

We want our coaches (the people who already visit schools to watch lessons) to do a shorter version with five children per visit. The coach records the child on the phone, the computer listens to the recording and fills in the marks, and the coach looks at the marks and corrects any that are wrong before they are saved. We keep both the computer's marks and the coach's corrections, plus the recording, forever.

Why bother? Because if the test is short enough to run every few weeks, we can see whether a child is improving during the year, not just at the end. And because a recording can tell us far more than a tick box: how fast the child reads, which words they trip on, whether they correct themselves, how long they pause. Nobody can write all that down live. A computer can.

21minutes
How long the full test takes an enumerator today, per child (middle value across 2,233 children)
5minutes
What we promised on the 15 September call: five children in 30 minutes per coach per day
97% within 5 words
Children whose 60-second word count from the best scorer (Gemini 3.1 Pro listening with the text) was within five words of the enumerator's
55% human floor
How often a second human agreed with the enumerator's word counts on the same recordings. Humans disagree a lot too.

Words you will meet

Every term is explained again where it first matters, but here they all are in one place.

EGRA
Early Grade Reading Assessment. A standard reading test for children in the first few years of school, designed by an American research group (RTI) and used in over 100 countries. It has several short parts called subtasks: naming letters, reading made-up words, reading real words, reading a short story for one minute, and answering questions about it.
EGMA
Early Grade Mathematics Assessment. The maths partner of EGRA: reading numbers, saying which of two numbers is bigger, quick addition and subtraction, and word problems.
ASER
The simpler test Pakistan uses today (run by ITA). A child is placed on a ladder: can they read letters, words, a paragraph, a story? Maths: numbers 1 to 9, 10 to 99, subtraction, division. It gives a level, not a speed. The call on 15 September said we want more detail than ASER gives.
Subtask
One part of a test, for example "read this list of words for one minute".
Timed window
A subtask where the child gets exactly 60 seconds. What matters is how many items they got right in that minute.
Stop rule
If a child gets nothing right in the first line, the tester stops that subtask so the child is not made to struggle for a full minute.
WCPM
Words correct per minute. The main reading-fluency number: how many words the child read correctly in one minute of a story. A Pakistani grade-2 child reading Urdu is expected to reach 60 to 90.
Enumerator
A trained tester who runs the test on a tablet. In the May 2026 study, 28 enumerators tested 2,233 children in 99 Rawalpindi schools.
Coach
Our school-visiting staff (also called TMs, AEOs, cluster coordinators depending on region). They watch lessons and give teachers feedback. We want them to run the five-minute test too.
Human in the loop (HITL)
The computer does the first pass, a person checks and corrects it, and the person's answer is final. Our lesson-observation feature already works this way: the AI fills a scoring form and the coach edits it.
Speech-to-text (STT), also called transcription
Software that turns a recording into written words. We use a service called Soniox; another is OpenAI's Whisper.
Timestamps
For every written word, the exact second in the recording where it was said. This lets us cut out "the 60 seconds after the coach said start".
Diarisation
Working out who is speaking when: the child or the coach.
Large language model (LLM)
An AI that reads and writes text, like ChatGPT, Gemini or Claude. Some can also listen to audio directly; we call those audio LLMs.
Reference text
The exact letters, words or story the child was supposed to read. The computer compares what it heard against this.
Alignment
Lining up the words the child said against the reference text to see which were read correctly, which were skipped, which were replaced by another word, and which were added. The classic method is called Levenshtein alignment (counting the smallest number of edits between two lists). Forced alignment is a stronger version that uses the audio itself, not just the transcript, and is what we need for reliable word-by-word marks.
Phoneme
A single speech sound. "Cat" has three: k, a, t. A pronunciation assessment service scores each one and can say "the child said eeli instead of Ali". Microsoft Azure and SpeechAce sell this for English. Nobody sells it for Urdu.
Item bank
The fixed list of test items (numbers, words, questions) with their correct answers, stored in our system so the computer knows what the child was asked.
Human floor
How often two trained humans agree with each other on the same recording. If humans only agree 55 percent of the time, we cannot expect a computer to agree with a human more than that; the floor is the realistic target.
Correlation (r)
A number from 0 to 1 saying how closely two sets of numbers move together. 0.97 means "almost the same ranking"; 0.3 means "barely related".
MAE
Mean absolute error. On average, how many words apart the computer's count and the human's count were.
Precision and recall (for word-by-word marks)
Precision: of the words the computer flagged as wrong, how many really were wrong. Recall: of the words that really were wrong, how many the computer caught. Low precision means lots of false alarms.
8 kHz vs 16 kHz
Recording quality. The May study's recordings were 8 kHz (phone-call quality). WhatsApp voice notes are 16 kHz (clearer). Every result on this page was measured on the worse quality.
R2
Our cloud file store (from Cloudflare). All recordings are saved there.
WhatsApp Flow
A form that opens inside WhatsApp. Our coaches already use one to check the AI's lesson-observation scores; the child-assessment checking screen will be another one.
TIP / LEAPS
A written placement test (Targeted Instruction Program, by the LEAPS research group) used in Islamabad and KP schools to sort children into ability groups. Paper, whole class at once, 50 minutes for maths. The "TIPS" folder you shared is this test.

How it is done today, and what we have to work with

The May 2026 study

In April and May, 28 enumerators tested 2,233 children in 99 Rawalpindi government schools with the full EGRA and EGMA in Urdu and English on tablets. The tablet software (SurveyCTO) recorded every session's audio and every tap: which letter the child got wrong, how many seconds were left on the timer, the answers to the questions. That whole export is in the Drive folder you shared, along with 207 of the recordings.

On top of that, seven reviewers later listened to 588 of those recordings and marked, subtask by subtask, whether the enumerator's score was right. So for each recording we have two human opinions: the enumerator's live marks and a reviewer's second opinion.

What the timing tells us

The middle child took 21 minutes: about 6 minutes of Urdu, 7 of English, 6 of maths. Three subtasks are 60-second timed reads that cost about 68 seconds each with instructions. Listening comprehension is slow because the enumerator reads a story aloud twice. The maths speed grid is the single longest part.

Why five minutes cannot mean "the same test, faster"

The child cannot read faster. The time saving has to come from three places: the coach stops tapping every item (the computer marks instead), we keep the stop rules so a child who cannot read letters is not made to attempt the story, and we choose which 60-second windows to keep. A full EGRA alone is 15 to 20 minutes by design, so a five-minute test is a deliberate selection, not a speed-up.

What happened when we tried a WhatsApp version already

In August we built a WhatsApp ASER tool. On 11 September the Rawalpindi field team said no: it asked one question per message, took 10 to 15 minutes per child, needed internet in schools that have none, and they did not trust the AI on Pakistani accents. Since then a "human decides" mode and a correction button have shipped. The one-question-per-message shape and the need for internet have not changed. This plan removes both.

What the team decided on 15 September

"I want to invest in a better test. I'm not happy with ASER. More granularity is the need of the hour."Haroon, alignment call, 25 minutes in

The call's recording was stuck in our meeting system (the row was marked private and the processing job had stalled), so I pulled the recording out and transcribed it. The decisions, with where they were said:

  • 30 minutes per coach per day, on top of the lesson observation. Five children at about five minutes each. Not released until it is proven under 30. Islamabad first; other regions two to three weeks later.
  • All three subjects (Urdu, English, maths), Urdu first. Comprehension questions stay.
  • The children are chosen by an algorithm, not the coach, so the sample is random. Still open: five new children each visit, or three new plus two we have tested before.
  • Based on EGRA, not ASER, and not the TIP written test unless someone shows it is better.
  • Break EGRA into small weekly quizzes for the WhatsApp student quiz, so class-level progress shows up weekly.
  • Use the recordings to check the tester too, the way our lesson-observation AI checks a lesson. The experiment below is the first run of exactly that.

The tests, explained

What each well-known test contains, how it is run, and what it is good and bad at, so you can judge which items we keep. Longer versions with sources are in the research folder.

EGRA

One tester, one child · 15 to 20 minutes · grades 1 to 3

Listen to a story and answer questions; name 100 letters in a minute; say the first sound of words; read 50 made-up words in a minute (this checks decoding without memory); read 50 real words in a minute; read a story for a minute and answer 3 to 5 questions. Stops early if the first line is all wrong. Result: letters and words correct per minute. Urdu versions exist.

Good: the speed numbers move within months, so progress shows. Bad: long; the letter part is the noisiest.

EGMA

One tester, one child · about 20 minutes

Read 20 numbers in a minute; say which of two numbers is bigger; fill the missing number in a sequence; quick addition and subtraction for a minute each; harder sums with paper allowed; six word problems. The child must say the answer, pointing does not count.

Good: separates children who know facts from children who count on fingers. Bad: some parts have only 5 items, so they are unreliable on their own.

ASER

One tester, one child · about 10 minutes for reading and maths together

A ladder: nothing → letters → words → paragraph → story. Pass a rung by getting 4 of 5 right. Maths: 1 to 9 → 10 to 99 → subtraction with borrowing → division. Result: a level name.

Good: cheap and governments understand it. Bad: a child can improve a lot and stay on the same rung, so you cannot see change during a term.

ICAN

One tester, one child · about 15 minutes · run in Pakistan in Urdu

26 maths items across numbers, operations, patterns, shapes, measurement and reading a chart. Gated: harder sets only if the easier one is passed.

Good: covers shapes and data that EGMA skips. Bad: nothing is timed, so no speed measure.

TIP (the folder you shared)

Written, whole class at once · maths is 40 questions in 50 minutes · grades 1 to 5

Urdu and English: match a picture to a word, join letters into a word, plurals, fill the verb, pick the picture for a sentence, fill gaps in a paragraph, write three sentences. Maths: sums with carrying, missing numbers, bigger or smaller, odd or even, times and division, fractions, word problems. Each class stops at its own page. Sorts children into KG / Class 1 / Class 2 / Class 3 groups.

Good: it is the grouping Islamabad and KP classrooms already use. Bad: it tests writing as much as reading; nothing is read aloud or timed; far too long for us. We should map our results onto its groups, not adopt it.

DIBELS (the American one-minute model)

One tester, one child · one minute per part

Letter naming, breaking words into sounds, made-up words, real words, a story, each in one minute. Proof that a full picture of a young reader fits in five minutes.

Good: the template for "one minute per skill". Bad: English only.

AI reading apps (Amira, Google Read Along, Microsoft Reading Progress)

Child reads to a phone or laptop

All produce the same things from a read-aloud: words per minute, accuracy, a list of mistakes by type, and a per-skill report for the teacher. Read Along has Urdu.

Good: shows what word-by-word output looks like. Bad: English first; their accuracy claims are not independently checked.

What governments already run here

Punjab LND, national NAT, Sindh's EGRA

LND: seven multiple-choice questions on a tablet for seven children per school per month. NAT: a grade-4 paper test. Sindh 2024: a government-owned Urdu EGRA on 7,248 children, five subtasks.

Good: legible to officials. Bad: none measures reading speed at scale.

What almost every test has in common. Five things: knowing letters, decoding (made-up or single words), reading a passage with a speed, answering questions on it, and recognising numbers plus basic sums. Everything else appears in only one test and can be dropped. Every short test gets short the same two ways: skip the hard rung if the easy one failed, and choose a subset. What a recording adds that paper never could: a speed on every item and a list of the exact mistakes.

What the coach does, step by step

Follow one child. Ayesha is in grade 3. Her coach has just finished recording a lesson in her class.

  1. The offer. The moment the lesson recording is received, Rumi (our WhatsApp assistant) sends: "Today's five children for assessment: Ayesha, Bilal, …" The list was chosen in advance by the sampling algorithm. The coach can accept or skip; the observation itself does not depend on it.
  2. The Urdu block, one voice note. The coach sits with Ayesha, holds up the printed Urdu story card, presses record, and says the cue phrase from the card: "یہ کہانی پڑھو۔ شروع۔" Ayesha reads for a minute; the coach says "بس" and asks the three questions on the card, then the five first-sound items. The coach stops the recording. One voice note, about two minutes.
  3. The English block, one voice note. Same pattern: story card, cue phrase, one minute of reading, two questions, then eight made-up words.
  4. The maths block, one voice note plus one photo. The coach shows eight numbers for Ayesha to read aloud, then runs the one-minute quick-sums strip aloud. Then the coach hands Ayesha a small sheet with four written sums and one word problem to do while the coach fetches Bilal, and photographs the sheet when she is done.
  5. The computer marks while the next child reads. Ayesha's three voice notes and photo upload when there is signal. If the school has no internet, they queue on the phone and go later. The computer's marks are ready in under a minute once uploaded.
  6. The checking screen. Rumi replies in the chat with its counts and a button that opens a WhatsApp form, pre-filled block by block: 31 words correct in 60 seconds, one of three questions right, and so on. The coach changes anything that looks wrong. Where the computer was unsure, the field arrives empty and the coach fills it, replaying their own voice note in the chat if they need to.
  7. Saved twice. We store what the computer said and what the coach said, side by side, plus the recordings. The coach's answer is the official one. The computer's answer is kept so we can measure how often it was right and improve it.
Lesson recorded(the observe feature)coach still in the school "Today's 5 children"chosen in advanceby the sampling rule per child (about 6 min incl. the swap) Urduvoice note Englishvoice note Mathsnote + photo Checking screencomputer's marks, coach editsabout 60 s Savedboth answers+ recordings next child (the computer marks child 1 while child 2 reads) Recording ruleOne voice note per block. The coach says the cue phrase and "start". The computer's 60-second clock runs from the child's first word, never from a tap. No-internet ruleNotes and the photo wait on the phone and upload later. Marks and the checking screen arrive when the coach is back online, child by child, in order.
The offer after a lesson is an offer, not a requirement. Finishing the lesson observation never depends on it, which is also what the field team asked for.

What the computer does with a voice note

Ayesha's Urdu voice note is two minutes long. Here is what happens to it, in order.

  1. Save the file. The voice note goes straight into our cloud file store (R2) under a name that says which school, session, child and block it is. We never rely on WhatsApp keeping it; WhatsApp deletes media after about a month.
  2. Turn speech into words with timestamps. A speech-to-text service (Soniox for Urdu, Whisper for English) writes out every word and the exact second it was said, and labels which words are the coach's and which are the child's. We tell it the language in advance; we learned the hard way that if we let it guess, it writes a child's accented English in Urdu letters.
  3. Find the windows. The computer looks for the coach's cue phrase ("یہ کہانی پڑھو") and the child's first word after it, and cuts out exactly 60 seconds from there. That is the story window. The questions come after "بس". Because the timestamps come from the speech-to-text service, the cut is accurate to the second. (We tested letting an audio AI do the cutting; its clock was off by 20 to 75 seconds, so it only gets to label, never to time.)
  4. Mark the words. The computer already knows the story text (the item bank). It gives the 60-second clip and that text to an audio model (Gemini 3.8 Flash), which returns a verdict per word: read correctly, wrong, or not reached. In the evaluation this landed within five words of the enumerator for three children in four; a second method, lining the transcript up against the text by spelling, runs alongside as the fallback and as a check on the chips.
  5. Mark the questions. The child's spoken answers to the three questions go to a text AI with the marking guide ("the answer should mention Bilal's father") and it returns right or wrong with its reason. It also notes which language the child answered in.
  6. Check the coach. The same transcript shows whether the coach read the story twice, whether they prompted the child inside the timed minute, and how noisy the room was. In our test this caught a slip that a human reviewer had missed.
  7. Say how sure it is. Every mark carries a confidence. Marks above the bar we set from the experiment below arrive pre-filled on the checking screen; marks below it arrive as empty fields the coach fills.
  8. Fill the form. The marks become a pre-filled WhatsApp form for the coach.
Voice notefrom WhatsApp Saved (R2)named by child + block Speech-to-textwords + seconds + who spoke Window findercue phrase → 60 s from first word English reading markerGemini audio on the clip + text; pronunciation service later Urdu reading markerGemini audio on the clip + text; alignment as fallback Maths markernumber reader + item bank · photo reader Questions · coach checktext AI with the marking guide Word table + formcounts, per-word marks, confidence Coach editson the WhatsApp form Saved rowscomputer's markscoach's markswho decided, difference Safety check before marking: the window finder must find a child speaking for at least 10 seconds after a cue phrase. If not, the row is marked "no child speech found" and the form says so, instead of a made-up score.
Everything left of the window finder already exists in our bot (it is how the current reading test works). The window finder, the Gemini audio markers, the number reader, the photo reader and the per-item form are the new parts.

The experiment: does this actually work on real recordings?

We took every one of the 187 study recordings that has both a child's tablet scores and a reviewer's re-listen, and ran the candidate pipeline and every model we were considering over them. This is the "evaluation harness": a set of numbered scripts anyone can rerun, with every model reply cached. The full record, one table per task with every scorer we tried, is the evaluation page; twelve worked examples show, for real windows, the printed text, the clip, the transcript, the enumerator's marks and every model's per-word verdicts side by side. Total model spend for the whole evaluation was about $70.

Where the human scores come from

Two layers. The enumerator's live marks from the tablet: for every letter, word and story word, whether the child got it right, plus the counts and timer readings. And the reviewer's second opinion: someone listened to the recording afterwards and marked whether each of the enumerator's scores was right, wrong, or impossible to tell from the audio.

Why the "human floor" matters

Before judging any computer we asked how often the two humans agree with each other. On letters and maths, about nine times in ten. On the timed word lists and the story, only 51 to 62 percent of the time: the recordings are noisy phone-quality audio from real classrooms, and even a trained human cannot always tell what a child said. So on those tasks the fair target for a computer is "as good as the second human", not perfection. That floor is printed beside every number on the evaluation page.

What we found, task by task

TaskSecond human agreed with the enumeratorBest scorer we found, and how close it getsVerdict
Urdu word list (60 s)51%
Gemini 3.1 Pro listening to the clip with the printed text: within 5 words for 97% of children, 1.6 words off on average; per-word flags right 3 times in 4. Gemini 3.8 Flash: within 5 for 86%, 3.8 words off, at a sixth of the price. Transcript + alignment: 8 words off.counts and chips ready
Urdu story (60 s)54%
Gemini 3.1 Pro: within 5 words for 88%, 2.8 words off; per-word flags right 56% of the time (F1 66). Gemini 3.8 Flash: 74% within 5, 5.5 words off. Transcript + alignment: 16 words off, always under-counting.counts ready, chips as suggestions
English story (60 s)62%
The hardest input we have (accented child English on 8 kHz audio). Counts: Gemini 3.8 Flash and GPT audio 4 to 6 words off. Per-word flags: SpeechAce is the best at right about 4 times in 10 (twice the Gemini models), and it names the mispronounced sound.counts ready, chips from SpeechAce as suggestions
English pseudowords52%
Most children read 0 to 5; transcript + alignment is within 5 for 91%.counts ready
Letters, Urdu / English89% / 90%
The window itself was lost 62 to 84 percent of the time: letter names come back in three scripts. No model tested cleanly.coach marks
Urdu comprehension (6 questions)73%
A text grader on the transcript: within one answer of the enumerator for 79% of children (Gemini 3 Flash, a tenth of a cent per child); Claude Sonnet 5 and GPT-5 mini 73 to 75%.ready
Maths word problems (question spoken)87%
Grader on the transcript: within one item for 63 to 74% (Claude Sonnet 5 best, Gemini 2.5 Pro and 3 Flash close).ready with the item bank
Maths number reading (stimulus on paper)81%
Not gradable from audio alone (0.27 to 0.40 correlation); the product knows the numbers shown, so it becomes a closed-vocabulary match.needs the item bank
Finding the 60-second window—Speech-to-text timestamps plus a text labeller: 70% of subtask starts within 15 s of the enumerator's tap, timed windows back at a median of 60 s; the cheap labellers (Gemini 3 Flash) match the expensive ones. Audio models' own clocks drifted 20 to 75 s.design rule: STT cuts, LLM labels
Bar chart: mean absolute error in words read correctly per 60 seconds, per scorer, averaged over three subtasks. Gemini 3.1 Pro 3.6, Gemini 3.8 Flash 5.0, baseline 11.8, GPT audio mini 23.2.
Every scorer we tried on the same 60-second windows, with the printed text supplied. Lower is better. The two Gemini audio models are the only ones clearly better than transcript plus alignment.
Bar chart: F1 of wrong-word flags on the Urdu story per scorer. Gemini 3.1 Pro 66, Gemini 3.8 Flash 50, baseline 36.
Per-word marks are harder than counts. Only the Gemini audio models beat the alignment baseline; none reaches the second human's agreement rate, which is why chips are suggestions in the first version.
Bar chart: share of children where the grader's comprehension count was within one of the enumerator's. Gemini 3 Flash 79%, GPT-5 mini 75%, Claude Sonnet 5 73%.
Grading spoken comprehension answers from the transcript is solved well enough by a cheap text model.

Reading the results

Give the model the clip and the printed text, and counting is solved. Gemini 3.1 Pro and 3.8 Flash, listening to the 60-second clip with the exact text in front of them, land within five words of the enumerator for 74 to 97 percent of children, on poor audio, for one to six cents a window. Transcript-only methods, whether alignment or a text model, under-count by 8 to 20 words because speech-to-text drops words the child did say.

Per-word chips are usable as suggestions, not marks. The best model's flags are right two-thirds of the time on the Urdu word list and just over half on the story; every other scorer is well below that. Chips appear where the model and the alignment agree; elsewhere the coach decides.

Cheap models are not interchangeable with expensive ones here. GPT audio mini, MiMo, Nemotron and Voxtral were 12 to 23 words off; Gemini 2.5 Flash waved mistakes through. Gemini 3.5 Flash-Lite is the surprise: nearly as good as 3.8 Flash on counts at a third of the price.

Three things the harness surfaced by accident

  • Our Microsoft Azure pronunciation service is dead: both stored keys are rejected, and the same key is on the live server, so English reading tests have quietly been falling back to a weaker method. Filed as an urgent bug; the fix is to swap that path to SpeechAce rather than regenerate the key.
  • Letting the transcription service guess the language breaks on accented child English: it wrote the child's English in Urdu and Devanagari script. Tell it the language.
  • The study export records 0 for both "read correctly" and "never reached", so per-word comparisons are only valid up to the word the enumerator says the child reached. The first pass of this evaluation got that wrong; the numbers here use the corrected rule.

What the scoring costs

About 10 cents per child for the full five-minute test with Gemini 3.8 Flash on every window plus the graders; about 25 cents with Gemini 3.1 Pro on the Urdu windows. Both are far below the roughly 43 cents a coaching session costs today.

More than a speed: what else a recording can tell us

Everything comes from one thing: a word table, one row per word the child was supposed to read, with when it started, when it ended, whether it was right, and how sure the computer is. Build that first and store it; every measure below is a calculation on it. Ranked by how useful it is to a coach, how strong the evidence is, and how hard it is to build.

What we can measureIn plain wordsHow well establishedWhen
Words correct per minute, accuracyThe standard reading-speed numberMachine and human agree at 0.96 in US national testing; 0.97 in our experimentversion 1
Did the coach follow the script?Story read twice? No hints during the timed minute? Timer honest?Caught a slip a human reviewer missed; testers are known to make such errors oftenversion 1
Was the room too noisy?A quality flag so we know when to trust the marks lessRecognition errors triple in loud roomsversion 1
PausesDoes the child pause at full stops (good) or in the middle of phrases (struggling)? How long before the first word?Pause patterns alone explain over half of the speed differences between children, and predict later comprehensionversion 1, shown as information, not a score
Types of mistake and self-correctionsSkipped words, added words, wrong words, repeats; and how often the child fixes their own mistake (a good sign)Self-correction predicts progress in large studies; our per-word accuracy is not yet good enoughversion 1 counts for English · version 2 Urdu
Effortful decodingSounding out letter by letter, restarting words, long pauses inside a wordStandard idea; no published reliability yetversion 2
A speed with an error barInstead of "31 words", "31 give or take 6", and fairer comparison across different storiesNeeds each child to read 3 or 4 short passages over time; well-published statisticsversion 2, but design the stories for it now
Comprehension in any languageMark spoken answers even if the child answers in PunjabiAI marking of short answers matches human markersversion 1
Maths: remembering vs countingHow long the child takes to answer 7 + 5, and whether you can hear them countingStrong theory; testers already tick "used fingers"; no automated version exists yetversion 2, as a check on the coach's tick
Types of maths mistakeOff by one, wrong place value, did addition instead of subtractionUseful hints for the teacher; never a score on their ownversion 1
Which numbers trip the childTeens, decades, three-digit; Urdu has a separate word for every number up to 99Well described for other languages; Urdu is our hypothesisversion 2
ExpressionDoes the child read like they are talking or like a robot? (The US test scores this 1 to 4)Computers now agree with humans more than humans agree with each other on this; no Urdu data yetversion 2 English, research for Urdu
Phonics gap mapWhich letter-sounds a child, or a whole class, cannot map: the thing a teacher should teach tomorrowOne US product ships it; sound-level recognition is still error-prone in noiseversion 2 for a class · research per child
The written maths photoFinal answers now; later, reading tally marks and working; never penalise a reversed digit under age 7Handwriting reading works; reading strategy from working does not yetversion 2
Fairness reportDoes the computer mark Punjabi- or Pothwari-accented Urdu harsher? Accepted-pronunciation lists built from our own recordingsWell-known problem in speech recognition; the fix is knownversion 1 report · version 2 lists
Not doing: reading the child's mood, second-by-second tiredness curves, grammar of the child's speechMeasurable, but no evidence they say anything about the score, and they punish shy childrenresearch only
The bigger point. Paper gives one number per subject per child per term. A recording gives a word table per child per visit. Four things become possible that never were: a growth curve for each child from repeated five-minute samples; spotting the mistake patterns across a whole class (what to teach next week); calibrating our own stories on thousands of real reads instead of formulas; and a running fairness check on every coach instead of a one-off training test. None of this needs new AI. It needs the word table stored from day one, with the coach's corrections next to it.

Maths: should the child speak the answer or write it?

A fair question is whether marking maths from speech is even normal. It depends on what the item is measuring, and the standard tests already split the same way.

Speaking is the norm for speed items. EGMA insists the child says the answer for number reading and for the one-minute sums, because these measure how quickly a child retrieves facts. A grade-1 child writes so slowly that a written version would measure handwriting, not maths. ASER and ICAN are spoken throughout. Our experiment confirmed spoken answers can be marked when the question is spoken too (word problems 0.70), and number reading becomes easy once the computer knows which numbers were shown, which it will in the product.

Writing is the norm for computation. EGMA lets the child use paper for harder sums; the TIP test, LND and NAT are entirely written; and the child's working (tally marks, carrying) is evidence a recording cannot capture. A photo also costs the coach nothing: the child writes six items while the coach fetches the next child.

So: both, split by what the item measures. Speak the number reading and the timed sums; write the two-digit sums and one word problem, photographed once. AI can read children's final answers from a photo well today; reading their working reliably is a version-2 goal, and we should test 50 real sheets before trusting either.

Maths itemHow capturedWhy
Read 8 numbers aloudspeakSpeed matters; the computer knows the numbers
Which number is biggerspeakThe test rules say say, not point
One-minute quick sumsspeakA speed measure; hearing counting reveals strategy
Two-digit sums with carryingwrite + photoThe working is the evidence; no coach time
Word problemsspeak the answer, optionally photo the workingCoach reads the question; AI marks; photo shows method
Patterns, shapes, timephoto or dropNot a speed item; older grades only
Why not simply photograph everything. Photographing everything would lose the two things only audio gives in maths: the per-minute speed and the sound of a child counting instead of knowing. Speaking everything would lose the working. The split above is what EGMA itself does.

The five-minute test, from first principles

Do not start by asking which EGRA parts to cut. Start by asking what a five-minute recording can contain. One 60-second story read gives speed, accuracy, mistake types, self-corrections and pauses; add three questions and it gives comprehension. That one window already carries more detail than the whole ASER ladder. So the rule is: spend the minutes on windows that yield many measures, use stop rules so every child works at their own level, and keep every timed window at the full 60 seconds so our numbers stay comparable with the published Urdu benchmarks. Detail comes from measuring more per window, not from squeezing in more windows.

Two departures from the original brief. Five minutes is the test, not the visit: walking a child in and out adds a minute, and the 30-minute promise absorbs it. And the 100-letter grid should be a fallback rung, not the default: it is where both humans and computers are weakest, and a child who can read the story has proven the letters.

Block · one voice note eachWhat the child doesSecondsStop ruleWhat we learnCan the computer mark it now?
Urdu about 2 minRead a 60-word grade-2 story for one minute60Fewer than 5 right in the first line → switch to 10 letters (20 s) and 10 words (30 s) insteadspeed, accuracy, mistakes, self-corrections, pausescounts yes, chips as suggestions
Answer 3 questions about it25only if at least one line was readunderstanding; language of answeryes
Say the first sound of 5 words20skipped on the letter branchsound awarenesscoach marks
Read 5 made-up words20readers onlydecoding without memorycoach marks
English about 2 minRead a short grade-level story for one minute60Fewer than 5 right in the first line → 10 words (30 s) and 10 letters (20 s)as Urdu, plus sound-level detail once Azure is fixedcounts yes
Answer 2 questions20only if at least one line was readunderstandingyes
Read 8 made-up words30readers onlydecoding; our experiment marked these within 5 for 91% of childrenyes
Maths about 1.5 min + a photoRead 8 numbers aloud254 wrong in a row → stop the blocknumber knowledge, which numbers failyes, with the item bank
One-minute quick sums, answers spoken60timedsums per minute; counting vs knowingyes
4 written sums + 1 word problem, done while the coach fetches the next child; one photo0 coach timegrade 2 and upanswers now, working laterphoto, answers only
Child timeabout 330Plus about 30 seconds of moving between blocks. Today's enumerator takes about 8 minutes for the same content. Five children with swaps: about 30 minutes.
Why this is more than "EGRA cut down to ASER". ASER gives one level per subject. This gives, per child per visit: two reading speeds with mistake lists, comprehension in two languages, a decoding check in each, a maths speed with a strategy signal, written computation, and a coach-quality score; plus a per-item table that builds up into class-level phonics gaps and growth curves over time. What it drops from the full EGRA: the 100-letter grids for readers, listening comprehension, dictation, and 50-word lists (replaced by 10-word rows on the fallback branch). Everything kept at 60 seconds stays comparable with the 60 to 90 words-per-minute Urdu benchmark.

The checking screen

This is the same mechanism the lesson-observation form uses in Islamabad today. There, after a coach sends a lesson recording, Rumi listens, fills in the observation form and sends a message with a button that says فارم کھولیں ("open the form"). Tapping it opens a WhatsApp Flow: a set of screens that WhatsApp itself draws, where every score is already filled in, the coach changes what they disagree with, taps Next through the screens, and submits. We reuse that exactly, with one form per child instead of per lesson.

A WhatsApp Flow is not a web page, so the design has to fit what Meta allows. What it can do: fields pre-filled from our server; number boxes; a row of tappable chips (at most 20); radio buttons; dropdowns; a photo picker that opens the camera; one button per screen; up to 50 elements per screen. What it cannot do: play audio. There is no sound inside a Flow at all. So the coach does not re-listen inside the form; the recording is their own voice note, already in the chat, and they play it there. Each screen's button sends its values to Rumi as soon as it is tapped, so closing the form to listen and opening it again loses nothing.

That rules out the per-word tap-to-mark passage an app could offer (a 60-word story would need 60 elements and there is no tap-on-text component). What fits is the pattern below: the counts as pre-filled numbers, the words the computer marked wrong as chips that start ticked (the coach unticks any the child actually read right), one radio-button question per comprehension item showing the question and what the child said, and a dropdown for the things the computer does not mark, such as first sounds and letters. Where the computer is not confident enough, the field arrives empty rather than pre-filled, and the coach fills it from memory or after replaying the note.

The chat: Rumi sends the child card, the coach sends the voice note, Rumi replies with the form button
1 · The chat. Rumi sends the card, the coach records one voice note for the whole five minutes, Rumi replies within two minutes with its counts and the فارم کھولیں button. The same message shape the observation form uses today.
Flow screen 1 of 3, Urdu: pre-filled counts, flagged-word chips, a radio-button comprehension question
2 · Screen 1 of 3, Urdu. The counts are pre-filled number boxes. The three words the computer heard wrong are ticked chips; untick one and it counts as right. Each story question shows the child's answer and three radio buttons. The green button saves this screen and moves to English.
Flow screen 3 of 3, maths: dropdowns, a number box and a camera photo picker
3 · Screen 3 of 3, maths. Number reading and the word problems are dropdowns, the timed sums a number box, and the photo picker opens the camera for the child's written answers. Submit ends the child and Rumi sends the next card.

The full draft of the form, in the exact JSON format Meta accepts, is in the files section (egra-review-flow.json). It uses only components that exist in Flow version 7.0, and every label is within Meta's length limits. The pictures above are drawn from that file's example data, not invented separately.

Storage is unchanged from the observation form: the computer's answer is saved once and never changed (version 1); the form opens pre-filled from it; the coach's submission is saved as version 2 with a note of what changed, item by item, because we need to know exactly where the computer was wrong to improve it. Only the coach who did the assessment can submit it.

Where everything is saved

Good news: our database already has the right shape, built for the August ASER tool. We add no new tables for version 1, only a few columns. In plain terms:

What we need to keepWhere it already livesWhat we add
The session: which coach, child, grade, school, region, done or notthe aser_sessions tablea flag saying this was the five-minute test, and a link to the lesson observation it followed
Each reading window: the text shown, the recording, the transcript, the word table, counts, speed, timethe reading_assessments table (one row per window)new names for the new window types; the start and end second of the window; the word table with a mark and confidence per word
The computer's answer next to the coach's answer, who decided, and the differencecolumns already exist (rumi_level / coach_level and friends)one extra field listing every item the coach changed, with before and after
The maths photo and its answersthe numeracy_assessments tableper-item answers from the photo
The recordings themselvesthe R2 file storefile names that include school, session, child and block; uploaded immediately, never left on WhatsApp
Reports for the team dashboardan existing summary viewthe new subtask columns and the coach-quality fields

Which AI does what: the stack we recommend

There is no single "the AI". Different tools do different jobs, and the evaluation decided which. Costs are per child for the five-minute test.

JobTool we will useWhy, in one lineFallbackCost
Cutting the audio into subtask windowsThe coach's cue phrase per block, plus speech-to-text timestamps (Soniox told the language is Urdu; Whisper told the language is English)Speech-to-text clocks were exact to the second; every audio AI's own clock drifted by up to 75 secondsA cheap text labeller (Gemini 3 Flash) on the transcript when a coach forgets the cue phrase1 to 2 cents
Counting words read correctly in 60 seconds, Urdu and EnglishGemini 3.8 Flash listening to the clip with the printed text; Gemini 3.1 Pro on the Urdu windows where a second opinion is worth six times the costBest agreement with the enumerator of everything tried, and it also gives per-word marksSpeech-to-text plus alignment if the audio model is unavailable1 cent per window (Pro: 6 cents)
Per-word chips on the checking screenThe same Gemini verdicts, shown only where the model and the alignment agreeTheir flags are right about half to two-thirds of the time, the best measured but well short of a markThe coach marks the wordnone extra
Letters and first soundsThe coach marks; the audio is kept for a later open forced-alignment modelLetter names transcribe in three scripts; no scorer tested cleanly—none
Marking spoken comprehension answersA text grader (Gemini 3 Flash tier) on the transcript with the passageWithin one answer for about 8 in 10 children at a tenth of a centClaude Sonnet 5 or GPT-5 mini, same result at higher costunder 1 cent
Spoken mathsTranscript plus the item bank plus a small number-word dictionary; a text grader only for word problemsWord problems within one item for about 7 in 10 children without the bank; number reading needs the bank, which the product hasThe coach marksunder 1 cent
The maths photoGemini 3.1 Pro vision with the answer keyBest on handwriting benchmarks; not yet tested on our answer pages, so we probe 50 firstThe coach marks1 to 2 cents
English per-word marks and sound-level detailSpeechAce, two 30-second calls per window, plus its made-up-word endpointOn English its per-word flags were the best we measured (right about 4 times in 10, twice Gemini's rate), its counts are on par, and it is the only scorer that names the mispronounced sound. Azure is dead and not worth regenerating.Gemini 3.8 Flash counts with the coach marking chipsabout 3 cents per window
Checking the coach followed the scriptA Gemini-class audio model over the whole block, once, in the backgroundCaught a slip a human reviewer missed—about 5 cents
Tried and set aside. GPT audio mini and Nemotron omni (counts wrong by 15 to 30 words); MiMo 2.5, Voxtral small and Gemini 2.5 Flash (too lenient, 8 to 10 words high); every transcript-only model (no better than alignment, and harsher); GPT audio (good on word lists, poor on the Urdu story, four times the price of Gemini 3.8 Flash). Claude cannot listen to audio at all, so it marks answers and reads photos; it does not time or score words. Everything Urdu-specific that needs sound-level detail will run on open models we host ourselves, chosen for licences that allow production use.

The order we go in

No dates. Each step starts when the one before it is done and has proved itself.

1

Evidence and decisions

  • Done: the experiment above, the test walkthrough, the alignment-call transcript, the TIP read-through.
  • Left: swap the English pronunciation path from Azure to SpeechAce; run the forced-alignment method for Urdu word marks; hand-transcribe 30 Urdu reads as a gold standard.
  • Fix the Urdu instrument choices with Sabeena and Sameer (decision D3). Confirm the after-observation placement with the Rawalpindi field team.
2

Build in the main bot, on the staging server

  • One voice note per block; notes queue when offline; the 60-second clock from the child's first word; stop rules.
  • Save the word table for every read; the per-item checking form; counts shown, per-word chips only where confident.
  • Maths: the item bank, the number dictionary, the photo answer reader.
3

Islamabad pilot, as promised on the call

  • Two or three coaches, five schools, 25 pre-selected children, real number, everything coach-confirmed.
  • Stopwatch every child; we stop when the typical child is under five minutes of test time. Re-measure every number above on the clearer WhatsApp audio.
4

NIETE version and the after-lesson offer; portal page

  • Copy the tables, handler and sampling into the NIETE bot; offer the test when the lesson recording arrives; a grade picker; an "Assessments" page next to "Observations" on the portal showing computer vs coach marks and coach-quality.
5

Calibrate, then trust

  • A subtask switches from "coach confirms" to "computer confirms" only when the computer agrees with the enumerator as often as the second human did for that subtask. Publish that table monthly per region.
  • The team dashboard panel; Rawalpindi then ICT; the weekly quiz items from the same item bank.

Decisions to be made

D1
The five-minute test as designed above: two 60-second stories with fallback rungs, made-up words for readers, spoken maths speed plus a written photo strip. Or a variant. Shorter windows would break comparability and add less information than measuring more per window.
D2
Maths split by what the item measures (speak the speed items, write the computation). Photo-only loses the speed and the counting signal; speech-only loses the working.
D3
Urdu instrument choices: letter names or letter sounds (the May study used names; Sindh used first sounds); vowel marks (aerab) on or off in the stories; which two grade-2 stories; how to build the made-up words. Sabeena and Sameer's call, and the marker cannot be built until these are fixed.
D4
Retire Azure, use SpeechAce for English. The evaluation says SpeechAce's English per-word marks are the best we measured and it is the only scorer that names the mispronounced sound, so there is no reason to regenerate the dead Azure key. What needs deciding is the SpeechAce plan tier (the 30-second cap means two calls per window; the Pro tier raises it to 45 s). Live English reading tests stay on the weaker fallback until the swap ships.
D5
Sampling for the pilot: five new children per visit, or three new plus two repeats. The experiment has no opinion; the impact team's big EGRA every three months stays the official measure either way.
D6
Map our results onto the TIP groups (KG / Class 1 / 2 / 3) so Islamabad and KP teachers can use them directly. Small work, big legibility.

Where everything is

Documents

Investigation index
What was asked, what is in the folder, headline findings, open decisions · INVESTIGATION.md
Baseline: the May 2026 study
The corpus, the 21-minute enumerator timing baseline, the QA review layer · BASELINE.md
The evaluation
Every model we tested, one table per subtask, the human floor and the baseline beside every number, and the stack we recommend · harness/HARNESS_RESULTS.md
EGRA and EGMA structure
Subtasks, timing, stop rules, Urdu adaptations, benchmarks, automated-scoring literature · research/01_EGRA_EGMA_structure.md
Model landscape
Every pronunciation, ASR, phone-recognition, audio-LLM and vision option checked, with locale lists and prices · research/02_model_landscape.md
What the main bot already has
The reading pipeline and the live ASER tool, file by file · research/03_current_reading_pipeline.md
The NIETE observe HITL flow
How the AI pre-fill and coach correction work today; hook points; reuse map · research/04_niete_observe_hitl.md
What a recording can yield
Constructs recoverable from a read-aloud beyond WCPM, with evidence and phase · research/05_what_a_recording_can_yield.md
Assessment batteries walkthrough
EGRA, EGMA, ICAN, TIP, ASER, ELANA, DIBELS, MELQO, Literacy Boost, Pakistan incumbents, AI readers · research/06_assessment_batteries_walkthrough.md
Model deep dive
Child-speech ASR, Urdu models, phone/GOP stacks, prosody, audio LLMs, maths ITN, vision; the eval shortlist · research/07_model_deep_dive.md
Probe 1: an audio LLM on a whole session
Gemini 2.5 Pro and Flash segment and score one 17-minute enumerator recording · probes/PROBE1_FINDINGS.md
Probe 2: production STT on the Urdu block
Soniox timestamps, diarisation and the "STT cuts, LLM labels" rule · probes/PROBE2_FINDINGS.md
The TIP diagnostic (LEAPS/CERP)
What the written placement test contains and how it relates to ours · tips/TIP_NOTES.md
Alignment call, 15 Sep 2026
Decisions with timestamps; how the transcript was recovered · meetings/2026-09-15_alignment-call.md

Harness scripts (run in order to reproduce every number)

  1. audio_durations.py — ffprobe every recording, join to the child index + coach reviews, write audio/_audio_index.csv and print baseline stats. (raw)
  2. baseline_timings.py — Baseline: how long enumerators took per subtask and per child, from the SurveyCTO export. (raw)
  3. build_site.py — Build the self-contained GitHub Pages site for the EGRA-in-five-minutes plan into ./site. (raw)
  4. download_drive_audio.py — Download every file in the shared EGRA/EGMA enumerator-recordings Drive folder into ./audio. (raw)
  5. download_tips_folder.py — Download the TIPS assessment Drive folder into ./tips (Google-native files exported). (raw)
  6. harness/01_soniox_batch.py — Harness step 1: Soniox stt-async-v3 (diarised, hints ur+en) over every recording → harness/soniox/<file>.json (raw)
  7. harness/02_ground_truth.py — Harness step 2: extract per-child ground truth from the SurveyCTO export for the 206 matched recordings. (raw)
  8. harness/03_segmenter.py — Harness step 3: rule-based segmenter over Soniox diarised tokens. (raw)
  9. harness/03b_segmenter_llm.py — Harness step 3b: LLM-labelled segmentation on STT timestamps ("STT cuts, LLM labels"). (raw)
  10. harness/04_reference_reconstruct.py — Harness step 4: reconstruct the instrument's reference texts by consensus across children. (raw)
  11. harness/04b_reference_llm.py — Harness step 4b: reconstruct the reference stimuli with an LLM instead of positional voting. (raw)
  12. harness/05_human_floor.py — Harness step 5: the human floor. For every subtask, how often did the QA reviewer (second human, re-listening (raw)
  13. harness/06_reading_score.py — Harness step 6: Urdu + English reading scores from STT alone (the "cheap stack"). (raw)
  14. harness/07_maths_grade.py — Harness step 7: maths from speech. For each child, give a TEXT LLM the diarised transcript of the maths block (raw)
  15. harness/08_soniox_english_pass.py — Harness step 8: second Soniox pass on the ENGLISH block only, language hint 'en' only. (raw)
  16. harness/08b_whisper_english_pass.py — Harness step 8b: English block via OpenAI whisper-1 with language forced to 'en' + word timestamps. (raw)
  17. harness/09_english_azure_speechace.py — Harness step 9: English passage + word list — Azure Pronunciation Assessment vs SpeechAce vs Soniox-diff, (raw)
  18. harness/09b_speechace_eval.py — Re-score the cached SpeechAce responses properly: per-word verdict (quality_score < 60 = wrong) vs the enumerator's (raw)
  19. harness/10_window_scorers.py — Harness round 2, step 10: score the 60-second reading windows with the models we recommended but had not tested. (raw)
  20. harness/11_comprehension_grade.py — Harness round 2, step 11: grade the Urdu reading-comprehension answers with text LLMs. (raw)
  21. harness/12_round2_summary.py — Harness round 2, step 12: one table per experiment with the human floor and the Levenshtein baseline beside every (raw)
  22. harness/13_round2_charts.py — Harness round 2, step 13: house-style charts of the round-2 results for the board post and the site. (raw)
  23. harness/14_worked_examples.py — Harness step 14: worked examples — one page per scored window showing every artefact behind the score. (raw)
  24. harness/15_evaluation_doc.py — Harness step 15: write the ONE canonical evaluation record (harness/HARNESS_RESULTS.md) from every cached result, (raw)
  25. harness/_chain_after_segmenter.sh — (raw)
  26. harness/_notion_flow_section.py — One-off: swap the 'The checking screen' section on PROJ-068 for the accurate WhatsApp Flow design. (raw)
  27. harness/_patch_plan_eval.py — One-off: rewrite PLAN.html's evaluation and stack sections into the single combined record. (raw)
  28. harness/_patch_plan_flow.py — One-off: replace the invented checking-screen mockup with the accurate WhatsApp Flow design. (raw)
  29. harness/_patch_speechace.py — One-off: fold the corrected SpeechAce numbers and the Azure-vs-SpeechAce recommendation into the record. (raw)
  30. harness/_r2_audio.sh — (raw)
  31. harness/_r2_scale.sh — (raw)
  32. harness/_r2_seg_maths.sh — (raw)
  33. harness/_r2_text.sh — (raw)
  34. probes/probe1_segment.py — Probe 1: can an audio LLM segment an enumerator EGRA session into subtasks and extract the child's responses? (raw)
  35. probes/probe2_soniox.py — Probe 2: our production STT (Soniox stt-async-v3, Urdu hint, diarization) on the Urdu letter-ID slice. Run: uv run --with requests python probe2_soniox.py <wav> <lang> (raw)

Result tables

The checking form

egra-review-flow.json: the coach's checking screens as a WhatsApp Flow JSON draft (version 7.0, endpoint data model), built on the same pattern as the Islamabad observation form. The three screen pictures in the plan are rendered from this file's example data.

Worked examples

Twelve real windows, each showing the printed text, the clip (Drive, team accounts), the transcript, the enumerator's marks and every model's per-word verdicts side by side.

Private team data (Google Drive, Taleemabad accounts only)