💡 Inspiration Students don't fail because they lack information — they drown in it. Lecture recordings, slide decks, and textbooks are scattered across a dozen tabs, and general-purpose AI chatbots happily answer from anywhere, confidently hallucinating facts that have nothing to do with the student's actual syllabus. Worst of all, they have no idea what the student already knows, so a struggling beginner and a bored expert get the exact same answer. We built StudyGround around one belief: a study companion should be grounded in your real course material and should model you as a learner. That combination — verifiable sources plus an adaptive learner model — is what turns AI from a parlor trick into a genuine tutor. 🎯 What It Does StudyGround is a source-grounded, adaptive AI study companion. It has four pillars:
- Multimodal Knowledge Base & Source Grounding — Answers come with inline citations (chapter, section, video timestamp, slide number) and collapsible evidence cards showing the exact excerpt. Out-of-syllabus queries trigger a source-grounding guardrail instead of a hallucination.
- Adaptive Assessment — Generates MCQs and short-answer questions at Easy/Medium/Hard tiers, grades instantly, and diagnoses misconceptions with grounded explanations.
- Learner Model (BKT) — Bayesian Knowledge Tracing updates per-topic mastery after every response.
- Prerequisite Knowledge Graph — A curriculum DAG that locks, unlocks, and recommends topics as mastery grows. 🛠️ How We Built It Stack: Vite + React 19 + TypeScript + Tailwind CSS v4, with a client-side router and strongly-typed data contracts. No backend was required for this prototype round — the entire RAG simulation, BKT engine, quiz pool, and citation lookup run locally against realistic sample data. The core learner model uses Bayesian Knowledge Tracing. After each observation, we compute the posterior probability the student knows the skill, then apply the learning transition: $$ P(L_{t} \mid \text{correct}) = \frac{P(L_{t-1})\,(1 - P(S))}{P(L_{t-1})\,(1 - P(S)) + \bigl(1 - P(L_{t-1})\bigr)\,P(G)} $$ $$ P(L_{t}) = P(L_{t} \mid \text{obs}) + \bigl(1 - P(L_{t} \mid \text{obs})\bigr)\,P(T) $$ where (P(G)=0.25) (guess), (P(S)=0.10) (slip), and (P(T)=0.20) (learn). A topic is MASTERED at (\ge 70\%), READY when its prerequisites are met, and LOCKED otherwise. We also layered in an SM-2-style spaced-repetition scheduler for retention estimates. The data contracts are simple and typed, e.g. a knowledge graph node: { "id": "functions", "title": "Functions", "chapter": 4, "tier": 3, "unlock_threshold": 0.75 } 🧗 Challenges We Faced
- Making grounding feel real without a backend. We built a keyword-routed retrieval simulation that maps queries to curated source chunks, complete with timestamps and page numbers, so the citation UX could be evaluated honestly.
- Tuning the BKT dynamics. Early parameters made mastery jump on a single lucky guess. Adding meaningful guess/slip rates fixed the feedback loop.
- Graph + mastery consistency. Deciding when a topic unlocks required careful prerequisite traversal — a child stays locked until every parent crosses its own threshold, which we had to verify against a demo student mid-progress.
- Keeping the scope honest. We deliberately declined out-of-scope questions rather than showing off, reinforcing the product's core promise: trust over coverage. 🔮 What's Next Real multimodal ingestion (Whisper for lectures, OCR for slides, PDF parsing), a hosted vector store with true semantic retrieval, an LLM generator constrained by retrieved chunks, and empirically calibrating BKT parameters against real student data.
Log in or sign up for Devpost to join the conversation.