Inspiration
Students study from lecture videos, slides, and textbooks scattered across different places. A general chatbot can explain anything, but it can't tell you where in your course the answer comes from, and it has no idea what you already know. We wanted a study companion that is accountable to your material and adapts to you.
What it does
StudyMentor turns a student's own course files into a source-cited knowledge base, then tutors and quizzes from it.
- Multimodal ingestion: PDFs (per page), PPTX decks (per slide, including speaker notes), and lecture video or audio (Whisper transcription, grouped into timestamped ~60 s windows) are chunked with a source locator.
- Topic structure: an LLM pass extracts the main topics, tags every chunk to one, and proposes prerequisite links between topics.
- Grounded tutor: answers use only retrieved excerpts and carry inline citations that open the exact page (
#page=N) or timestamp (#t=SECONDS). If the material doesn't cover a question, the reply is flagged and any outside knowledge is labelled as unverified. - Adaptive quizzes: MCQ, short-answer, and numerical questions, each tagged with topic, difficulty, and source location. The weakest or unseen topics are asked first, which doubles as a diagnostic for new students.
- Cited feedback and dashboard: every answer gets feedback linked to its source chunk. The dashboard shows per-topic mastery, prerequisites, and likely misconceptions from recent wrong answers.
How we built it
We reused the router-and-specialist-agents pattern from our capstone, a multi-agent academic project mentor, and applied it to a new domain. The agents are Ingestion, Curriculum, Tutor, Assessment, Verifier, and Learner Model. Plain Python orchestration routes each request.
We kept the stack deliberately light: FastAPI, SQLite, a single static HTML/JS page, pure-Python BM25 retrieval, and Groq-hosted models (gpt-oss-120b for generation, gpt-oss-20b as the verifier, Whisper for audio). There are no local ML models, so it runs on a laptop.
Question verification. Each question is generated from a single source chunk. A second model then answers it blind from the same excerpt. MCQ letters and numeric answers must match the key, and questions the verifier cannot answer from the source are dropped. Near-duplicate questions are rejected using token overlap against the topic's history.
Learner model. We use Bayesian Knowledge Tracing per topic. After an answer with slip rate $s$ (depending on difficulty) and guess rate $g$ (0.25 for MCQ, 0.05 otherwise), the mastery estimate $p$ updates as:
$$ p' = \begin{cases} \dfrac{p(1-s)}{p(1-s) + (1-p)g} & \text{if correct} \[2ex] \dfrac{ps}{ps + (1-p)(1-g)} & \text{if incorrect} \end{cases} \qquad p_{t+1} = p' + (1-p')\,T $$
with learn rate $T = 0.15$ and prior $p_0 = 0.3$. To model forgetting, mastery decays toward the prior with a 7-day half-life:
$$ p_{\text{eff}} = p_0 + (p - p_0)\cdot 0.5^{\Delta t / 7} $$
Question difficulty and topic selection both use $p_{\text{eff}}$.
Challenges we ran into
- Refusing correctly. With BM25, relevance scores depend on corpus size and term frequency, so a fixed cutoff for "not covered" is hard to calibrate. We combine a score threshold with an explicit "covered?" judgment from the model, so a weak match alone does not trigger an answer.
- Trustworthy answer keys. A learner model is only as good as its questions. Cross-model verification catches many bad keys, but it is not perfect.
- Moving model availability. Mid-build, the Llama models we started with became unavailable on our API tier, and we had to switch model families. Model names are now configurable.
- Same-family verification. Our final generator and verifier are both from the same model family, which weakens the independence of the check.
What we learned
Grounding is mostly a product decision. Showing the user a flagged "this isn't in your material" response is more trustworthy than a fluent answer without a source. We also learned that structuring the system as separate agents made it easy to port our capstone architecture to a different problem.
Whats Next for StudyMentor: A Source-Grounded Adaptive Study Companion
Figure and diagram understanding for slides and textbooks, a RAGAS-based evaluation with a team-built test set, simulated-student runs to measure mastery gains and repetition rate, a prerequisite flow map, a forgetting-curve study schedule, and audio and Hindi support.
Try it
Github Link - https://github.com/sumaiyah-roses/studymentor-adaptive-tutor
Demo Link
https://drive.google.com/file/d/1B-HnMKCMCr4kf7T5hPNYmAIUO-F7e8zq/view?usp=sharing
Built With
- aiagent
- bayesian-knowledge-tracing
- bm25
- fastapi
- gpt-oss
- groq
- html5
- javascript
- llm
- pypdf
- python
- python-pptx
- rag
- sqlite
- whisper
Log in or sign up for Devpost to join the conversation.