{"slug": "i-built-an-ai-examiner-that-reads-my-friend-s-notes-without-the-notes-ever-their", "title": "I built an AI examiner that reads my friend's notes — without the notes ever leaving their laptop", "summary": "A developer built Notes vs. Me, an open-source study app that turns a student's own PDFs — syllabus, lecture slides and past papers — into an AI examiner that quizzes them and tracks which topics they repeatedly fail. The app runs its entire AI loop locally via Ollama with the gemma3:1b model, keeping notes on the user's laptop and working offline, with a fallback to Groq-hosted open weights for machines that cannot run a model. The developer reports that coaxing reliable JSON out of a 1B-parameter model required a worked example in the prompt plus a coercion layer, and the full AI stack fits in roughly 1GB of RAM.", "body_md": "**[Notes vs. Me](https://github.com/Priyanshujha1320/notes-vs-me)** is a study app with one job: take the PDFs a\n\nstudent already has — syllabus, lecture slides, past papers — and turn them\n\ninto an examiner that grills them, question after question, then shows exactly\n\nwhich topics they keep failing.\n\nI built it for a friend doing their undergrad who does the thing every student\n\ndoes: reads the notes three times, feels prepared, walks into the exam, and\n\ndiscovers that *reading* and *being asked* are completely different skills.\n\nThey had notes. They had questions at the back of the textbook. What they\n\ndidn't have was something that looked at *their* notes and asked *them* the\n\nawkward follow-up.\n\nAnd here's the constraint that shaped the whole build: their laptop is\n\nwhere the notes live, where the revision happens, and — crucially — where the\n\nnotes should stay. No student wants their past papers uploaded to somebody's\n\ncloud to \"personalise their learning\". So the default mode runs the entire AI\n\nloop on their machine, and it all works offline.\n\n`ollama pull gemma3:1b`, `pip install -r requirements.txt`, run — ten minutes\n[github.com/Priyanshujha1320/notes-vs-me](https://github.com/Priyanshujha1320/notes-vs-me) — MIT licensed. FastAPI + SQLite + a single-file\n\nvanilla-JS frontend — no build step, nothing to trust. Six commits, one\n\nweekend.\n\nThe pipeline is deliberately boring — boring is what survives exam week:\n\nThe fun part was the sampling loop. A static quiz generator gets boring in\n\nabout a day; a griller that remembers you failed \"Calvin cycle\" twice and\n\nquietly schedules it for next round behaves like something that *wants* you to\n\npass. That loop is about ten lines around a weighted shuffle.\n\nThe not-fun part was coaxing a 1B-parameter model into reliable JSON. Small\n\nopen models copy your prompt's placeholder literally — mine happily returned\n\n`\"options\": [\"A\", \"B\", \"C\", \"D\"]`, letter options and all. The fix was a\n\nworked example in the prompt (show, don't describe) plus a coercion layer\n\nthat trusts the model's actual answer type instead of fighting it. That's a\n\ntrade you make with small local models, and it's worth it: the whole AI stack\n\nfits in about 1GB of RAM, so it runs on the kind of laptop students actually\n\nown. If a machine can't run a model at all, there's a fallback to the same\n\nopen weights served by Groq — the app tells you, in plain words, which mode\n\nyou're in.\n\nI'm handing the app to my friend this week with their own syllabus loaded —\n\nwatching a real student take the first grill is the whole point of this\n\nbuild, and I'll update this section with what actually happens. My money is\n\non it finding the one section they skipped.\n\nTry it on your own notes: [github.com/Priyanshujha1320/notes-vs-me](https://github.com/Priyanshujha1320/notes-vs-me). If it exposes a topic you were sure you\n\nknew, that's the app working.\n\n*Built for the [DEV Hacktoberfest Weekend Challenge](https://dev.to/devteam/join-the-hacktoberfest-weekend-challenge-build-for-a-friend-2450-in-prizes-across-17-winners-1aj5): open\nsource AI that solves a real problem for someone you love.*", "url": "https://wpnews.pro/news/i-built-an-ai-examiner-that-reads-my-friend-s-notes-without-the-notes-ever-their", "canonical_source": "https://dev.to/priyanshujha2009/i-built-an-ai-examiner-that-reads-my-friends-notes-without-the-notes-ever-leaving-their-laptop-4gkp", "published_at": "2026-10-05 04:05:12+00:00", "updated_at": "2026-10-05 04:14:26.252422+00:00", "lang": "en", "topics": ["ai-tools", "large-language-models", "ai-products", "developer-tools"], "entities": ["Notes vs. Me", "Ollama", "gemma3:1b", "Groq", "FastAPI", "SQLite", "GitHub", "DEV Hacktoberfest Weekend Challenge"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/i-built-an-ai-examiner-that-reads-my-friend-s-notes-without-the-notes-ever-their", "markdown": "https://wpnews.pro/news/i-built-an-ai-examiner-that-reads-my-friend-s-notes-without-the-notes-ever-their.md", "text": "https://wpnews.pro/news/i-built-an-ai-examiner-that-reads-my-friend-s-notes-without-the-notes-ever-their.txt", "jsonld": "https://wpnews.pro/news/i-built-an-ai-examiner-that-reads-my-friend-s-notes-without-the-notes-ever-their.jsonld"}}