Eli sits beside your kid on the iPad — pen-and-paper canvas, gentle hints, and a clear voice that only speaks when asked. No nagging, no flashy rewards. Just the room to think.
Every feature exists because a kid actually needs it for a Gymi-style word problem — not because it looks good in a screenshot.
A gridded notebook canvas with Apple Pencil precision. Sketch the problem, write your work, box your answer — like you would on paper.
Draggable, snap-to-edge tools that latch onto the pen. Geometry stops being a guessing game.
Tap "Hint" and get the smallest possible push — usually a question, not an answer. The thinking stays with the kid.
Eli doesn't pop up uninvited. A small avatar in the corner — tap it when you want help, ignore it when you don't.
Eli reads the handwritten work and points to the step where things went sideways — not just whether the final number is right.
A four-function calculator lives in the sidebar. Keyboard shortcuts work too — the way arithmetic should feel.
Ten months from now, the Kanton Zürich Kurzgymnasium ZAP sits on Monday 8 March 2027. Here's how we plan to use the time — phase by phase, with the formula that drives every daily session, and the exact data we record to make it work.
The plan is diagnostic + adaptive priority queue. After a baseline paper, every daily session is generated from a per-skill priority score; weak skills surface first, mastered skills reappear on a spaced schedule, and one timed mock paper per week tracks readiness. There is no curriculum to "get through" — the queue regenerates each day from real performance data.
Cognitive science of learning gives us three findings that are unusually well-replicated for this kind of decision. We map each one to a concrete app behaviour rather than to an aspirational principle.
Mixing different problem types within a single session beats drilling one type at a time. The student must choose a strategy each time — which is exactly what the exam tests.
Effect size d = 0.42–0.79 on math tests. Rohrer et al.
Re-encountering a problem after a 2–7 day gap, with the answer hidden, is dramatically better than re-reading worked solutions. We schedule mastered skills at expanding intervals (3d → 7d → 14d → 30d).
Hundreds of replications. Kang, 2016.
Test → restudy what was missed → test again next session. The single highest-yield pattern for the time invested. Every "Check work" event records a self-marked outcome that feeds the next day's queue.
Best in show for transfer. APA, Successive Relearning.
Daily volume stays roughly constant; what changes is the mix between adaptive practice and timed mock papers. The shift toward simulation in the final eight weeks is deliberate — exam-format familiarity is a separate skill from math itself.
| Phase | When | Daily mix | Mock papers |
|---|---|---|---|
| 0Diagnostic | Week 1 (now) | One untimed past paper (kurz 2024) | — |
| 1Build core | Jun–Aug 2026 | 100% adaptive queue, top-15 skills first | Optional, untimed |
| 2Broaden | Sep–Dec 2026 | 80% queue / 20% mock | 1 timed paper / week |
| 3Simulate | Jan–early Mar 2027 | 40% queue / 60% mock | 2 timed papers / week |
| 4Taper | Final week | Light review only — no new material | — |
The daily queue is generated by a single priority score per skill. Top-3 skills × 2–3 questions each, interleaved order, plus 1–2 spaced-review items mixed in. That's the entire engine.
-- Per-skill priority, computed nightly priority = (1 − mastery) × kurz_frequency × recency_weight -- Daily queue (6–8 questions) queue = top_3_skills(priority) × 2–3 questions each + 1–2 spaced_review items → shuffled (interleaved order)
mastery — rolling % correct on this skill across the last N attempts (we'll start with N = 5).kurz_frequency — number of past kurz questions tagged with this skill as primary, confidence ≥ 0.7. Pre-computed from question_skills.recency_weight — boost for skills appearing in 2022–2025 papers. Linear weight: 1.0 for 2025, 0.95 for 2024, … down to 0.5 for 2015.3d → 7d → 14d → 30d) and falls out of the priority pool unless mastery decays.
The existing eli_math.sqlite already holds 251 kurz questions, 423 skills, 1127 question→skill links with confidence + role, and source PDFs/images. We add three tables to track what the student does.
-- Every "Check work" event becomes a row. CREATE TABLE attempts ( id INTEGER PRIMARY KEY, question_id INTEGER NOT NULL REFERENCES questions(id), started_at TEXT NOT NULL, completed_at TEXT, self_marked TEXT CHECK (self_marked IN ('correct', 'partial', 'wrong', 'skip')), elapsed_seconds INTEGER, notes TEXT ); -- Rolling mastery state per skill, recomputed on each attempt. CREATE TABLE skill_mastery ( skill_id INTEGER PRIMARY KEY REFERENCES skills(id), attempts INTEGER NOT NULL DEFAULT 0, correct INTEGER NOT NULL DEFAULT 0, last_seen_at TEXT, next_review_at TEXT, -- spaced-review schedule mastery_state TEXT CHECK (mastery_state IN ('new', 'learning', 'mastered', 'lapsed')) ); -- Each timed mock-paper sitting. CREATE TABLE mock_papers ( id INTEGER PRIMARY KEY, gymi TEXT, year INTEGER, started_at TEXT, completed_at TEXT, elapsed_seconds INTEGER, score_raw REAL, score_max REAL, notes TEXT );
The website exposes the engine through four screens. We build them in priority order; the first one is 90% of daily usage and unlocks everything else.
The daily queue. 6–8 problems, one per screen, canvas to work on, "Check work" reveals the rendered solution. She self-marks correct / partial / wrong; that single action drives mastery, the priority queue, and the spaced schedule.
Pick a kurz year (2015–2025), timed clock, all questions in order. Outputs a per-skill scorecard at the end that feeds back into the priority queue. Becomes weekly from September; twice-weekly from January.
The skill mind map (already prototyped in tmp/skill-mindmap-kurz.html) augmented with mastery % per skill. An exploration view, not the daily-practice surface.
One-page weekly summary: weakest skills, recent mistakes, mock-paper trend. Copy-paste into a message to the tutor. The handoff that lets paid instruction stay targeted.
External instruction (tutor or paid prep course) handles teaching new concepts; the website handles drill volume and progress. The tutor report is the integration point — it tells the tutor what to focus on next session, with no parent translation in between.
The corpus is already in place. The plan rides on top of existing data — no annotation work is required to begin.
-- From data/eli_math.sqlite 22 kurz PDFs -- 2015–2025, tasks + solutions 251 kurz questions -- every one annotated: -- task_type, expected_answer_type, -- difficulty, has_diagram, points 423 skills -- across 11 domains, tiered 1127 q→skill links -- primary/supporting + confidence 413 question→answer rows 413 problem→solution links -- Top-15 most-tested kurz skills cover ~70% of every paper. -- These are the priority targets for Phase 1.
Five Gymi-style problems on one topic — geometry, fractions, percentages, time. Three to five minutes each.
Read the problem, sketch on the canvas, use the calculator. The thinking is the point.
Tap "Check work." Eli walks through the steps with you and shows what to revisit next time.
Sign up for early access. We'll send a single email when eli is ready for your iPad.