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
- android
- express.js
- gemini-api
- gemma
- javascript
- node.js
- ollama
- react
- sms
- sqlite
- termux
- vite
Log in or sign up for Devpost to join the conversation.