Inspiration

Nepal's 2023 national assessment (Education Review Office) found nearly 60% of Grade 10 students at or below basic proficiency, with rural students behind in every subject and maths the weakest area. Online tutors don't reach everyone: nearly half of the poorest households still have no internet (Nepal MICS 2024/25), and tuition can be a day's travel away. Almost every household does have a phone that can receive an SMS. Abhyaas (अभ्यास, "practice") brings SEE practice to those students.

What it does

For students (on any keypad phone):

  • Text QUIZ and get one multiple-choice question in a single SMS. Reply A, B, C or D.
  • Code grades every answer. The AI never decides what is correct.
  • A wrong answer gets a teacher-approved hint about that specific mistake and a second try.
  • Switch between maths and science, pick topics, check their score, and get extra practice on their weakest topics.
  • Messy replies like "b ho" are understood by a local Gemma 4 model.
  • ASK: maths concept questions are answered by Gemma 4. "Solve this" requests get a method hint and go to the teacher. Science questions always go to the teacher.

For teachers (web dashboard on the school laptop):

  • Today box: weakest topic, most common mistake, waiting questions.
  • Common mistakes: each question's most-chosen wrong answer and the hint students get.
  • Questions from students: reply by SMS, with a live 160-character counter.
  • Message all students, and send a daily question at a set time from each student's weakest topic.
  • Photo import: photograph a printed question paper, and Gemma 4 turns it into practice questions. Cards that fail the checks show the reason, diagram questions are greyed out as not SMS-suitable, and the teacher approves each one.

Everything students use runs offline on one school laptop. Only the teacher's photo import needs internet.

How it answers the prompt: beyond memorization

  • It teaches the mistake, not the answer. Every wrong option stands for a specific misconception (for example, "used simple interest" or "found only the interest, not the amount"). The student gets a hint about that mistake and a second try, so they have to rethink it rather than just see the key.
  • No answer on the first miss. The worked solution appears only after a second wrong attempt.
  • It connects concepts. The questions are built so each wrong answer is a common confusion: mass and weight, HCF and LCM, interest and amount. Students learn the difference, not a fact.
  • It applies concepts. Questions are word problems (VAT after a discount, compound interest, probability with dice, survey sets), so students apply a method to a situation.
  • It won't do the homework. For "solve this" requests, ASK gives a method hint and sends the question to the teacher, so the student still does the thinking.
  • Practice follows understanding. Adaptive practice returns to each student's weakest topic and re-asks missed questions a few days later, to check the idea stuck.

How I built it

keypad phone -> SMS -> Android phone running Termux (my open-source gateway script) -> school laptop running Node.js, Express and SQLite -> reply by SMS.

  • Gemma 4 E4B runs locally through Ollama, so student-facing features need no internet. It parses messy replies, answers maths concept questions in simple English or Romanized Nepali, and drafts an explanation for each wrong option.
  • Gemma 4 26B A4B (gemma-4-26b-a4b-it) through the Gemini API reads photos of question papers. This is the only feature that uses the internet, and the photo is sent to the Gemini API.
  • Every SMS must fit 160 GSM-7 characters. One validator is the only way a question enters the bank, and further validators reject Gemma drafts that are too long, give away the answer, invent numbers or state the final calculation.
  • The gateway never sends a message twice and the server never grades a retried request twice.
  • 154 automated tests, including the real gateway script running against fake Termux commands.
  • Tested end to end on a real keypad phone and an Android gateway.

Safety by design

The model never answers a student's science question: science ASK always goes to the teacher. Gemma-drafted explanations and questions reach students only after teacher approval.

Challenges

  • SMS is tiny, so I wrote the length checks first and made every message pass them.
  • A first-draft maths question had two options with the same value, so equal-value detection became part of the validator.
  • Real phones: dual-SIM replies going out from the wrong SIM, SMS permissions, Termux:API setup, and a port conflict with a local database.
  • The gateway's error messages contained a student's number and the SMS text, so it now logs only the exit code and error.

What I learned

Grading should be plain code, and a small model should only do jobs where a wrong answer can't hurt a student. Teacher approval matters more than any single model check.

What's next

A pilot with one school, multi-school login, short lessons by SMS, and entrance and Lok Sewa practice.

Built during the hackathon

All code in this repository was written between Oct 7 and Oct 8, 2026, inside the hackathon window. I built a first prototype on Oct 7 and rebuilt the project from scratch on Oct 8 at Hacktoberfest Hack Day Dhulikhel. The dashboard figures in the video and screenshots are seeded demo data. I used Claude Code (Opus 5.5) as a coding assistant.

Built With

Share this project:

Updates