-
-
Login page: MathTutor AI — sign in with email or Google to start an adaptive tutoring session tailored to where you actually are.
-
Dashboard: today's lesson, 6-day streak, weekly progress, and AI-generated insights — all pulled from real tracked activity.
-
Lessons: 12 topics with real per-topic mastery and completion — Mastered, Practiced, or Learning, not just checkmarks.
-
Profile: editable stats — notice enrolled course (Algebra II) vs. assessed level (Pre-Algebra), which the AI tutor teaches to.
-
Knowledge Map: every topic as a node, color-coded by mastery — a visual, connected view of what's learned vs. what's next.
-
AI Tutor catching a real mistake: an inverted ratio setup, explained step-by-step with rendered math, not just corrected.
-
Progress: learning score, XP, accuracy, retention, and a concept-mastery radar chart — real analytics, not fake charts.
-
Achievements: real XP-based rank (Skilled Solver) and badges that unlock from actual activity, not fixed placeholders.
Inspiration
Asking an AI tutor a question and getting a lecture assuming I was working on something else. General AI chatbots don't know where a student actually is — a real tutor does. That gap is the whole project.
What it does
An adaptive math tutor built on three things: a placement test that locates the student on a real curriculum, a mastery map that tracks progress per topic (not stateless chat), and a Claude-powered tutor that teaches — escalating hints, explaining mistakes, always answering what was actually asked.
It also renders real math instead of plain text — a fraction shows up as an actual fraction, not a/b:
$$\frac{a}{b} + \frac{c}{d} = \frac{ad + bc}{bd}$$
Students can edit their profile (grade, level, favorite topic), and it actually changes how the tutor teaches — it separately tracks enrolled course vs. assessed level and teaches to the real level.
How we built it
Next.js 16 + TypeScript + Tailwind, Zustand state synced to Postgres (Neon) across devices, NextAuth (Google + email/password), Claude API for tutoring, Resend for email, deployed on Vercel.
Challenges we ran into
- A race condition where logging back in sometimes sent returning users through onboarding again — local state was stale before the real profile loaded from the server.
- An early AI tutor endpoint was reachable without login — anyone could run up API costs. Had to run a real security pass, not just build features.
- Getting the tutor to just answer the question instead of gatekeeping on topic relevance took real prompt iteration.
Accomplishments that we're proud of
Every security issue found got fixed and verified live, not just flagged. Sync logic survives closed tabs and multi-device use without losing progress. The tutor visibly adapts per student, not just per question.
What we learned
Adaptive tutoring is mostly a state-management problem, not a prompting problem — the hard part is knowing the truth about the student, not phrasing the answer \((s, \text{not} f(s))\). Trust costs almost nothing to build (a one-line AI-limitations note) and matters a lot.
What's next for MathTutor AI
Verified email domain so password reset works for all users, real study-plan persistence, fixing the last sync edge case (two devices at once), and legal review before any use beyond family.
Built With
- ai
- anthropic
- bcrypt
- claude
- edtech
- education
- framer-motion
- google-oaut
- katex
- lucide-react
- neon
- next-auth
- next.js
- node.js
- postgresql
- react
- react-markdown
- recharts
- resend
- tailwindcss
- typescript
- vercel
- zustand
Log in or sign up for Devpost to join the conversation.