
Two classmates, one unfinished project.
Marginalia began as our academic project. It sat half finished while work took over, until we came back to it. This is that story, and why the code is now open for anyone to use.
Same batch
We were classmates
We studied in the same batch, sat through the same lectures and spent the same hours with long, dense texts: papers, lecture notes, chapters we had to understand and then actually remember.
The idea
What if a PDF could answer back?
For our academic project we asked a simple question. What if you could ask a document something, get the answer together with the page it came from, and then be quizzed on it? Reading is the easy part. Recall is the hard part, so we built the whole thing around recall.
The pause
Then work took over
Office commitments took the evenings and weekends the project needed. It worked well enough to demo, but it was not ready for production and parts of it were still rough. So it stayed in a folder, unfinished, longer than either of us wanted.
Better late
Better late than never
So we came back to it. We rebuilt the foundations: private file storage, background processing, search that keeps every answer inside one document, and page citations you can click. Then we gave it a proper face, and finished it.
Late is better than never.
Open to all
Now it is yours too
Marginalia is complete enough to use, and the code is public. Use it for your own studies, read it to see how a document question-and-answer app is put together, fork it for your own ideas, or help us make it better.
Where you could help
These are the real gaps, straight from the project's own list of known limitations.
- Read scanned PDFs
- Pages that are only images have no text to read yet. OCR support would unlock them.
- Move to Next.js 15
- The app is on Next.js 14, which no longer gets security fixes. The upgrade is planned and welcome.
- Share the rate limiter
- It lives in memory per server instance. A Redis-backed store would make it hold across instances.
- Report and refine
- Found a bug, a rough edge or a confusing sentence? Open an issue, or send the fix.
