Heya HN! I've been working on this side project for a few weeks and I decided to do a soft launch to share. It's open-source, so link to code below.<p>This is Annotated Paper. I mainly built this for myself as I was reading up on AI safety research to read research papers more effectively. I'm sharing it because it could be useful to anyone reading a decent amount of papers.<p>It allows you to:
1. Read your paper in a split-pane view, with some actions available in the right panel.
2. Ask questions with an AI copilot & get grounded responses that link back to the source PDF.
3. Add highlights & annotations to the PDF (hence, annotated paper). Highlighting any text also gives you a neat inline menu with quick actions.
4. Take notes in markdown format, quickly extracting snippets from the PDF
5. Tune the AI response - pick from concise, normal, and detailed response lengths.
6. Search over your knowledge base of uploaded PDFs.<p>Citations generation was somewhat complex. I setup a syntax I've called the citation protocol. It pushes the LLM to ground its response in footnote syntax, providing inline citations to any claims it's making about the paper. The response is streamed with grounded references, which I then use for reverse lookup in the source PDF.<p>Reverse-lookup from the citation to location in the PDF has been tricky, because the LLM-extracted text isn't always a match to the client-extracted text layers. So I do some fuzzy matching.<p>I created a split-pane view with the PDF, because I wanted to actually read the paper, not just upload it and treat it like a black box. For humans to gracefully _learn_ with AI, we should still read the source docs, rather than give up control.<p>It's not been super stress-tested, but should work decently on PDFs < 50 pages. No paywall at the moment, so give it a spin :). I'd love some feedback.<p>Note: I haven't yet developed a mobile view, because I don't think people meaningfully are reading papers on their phones. I may get to it eventually if there's demand.<p>Model: `gemini-2.5-pro`, because it's quite decent with reasoning & technical work. I do think adding model switching would be useful for diversity, depending on subject matter.<p>-----<p>GitHub repo:
<a href="https://github.com/sabaimran/annotated-paper">https://github.com/sabaimran/annotated-paper</a><p>Overall vision:
<a href="https://annotatedpaper.khoj.dev/blog/manifesto">https://annotatedpaper.khoj.dev/blog/manifesto</a><p>Citations protocol prompt:
<a href="https://github.com/sabaimran/annotated-paper/blob/master/server/app/llm/prompts.py#L20">https://github.com/sabaimran/annotated-paper/blob/master/ser...</a><p>Request: Try out the app and let me know any feedback you might have. It's a pretty rough prototype at the moment!<p>If you've built anything similar for document processing, I'd love some advice on the reverse reference look-up or processing PDFs with images.<p>If you are reading a decent amount of papers, I'd love some insight into what your reading workflows look like currently, and which tools are already useful.<p>Thank you!