Inspiration
Middle school is where students quietly decide whether they're "a math person." The real bottleneck isn't teaching - it's diagnosis. A teacher can see that an answer is wrong but can't scale the why to 28 students every night. Meanwhile most AI tutors just hand over the answer, which kills the learning. We wanted one tool that closes the whole loop: understand why you're wrong → learn why the method works → practice it → get faster than a calculator.
What it does
Type or photograph any middle-school problem and it flows through six modules that share a single Math Skill Base (31 skills across all 12 curriculum strands):
- Solve - classifies the problem, shows why it picked the method, and solves it step-by-step.
- Diagnose - takes a wrong answer and pinpoints the exact misconception (e.g. "you added the sides instead of squaring them").
- Learn - browse the whole curriculum; every topic teaches the story + method + a worked example + auto-graded practice.
- Mental Math - 11 Vedic / mental-math techniques plus an interactive Abacus (Soroban) trainer.
- Speed Challenge - solve it slow, learn the Vedic trick, solve it fast; watch your time drop.
- Story - turns any formula into a vivid metaphor + inline SVG + mnemonic + real-world sighting.
Plus a Teacher dashboard (a live class misconception heatmap) and a gamification layer (XP, levels, streaks, achievements, confetti).
How we built it
Backend: FastAPI + a JSON Math Skill Base. The math is deterministic - SymPy computes every answer and an independent second engine cross-checks it. A result is only shown when both engines agree:
$$\text{answer shown} \iff \text{SymPy}(P) \equiv \text{engine}_2(P)$$
so a wrong result can never reach the screen. The quadratic solver, for instance, returns the verified roots of \(ax^2 + bx + c = 0\):
$$x = \frac{-b \pm \sqrt{b^{2} - 4ac}}{2a}$$
Diagnosis without an LLM: for the matched skill we simulate each documented misconception and match the student's wrong answer to it. If a right triangle has legs \(a\) and \(b\) and the student writes \(a+b\) instead of \(\sqrt{a^{2}+b^{2}}\), we detect the "added the legs" misconception exactly - grounded, not guessed.
Frontend: a single-file app (Tailwind, no build step) with a light/dark design system, canvas confetti, a WebAudio sound engine, and an interactive SVG/HTML abacus.
Optional Claude layer adds handwriting OCR and warmer narration when an API key is present; the whole app runs and demos with no key and no network.
Challenges we ran into
- Correctness is existential in a math app. We refused to trust an LLM with arithmetic and built a two-engine verifier instead.
- Parsing natural language into clean equations without dragging English words like "solve for" into the solver.
- Diagnosing why an answer is wrong deterministically - solved by simulating the known misconceptions per skill.
Accomplishments that we're proud of
- Every answer is provably verified (71 automated assertions pass).
- Diagnosis pinpoints the exact misconception, not just "wrong."
- An interactive Abacus trainer + 11 mental-math techniques with practice.
- Runs fully offline - ideal for a low-connectivity classroom.
What we learned
Pedagogy beats horsepower: making formula selection and the reason a method works visible teaches more than a black-box answer. Deterministic math, with an LLM only where it adds warmth, is both safer and cheaper.
What's next for Numix
Fraction/ratio auto-solving, animated abacus add/subtract tutorials, per-topic mastery rings, a daily challenge, and a classroom pilot to validate the misconception taxonomy.
Built With
- abacus
- anthropic-claude
- css3
- edtech
- fastapi
- ffmpeg
- html5
- javascript
- playwright
- pydantic
- python
- rest-api
- svg
- sympy
- tailwind-css
- uvicorn
- vedic-mathematics
- web-audio-api
Log in or sign up for Devpost to join the conversation.