| # TutorDesk AI β Implementation Plan |
|
|
| Build plan for the Build Small Hackathon (deadline **June 15, 2026**). Track progress in |
| `progress.md`; product rationale in `PRD.md`. |
|
|
| ## Guiding principles |
|
|
| - **Demo-first:** every phase should move the end-to-end demo forward. |
| - **Reuse over build:** NCERT_Dataset + pretrained models do most of the work. |
| - **Narrow scope:** Classes 6β10, Math + Science, CBSE/NCERT, English (+ Hindi slice). |
| - **Badges are cheap multipliers** β bake them into the architecture, don't bolt on later. |
| |
| --- |
| |
| ## Architecture (decided 2026-06-11) |
| |
| Laptop can't hold the models β **all models self-hosted on Modal** as scale-to-zero GPU |
| functions (`serving/modal_app.py`). The **HF Space = thin Gradio UI** calling Modal by name. |
| No external APIs. Models: MiniCPM-V 4.5 (8B), fine-tuned Qwen3-4B, **Tiny Aya |
| `CohereLabs/tiny-aya-fire` (3.35B)**, FLUX.1-schnell β total β27B. |
|
|
| ## Phase 0 β Project setup |
|
|
| - Repo scaffolding per CLAUDE.md structure; `requirements.txt`; `.env.example`. |
| - HF account + empty **Space**; **Modal account + CLI auth** (`modal token set`). |
| - `serving/modal_app.py` skeleton: one scale-to-zero function per model. |
|
|
| **Exit:** `app.py` shows a "hello" Gradio app live on the Space; `modal deploy` succeeds. |
|
|
| --- |
|
|
| ## Phase 1 β Core text generation (no fine-tune yet) |
|
|
| Get the product working with the **base** Qwen3-4B so UI/pipelines aren't blocked on training. |
|
|
| - `serving/modal_app.py::Qwen` β load base Qwen3-4B on Modal; `models/qwen.py` calls it. |
| - `agents/` β implement the 5 agents (curriculum, question_gen, difficulty, answer, report) |
| as prompt-driven functions over Qwen. |
| - `pipelines/weekly_pack.py` β orchestrate the 5 agents β worksheet+homework+quiz+key+note. |
| - `utils/pdf.py` β print-ready PDF export. |
|
|
| **Exit:** **Feature 2 (Weekly Teaching Pack)** works end-to-end from text inputs β PDF. |
|
|
| --- |
|
|
| ## Phase 2 β Vision (Feature 1) |
|
|
| - `serving/modal_app.py::MiniCPM` β load MiniCPM-V 4.5 on Modal (4.6 fallback flag). |
| - `pipelines/worksheet_from_textbook.py` β image/PDF β extracted topic/concepts β feed |
| Phase 1 pipeline. |
| - `utils/image.py` β PDF page rasterization, basic preprocessing. |
|
|
| **Exit:** **Feature 1** works β photograph a chapter β worksheet+quiz+key. |
|
|
| --- |
|
|
| ## Phase 3 β Dataset + fine-tune on Modal (Well-Tuned / Tiny Titan / Modal) |
|
|
| - `data/prep_generation.py` β NCERT_Dataset β ChatML JSONL (objective β generation). |
| - `data/prep_difficulty.py` β NCERT `Difficulty` column β ChatML (objective β‘ classify). |
| - `data/prep_grading.py` β synthesize marking-scheme + simulated-student-answer + marks |
| triples (objective β’ grading); ~1β2k rows. |
| - `finetune/train_modal.py` β LoRA SFT of Qwen3-4B on Modal; merge + export GGUF. |
| - **Publish the fine-tuned model to the HF Hub** (claims Well-Tuned). |
|
|
| **Exit:** Fine-tuned Qwen3-4B published; swapped into the pipelines; ~6β8k training examples. |
|
|
| --- |
|
|
| ## Phase 4 β Photo Auto-Grading (Feature 5) |
|
|
| - `pipelines/auto_grade.py` β MiniCPM-V reads answer sheet β fine-tuned Qwen3-4B grades |
| against marking scheme β marks + per-step breakdown + auto-drafted parent note. |
|
|
| **Exit:** **Feature 5** works on neat/printed answer sheets. |
|
|
| --- |
|
|
| ## Phase 5 β Multilingual (Cohere) + Diagrams (FLUX) |
|
|
| - `serving/modal_app.py::TinyAya` β host `CohereLabs/tiny-aya-fire`; language selector on |
| every output (Feature 3). |
| - `serving/modal_app.py::Flux` β host FLUX.1-schnell; diagrams embedded in worksheet PDFs |
| (Feature 4). |
| - Graceful fallback when offline (English-only / no images). |
|
|
| **Exit:** **Features 3 & 4** work; sponsor claims for Cohere + BFL satisfied. |
|
|
| --- |
|
|
| ## Phase 6 β Badge layer & polish |
|
|
| - **Off the Grid / Llama Champion:** local mode β MiniCPM-V + Qwen3-4B via llama.cpp, toggle |
| to disable all cloud calls. |
| - **Sharing is Caring:** `traces/` β capture agent traces β publish HF dataset. |
| - **Off-Brand:** custom `gr.Server` frontend, mobile-first polish. |
| - **Field Notes:** build/report blog post. |
|
|
| **Exit:** all badges claimable; app polished. |
|
|
| --- |
|
|
| ## Phase 7 β Submission |
|
|
| - Record **demo video** (90-min β 10-min teacher story). |
| - **Social post.** Final Space deploy + README with sponsor/badge checklist. |
| - Submit before **June 15, 2026**. |
|
|
| --- |
|
|
| ## Sponsor / award coverage (target) |
|
|
| | Claim | Phase | |
| |---|---| |
| | OpenBMB ($10k) β MiniCPM-V | 2, 4 | |
| | Modal ($20k credits) β training job | 3 | |
| | Cohere ($5k) β Aya | 5 | |
| | Black Forest Labs ($3k) β FLUX | 5 | |
| | Best Agent ($1k) β 5-agent pipeline | 1 | |
| | Well-Tuned + Tiny Titan ($1.5k) β published 4B fine-tune | 3 | |
| | Sharing is Caring β agent traces dataset | 6 | |
| | Off the Grid + Llama Champion β local mode | 6 | |
| | Off-Brand ($1.5k) β gr.Server | 6 | |
| | Best Demo ($1k) + Field Notes | 6, 7 | |
|
|
| ## Risks / watch-items |
|
|
| - **Handwriting OCR** unreliable β demo with printed answers; roadmap item. |
| - **Laptop memory** for 8B + 4B β use GGUF/quantized; lazy-load models. |
| - **NCERT subject coverage** may skew β verify collection, supplement if thin. |
| - **Time:** if behind, Phases 1β4 are the must-win core; 5β6 are sponsor add-ons. |
|
|