Utsab Adhikari
All work

Case study

AI LMS

AI LMS turns a topic into a full learning path. Claude generates the module structure and multiple-choice quizzes; the app scores answers, tracks mastery per topic, and runs a live tutor over a WebSocket so learners can ask follow-ups without leaving the lesson.

Live demo Source

Architecture

AI LMS architecture: React + Vite, FastAPI, Claude, Supabase.

Key decisions & tradeoffs

EMA mastery instead of raw scores

Each quiz submission nudges an exponential-moving-average mastery value per topic rather than overwriting it. Recent performance weighs more, but one bad quiz doesn't wipe progress — and the next generated module can target the lowest-mastery topics.

Realtime tutor over WebSocket

The tutor runs on a WebSocket channel so answers stream in and the connection stays open across a lesson, instead of a request per question.

UUID-based learners, no auth (tradeoff)

Learners are identified by a UUID with no login — fast to try, but state isn't portable across devices. Auth is the first thing I'd add for a real deployment.

What I'd do differently

I'd add real auth, cache Claude's generated curricula to cut token cost and latency on repeat topics, and add spaced-repetition scheduling on top of the mastery signal.

All workGet in touch