Source-by-source breakdown of what we have across all shared P1-S3 question banks. S4-S6 (DSE) generators are already live and serving the product; this report covers the primary and junior secondary expansion.
Prepared 22 Apr 2026 · essai × talentcoop
We have indexed the full P1-S3 surface from every shared source. Four question banks, 29,174 question records, 35,721 images — all tagged by grade (P1–S3) and ready to power the product. Every record from S4-S6 (DSE) is already live in the app via Essai's own generators.
Per source:
One source pending: UPEP AI Generator (~580 Qs) — account access request needed (see §5).
The original "15 sources" list bundled everything regardless of grade. Re-cut by P1-S3 relevance and current state:
| Source | Grade | Native Qs | On disk now | Status | Effort to land |
|---|---|---|---|---|---|
| UPEP OnlineQB teacher account, 6 books, JSMIA series |
S1-S3 | 14,597 | 14,597 Qs / 29,188 images · grade-tagged per book · ~1% images pending | complete | — |
| EdCity STAR — math packages Chinese-medium + English-medium |
P1-S3 | 11,826 | 510 papers / 11,826 Qs / 6,533 images · 100% with answer | complete | — |
| TSA S3 (2024 + 2025) 24 PDFs, 9ME papers |
S3 | 452 | 452 Qs · 84.9% with answer | complete | — |
| TSA P6 (2019-2024) 20 PDFs, 6ME papers |
P6 | 760 | 760 Qs · 96.9% with answer | complete | — |
| TSA P3 parsed text from prior round |
P3 | 60 | 60 Qs · parsed | complete | — |
| EDB Curriculum (KS1-KS3) 6 PDFs — KS1/KS2/KS3 explanatory notes + content + KLA guide |
P1-S3 | 1,539 sections | curriculum text (no answers — used for topic calibration) | calibration only | — |
| UPEP AI Generator role-gated — access request pending |
P1-S3 (partial) | ~580 | not yet pulled | access pending | ~10 min once access granted |
Every record across the four P1-S3 sources now carries a canonical grade_canon tag in {P1..P6, S1..S3} or a range bundle (P1-P3, P4-P6, P1-P6, S1-S3, P1-S3). Counts below are actual on-disk record counts (jq over canonical JSON), not estimates.
| Source | P1 | P2 | P3 | P4 | P5 | P6 | S1 | S2 | S3 | P1-P3 | P4-P6 | P1-P6 | S1-S3 | P1-S3 | Total |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| UPEP OnlineQB | — | — | — | — | — | — | 3,703 | 5,637 | 5,257 | — | — | — | — | — | 14,597 |
| EdCity STAR | 1,400 | 1,338 | 1,498 | 1,626 | 1,078 | 1,372 | — | — | 158 | 128 | 82 | — | 3,146 | — | 11,826 |
| EDB Curriculum | — | — | — | — | — | — | — | — | — | 126 | 100 | 252 | 303 | 758 | 1,539 |
| TSA P6 | — | — | — | — | — | 760 | — | — | — | — | — | — | — | — | 760 |
| TSA S3 | — | — | — | — | — | — | — | — | 452 | — | — | — | — | — | 452 |
| TOTAL | 1,400 | 1,338 | 1,498 | 1,626 | 1,078 | 2,132 | 3,703 | 5,637 | 5,867 | 254 | 182 | 252 | 3,449 | 758 | 29,174 |
Reading the matrix: single-grade columns (P1..S3) are clean grade labels; range columns are bundled labels that the source provides without finer resolution (e.g. STAR's "Key Stage 3 (S1-S3)" papers, EDB's curriculum guides keyed to whole stages). Single-grade S1-S3 totals are S1: 3,703 · S2: 5,637 · S3: 5,867 (UPEP single-grade plus 452 TSA S3 plus 158 STAR S3); plus 3,449 records bundled under S1-S3. Single-grade P1-P6 spread is balanced (1,078-1,626 per grade) — STAR alone covers it. Bundled "P1-S3" records (758) are entirely EDB curriculum and span the whole P1-S3 surface.
| Source | Grade | Native Qs | On disk now | Net-new value for P1-S3? |
|---|---|---|---|---|
| EdCity OQB Math 14 NSS strands |
S4-S6 | 3,117 | indexed | No — feeds the S4-S6 generators already live in the product |
| DSE MC-Bank 2023 Paper 2 etc. |
DSE | 585 | indexed | No |
| DSE bytopic PDFs 38 of ~66 parsed |
DSE | 2,220 | indexed | No |
| Teacher mock papers (.docx) 55 mocks |
DSE | 1,411 | indexed | No — DSE mock papers |
| EdCity OQB Chem / Bio / ICT | NSS | ~1,700 | parsed | No (cross-subject, not math) |
| Source | Use | Files | On disk |
|---|---|---|---|
| HKAT / PSLE / UK SATs | Calibration / cross-jurisdiction reference | 46 | yes (defer) |
Source indexing is done. The next moves are downstream: wiring the corpus into the product and closing the one outstanding access item.