Inspiration
We wanted to build an AI tutor that strictly relies on user-provided material rather than hallucinated model knowledge. The goal was to create a local-first study experience that ensures every piece of information presented to the learner is grounded in verifiable evidence from their own notes.
What it does
StudyFlow (also known as Exam Sprint) is a local-first study tutor. A learner uploads their notes and selects one of four learning goals: Teach Material, Quiz on Topic, Revise Weak Concepts, or Full Document Study.
The app retrieves specific passages from the notes, asks a question grounded in those passages, evaluates the learner's answer, and records mastery progress. It features a conversational UI, a verified evidence card with source offsets, and voice controls using browser APIs. It also includes a fast-paced, five-question "Rapid-Fire" mode to test retention.
How we built it
We built StudyFlow as a TypeScript/npm-workspaces monorepo.
- Frontend: A Next.js 16 web application utilizing React 19 and Tailwind CSS 4.
- Backend: An Express service that exposes five core tutoring operations through the Model Context Protocol (MCP) over Streamable HTTP.
- Data & Logic: Shared Zod schemas, BM25 lexical retrieval, and deterministic evaluation logic live in a framework-independent core package. We use SQLite (
node:sqlite) for local persistence. - AI Integration: A server-side, OpenAI-compatible provider interface handles the AI interactions.
Challenges we ran into
The defining challenge was enforcing strict evidence grounding. We had to ensure that any displayed quotation is physically found in the selected source chunk, carrying a verification state and precise source offsets. To maintain safety and accuracy, we engineered the system so that answer grading and progress writes are handled strictly by trusted server code and tools, completely isolating them from free-form model claims.
What's next for StudyFlow
We plan to implement per-user identity and authentication to support multiple learners, explore semantic vector retrieval to catch paraphrased concepts that lexical BM25 might miss, and build out a secure cloud deployment architecture.
Built With
- express.js
- mcp
- next.js
- node.js
- react
- sqlite
- tailwind-css
- typescript
Log in or sign up for Devpost to join the conversation.