Devlog 1 - StudyBuddy
so ive been doing SHSAT practice tests for a while and the thing that always got me is that after i mark one, i have like 20 wrong answers and no idea what to actually do with that info. like ok i got 12 questions wrong, but am i bad at geometry or did i just misread three questions? no clue. so id end up redoing entire sections i was already fine at.
basically what im building is a web app where u upload a worksheet or a practice test (pdf or even just a photo of the page) and it reads every question off it, figures out what topic each one is, and then after u mark which ones u got wrong it schedules them to come back later using FSRS (same spaced repetition algo anki uses).
the thing that makes it diff from just writing ur mistakes in a notebook is that it tracks topics across every test u ever upload. one test says nothing. five tests and it can actually tell u “ur bad at ratios” with a straight face.
the AI runs on my own laptop
i did not want to pay for an api. so the vision model that reads the pages runs on my own rtx 5080. it sits at home and asks the deployed site for jobs, and it only ever dials outward so theres no port open on my home network. if my laptops off, uploads just queue instead of dying.
the part i was most wrong about
i picked the model i was using (qwen2.5vl:7b) literally because it was the first one i pulled. thats the whole reason. so i finally benchmarked it properly, 9 models on a real 58 page shsat paper, 114 questions.
the one i already had won?? the 27b model is 4x bigger, scored 6 points WORSE, and took 183 seconds per page vs 7.8. id been assuming for weeks that upgrading would fix my accuracy problems lol.
also the grading was free which i was way too happy about. every question number 1-114 shows up exactly once on the paper so the test just grades itself, i never labelled a single page by hand.
the bug that was actually my fault
so when i looked at WHICH questions got missed they werent random, they came in chunks. one model dropped 17 questions in a row. turns out every single miss on every model was a page that came back completely empty. not a wrong answer. nothing.
and that was my bug not the models. an empty reply gives 0 questions and no error, so my checker (which only looked for gaps in question numbering) saw nothing wrong and the upload said success while a whole page just quietly disappeared. fixed with one retry at a slightly higher temperature cuz a model that decided to output nothing will decide that again if u ask it the exact same way.
stuff that broke
i wrote a check to catch questions that got cut off mid sentence (flag anything not ending in punctuation) and it flagged 25 out of 114 questions on a CLEAN run. all wrong. turns out shsat questions end with like “by” or “through” all the time and the answer choices finish the sentence. fixed it and it changed literally zero outcomes so the rule was doing nothing the whole time.
also added rate limiting and instantly locked myself out of my own test suite, which signs up way more than 5 times an hour from localhost.
also deleted my entire email system. u need a domain u own to send emails (spf/dkim records) and a free .vercel.app subdomain cant do that. so instead of buying a domain i deleted 274 lines and made google sign in the front door.
next things: tier B uploads dont get topic tags yet, and theres one test failing on purpose cuz FSRS says a question u just got wrong is due in 1 minute but i think it should be due immediately. gotta pick one.