Inspiration

Every Nepali student knows रट्टा, rote memorization. You grind MCQs until you recognize answers, but the exam tests whether you understand. Feynman had the fix: if you can't explain it simply, you don't know it. Nobody has a patient friend at 5 AM to explain thermodynamics to, so we built one. Like Eklavya, who mastered archery with no teacher, our students teach themselves.

What it does

A recommendation engine builds a study plan tailored to each student's exam, target, and pace. To prove they've truly learned something, students teach: they explain a topic out loud to a curious AI student that asks what a confused friend would ask, catches misconceptions, and grades coverage against the real IOE syllabus. Every fumbled term becomes tailored practice MCQs and flashcards. Plus daily lessons with streaks and XP, weekly mocks replicating the real IOE paper, QR-code duels with friends, and a live teacher dashboard. Fully offline, on any phone.

How we built it

  • Flutter + Riverpod + Hive app with on-device speech-to-text and TTS (the AI student gets a "curious kid" voice).
  • Node/Express proxy to Ollama (qwen2.5:3b) in Docker behind a Cloudflare tunnel, with JSON-schema-forced output and defensive normalization.
  • Fully offline mode: quantized Qwen2.5-1.5B (GGUF, ~940 MB) running on-device via llama.cpp, using the same prompt and syllabus rubric as the server.
  • The official IOE syllabus PDF parsed into a structured rubric so the coach grades point-by-point against it.
  • Next.js 16 + Supabase teacher panel sharing the same database as the app.

Challenges we ran into

  • The mic kept hearing the AI's own voice. We fixed it with a strict state machine where only one of STT/TTS is ever active.
  • Small models ignore your format, so we used schema-forced decoding plus clamp/filter/fallback on every response.
  • Keeping the AI student warm in tone while scoring honestly: a confident wrong answer must score low.
  • The on-device 1.5B model sometimes agreed with misconceptions the 3B catches. We measured this in a side-by-side playground before building, and tiered the engines accordingly.

Accomplishments that we're proud of

  • A voice-first Feynman loop that catches "satellites float because there's no gravity in space" and responds with one perfect question instead of a lecture.
  • The whole AI coach running offline on a phone, grading against the real syllabus.
  • True offline-first architecture: every feature has a real backend and a local fallback behind one interface, so the full demo runs with zero internet.
  • Handling real, messy speech (fillers, run-ons, no punctuation) and judging the idea, not the delivery.

What we learned

Prototype the prompt before the product. Never trust a small model's output shape. Offline-first is an architecture, not a feature. Voice UX is a state-machine problem more than an AI problem. And the thesis held: explaining out loud exposes gaps that MCQ grinding hides. We caught our own misconceptions while testing.

What's next for Eklavya (एकलव्य)

Feed Sunday mock results back into next week's plan weighting, polish Nepali voice replies, add teacher authentication, and go beyond IOE. The engine is exam-agnostic, so CEE, Lok Sewa, and KU's CBT only need a new syllabus rubric and question bank.

Built With

Share this project:

Updates