Inspiration

The idea came from a problem every one of us has lived through: re-reading notes the night before an exam and feeling like we were making progress, without any real way to know which parts we actually understood and which parts would fail us the next day.

A good tutor solves this — they ask you questions, notice exactly where you're stuck, and explain that specific thing differently until it clicks. But tutoring is expensive, scheduled, or simply unavailable to most students studying alone, including many of us at the University of Buea. ChatGPT-style tools help, but they answer what you ask — they don't track what you've actually mastered over time, and they don't proactively hunt for your blind spots.

We wanted to build the thing a good tutor actually does, automated: find what you don't know, tell you specifically, and re-teach just that.

What it does

MindLoop is an adaptive study coach built around one core loop:

  1. Explain — paste any topic or note, get a clear explanation adapted to your level
  2. Quiz — auto-generated questions on exactly that content, each tagged to a specific underlying concept
  3. Evaluate — scores your answers and identifies precisely which concept you got wrong, not just that you failed
  4. Re-explain — re-teaches that specific concept using a genuinely different approach than the first attempt, so a second explanation doesn't just repeat itself in different words

On top of that loop, two study modes solve genuinely different problems rather than just varying explanation length:

  • Deep Mode optimizes for real understanding — quiz questions require applying the concept to a new scenario, and when you get something wrong, the system infers what incorrect mental model likely produced that specific wrong answer, and corrects that model directly.
  • Cram Mode optimizes for exam-day recognition under time pressure — quiz distractors mirror real, common mistakes students make on a topic, and wrong answers get a tight restatement or mnemonic rather than a deep explanation. It includes a Pomodoro-style countdown timer for focused sprint sessions.

MindLoop also generates flashcards and real-world analogies from the same explained content, tracks XP/levels/streaks to sustain motivation, and lets you upload PDFs or notes directly.

How we built it

  • Backend: FastAPI (Python), with a clean route/service separation — routes handle HTTP plumbing, a dedicated LLM service layer owns all prompt logic and API calls
  • AI: DeepSeek (deepseek-chat), called via the OpenAI-compatible client, with structured JSON responses forced so every explanation, quiz, and evaluation is parseable, not just prose
  • Frontend: HTML/CSS/JavaScript, built around a consistent color system and a custom Pomodoro-ring timer for Cram Mode
  • Team split: backend + LLM/prompt engineering, frontend, and a second person on LLM tuning, working from a shared JSON contract we locked on day one so frontend and backend could build in parallel

We deliberately scoped this narrow from the start — one user (a student studying alone), one core loop — rather than trying to build a full platform in the time available.

Challenges we ran into

  • Getting the AI to be genuinely adaptive, not just verbose. Our first version of Deep vs. Cram mode only varied explanation length — technically working, but not meaningfully different in what problem each mode solved. We rewrote the prompts so Cram Mode trains against realistic exam-trap distractors and Deep Mode diagnoses the specific wrong mental model behind a missed answer.
  • Keeping the JSON contract solid. LLMs don't always respect "reply with JSON only" — we hit cases where DeepSeek wrapped responses in markdown fences despite instructions, handled with a parsing fallback and a single retry rather than letting the app crash.
  • Environment/dependency issues under real deadline pressure — an openai/httpx version mismatch broke the server on a teammate's machine mid-build, fixed by pinning exact dependency versions.
  • Scope discipline as a three-person team. It was tempting to keep adding features once the core loop worked. We drew a hard line before submission: flashcards and real-world analogies (which reuse the same explained content, not a separate pipeline) were the last features added, deliberately, rather than letting scope creep threaten the reliability of the core loop.

Accomplishments that we're proud of

  • Getting the full adaptive loop — explain, quiz, detect the specific gap, re-teach differently — actually working end-to-end with a real LLM, not just mocked demo data.
  • Making Deep Mode and Cram Mode a real mechanical difference rather than a cosmetic toggle: each mode changes what the AI is actually asked to reason about, not just how long its answer is.
  • Shipping as a three-person team with a clean division of labor and a shared API contract from hour one, which let backend, frontend, and prompt work happen in parallel without blocking each other.
  • Holding scope discipline under real pressure — cutting or parking features that didn't serve the core loop, instead of chasing every idea that came up mid-build.

What we learned

That the interesting part of "AI-powered education tool" isn't the AI call itself — it's the structure around it. A single chat endpoint is a thin wrapper; what makes an adaptive loop real is the concept-tagging that connects a wrong answer to a specific gap, and deliberately different instructions per mode that make the AI's behavior actually diverge based on what the student needs.

What's next for MindLoop

The mechanism is proven at hackathon scale; the honest next step is testing it with a larger group of students over a full revision period to see whether concept-tagging stays consistent and re-explanations stay genuinely distinct across many sessions — not just a single demo run. We'd also want to move weak-point memory into a proper persistent account system, and explore whether a fine-tuned model improves misconception diagnosis in Deep Mode beyond what prompting alone can do.

Built With

Share this project:

Updates

Submission history