This is a submission for the Hacktoberfest Weekend Challenge: Build for a Friend
What I Built
My friend loses focus about every ten minutes when she studies. In exam season that's a real problem: her DBMS and DSA courses come as 100-slide decks, and just opening one feels exhausting. She also tends to drop her daily DSA practice during exams and regret it later.
So I built TenMin. You upload a slide deck as a PDF, and a local AI model turns it into short study cards: one concept, a few bullets, and one recall question. Because she scrolls when she gets distracted, I made the studying itself a scrollable feed. Cards come in sprints of five, with a short break screen after each one.
There's also a small streak guard: a daily LeetCode problem (DSA or SQL), a tick for "I solved one today", and a hint button that nudges her toward the approach without writing the code.
Everything runs on my laptop. No account, no API key, and her course material is never uploaded anywhere.
Demo
Sprint 2 of 3, card 6 of 13. Each card shows the slides it came from, with a recall question to answer before revealing. The streak box at the top has the daily problem, a hint button, and the streak counter.
Code
TenMin
Study in 10-minute sprints, with a local AI that never sends your slides anywhere.
TenMin turns long lecture slide decks into short, scrollable study cards, and helps keep a daily coding-practice streak alive during exam season. It was built for one real person: a friend who loses focus about every 10 minutes while studying, dreads 100-slide decks, and struggles to keep up her DSA practice during exams.
Everything runs on your own laptop using an open-weight model through Ollama. No account, no API key, no internet needed after setup.
What it does
- Slides to cards: upload a PDF of your slides. A local model turns it into short cards (concept, a few bullets, one recall question).
- Starts studying early: cards stream in as each part of the deck is processed, so you can begin the first sprint while the rest is still being read.
- Sprints: cards come inβ¦
How I Built It
-
Model:
gemma3:4b, an open-weight model, run locally through Ollama. -
Backend: Node and Express.
unpdfreads the PDF page by page, so every card can point back to its source slides. The model returns the cards as strict JSON, and the server cleans and validates each one. - Frontend: React with Vite. The feed, sprints, and keyboard controls (arrow keys to move, Space to reveal an answer) are plain React.
- Streaming: the server sends cards batch by batch, so the first sprint appears while the rest of the deck is still being read.
- Streak guard: the daily problem and streak live in the browser. A hint route asks the same local model for three levels of hint (technique, key idea, outline), with a rule never to write code.
What I learned along the way:
- Small models need small batches. My first run sent eight slides at a time. It produced a card with garbled text and another whose answer didn't match its own bullets. Dropping to four slides per batch and tightening the prompt cleaned up most of it.
-
Ollama's default context window was too small. I had to raise
num_ctxexplicitly, or long batches would be silently cut off. - Never trust the model's JSON. Some bullets came back squashed into one string with stray quote marks, so the server now repairs them and skips a batch that comes back broken instead of crashing.
- Source page numbers matter. Because the model can be wrong, every card says which slides it came from, so checking takes seconds.
What my friend said
I handed it to her to try on her real study material. In her own words:
Honestly, I actually liked using TenMin, especially during exams when looking at a 100-slide PPT itself feels exhausting π. The idea of breaking everything into small cards makes studying feel a little less overwhelming, and I like that I can just go through a few cards at a time instead of forcing myself to sit and read everything at once.
The recall questions are a nice touch too, because sometimes I feel like I've understood something while reading, but I can't actually remember it when I try to answer on my own. The source slide numbers are also helpful when I want to go back and check something.
I also liked the daily coding streak idea because I tend to completely ignore DSA during exams and then regret it later π. The hints are useful when I'm stuck, especially when they give me an idea of how to approach a problem instead of just giving away the answer.
But yeah, it's not perfect. Sometimes the AI-generated cards miss a few important points or don't explain things properly, so I still have to refer to the original PPT. And processing takes quite a while, especially for bigger PDFs, which can get a little annoying when I'm already short on time.
Overall, I genuinely think it's a useful idea, especially for someone like me who gets overwhelmed by huge portions during exams. It's not like it magically makes studying easy, but it makes getting started a lot less stressful.
Her biggest complaint was the wait, so I changed the app because of it: cards now stream in as each part of the deck is finished, and she can start the first sprint while the rest is still being read.
The other complaint I haven't solved: sometimes the cards miss important points, so she still checks the original slides. A 4B model on a laptop isn't a careful human summarizer. I kept that honest in the app with source pages on every card and a warning next to AI hints.
Why Does Open Innovation Matter?
I could have built this on a closed API, but it would have been a worse tool for her.
- Her slides stay on her machine. Course material, notes, and practice habits never touch a server she doesn't control.
- It works without internet. That matters on a hostel connection that keeps dropping during exams.
- It costs nothing and has no limits. No rate limits and no bill the night before an exam.
- I could change how it behaves. I tuned the prompt, batch size, and context window for her subjects, and swapping the model is a one-line change.
The trade-off is real: a small local model is slower and less accurate than a large hosted one. For a tool she needs to trust with her notes and run at 1 AM, I thought the trade was worth it, and her feedback suggests she agrees.
My Agent Session
By Antigravity as IDE
Prize Categories
Best Use of Gemma: TenMin runs Gemma 3 (4B), Google's open-weight model, locally through Ollama. It generates the study cards from a student's lecture slides and the three-level hints for the daily coding problem. I tuned the batch size, context window, and prompts around Gemma's limits on a laptop, and the whole thing works offline, so a student's course material never leaves her machine.


Top comments (0)