ktt-math-tutor / process_log.md
johneze's picture
feat: KTT Edge-AI Child Math Tutor โ€” AIMS Hackathon S2.T3.1
1433553 verified
# process_log.md โ€” S2.T3.1 ยท AI Math Tutor for Early Learners
**Candidate:** John Eze
**Challenge:** S2.T3.1 โ€” Tier 3
**Date:** 2026-04-24
**Hard cap:** 4 hours
---
## Hour-by-Hour Timeline
| Time | Activity |
|------|----------|
| 00:00โ€“00:45 | Read full brief end-to-end. Examined seed files (curriculum_seed.json, diagnostic_probes_seed.csv, parent_report_schema.json, child_utt_sample_seed.csv). Scaffolded repository structure: tutor/ package, data/, assets/, tts/, requirements.txt, README.md, SIGNED.md. |
| 00:45โ€“01:30 | Built `generate_curriculum.py` (60+ item generator). Built `tutor/curriculum_loader.py`. |
| 01:30โ€“02:15 | Implemented `tutor/adaptive.py` โ€” BKT per sub-skill with update rules + Elo baseline. Built `kt_eval.ipynb` skeleton with held-out replay simulation. |
| 02:15โ€“02:45 | Built `tutor/visual.py` (PIL counting images), `tutor/feedback.py` (EN/FR/KIN feedback table), `tutor/asr_adapt.py` (Whisper-tiny stub + langdetect). |
| 02:45โ€“03:15 | Built `tutor/db.py` (encrypted SQLite store) and `tutor/dp_sync.py` (ฮต-DP aggregation design). |
| 03:15โ€“03:45 | Built `demo.py` (Gradio child-facing UI: learner select, tutor loop, parent view). |
| 03:45โ€“04:00 | Built `parent_report.py`. Completed `footprint_report.md`, `README.md`, `process_log.md`. Final push. |
---
## LLM / Tool Use Declaration
| Tool | Why used |
|------|----------|
| GitHub Copilot (Claude Sonnet 4.6) | Code scaffolding, boilerplate generation, docstrings, README drafting. All logic reviewed, debugged, and adapted by me. |
### Three sample prompts I actually sent
1. *"Build the BKT update rule for 5 sub-skills โ€” P_know, P_learn, P_guess, P_slip โ€” with a mastery threshold of 0.85 and return the next best item."*
2. *"Write a PIL function that renders N emoji-like circles on a white canvas and saves to assets/, returning the image path and the correct count."*
3. *"Generate a Gradio demo with three tabs: learner avatar select, tutor question-answer loop with image display and mic/text input, and a password-protected parent report view."*
### One prompt I discarded and why
I drafted a prompt asking Copilot to *"fully fine-tune TinyLlama with QLoRA for numeracy feedback generation"*. I discarded this because (a) 4-hour time cap, (b) TinyLlama int4 GGUF is ~650 MB which blows the footprint budget if bundled, and (c) rule-based + template feedback is faster, more predictable, and fully explainable for a child-safety product. LLM enhancement can be added post-hackathon.
---
## Single Hardest Decision
The hardest decision was choosing between a **Deep Knowledge Tracing (DKT)** GRU model and **Bayesian Knowledge Tracing (BKT)**. DKT would likely score higher AUC on complex interaction sequences but requires PyTorch, adds ~50 MB to the footprint, and takes 30+ min to train even on CPU. BKT is interpretable, has zero training cost, runs in microseconds per update, and is well-understood in educational research. I chose BKT as the primary model and kept the Elo baseline for comparison in `kt_eval.ipynb` โ€” this satisfies the brief's AUC comparison requirement while staying within the 75 MB footprint and 4-hour time budget.
---
*Log updated continuously throughout the session.*