What it does
I started Proofline because my thesis work at FAU Erlangen was scattered across too many places. I had supervisor comments in one place, papers in Zotero, notes in Obsidian, writing in Overleaf, and code in VS Code. Each tool did its own job, but none of them kept the whole chain together.
The uncomfortable part came when I pasted supervisor feedback into AI to work out what it meant. It was useful, but sometimes it felt as if the AI had a clearer picture of my thesis than I did. I wanted to keep AI helpful without letting it quietly take over the research decisions.
Proofline turns a comment into a reviewable task, searches the Zotero library I choose, and lets me decide which papers count as evidence. It then prepares a grounded note preview for Obsidian. A note can only cite the source IDs I selected. If another citation appears, Proofline rejects it before preview. Claim Traceback lets me follow a note back through the chosen papers, the approved task, and the original feedback.
How I built it
Proofline is a local-first Node.js application with a browser UI and a workflow core that stores task decisions, selected evidence, and revision history. Zotero is read-only through its local Desktop API. Local Ollama embeddings can improve retrieval when available, while a metadata fallback keeps the app usable without a local model.
Codex CLI turns feedback into a validated task graph and drafts only from the selected evidence. The demo uses deterministic fixture data, so judges do not need my Zotero library, API keys, or thesis files.
I built and debugged the project with Codex and GPT-5.6. Codex helped with the Zotero workflow, citation validation, judge mode, automated tests, and the final hardening pass. I had also never edited a demo video before. After I recorded the screen walkthrough, Codex helped me cut it down to the part that matters.
Challenges I ran into
Supervisor feedback rarely uses the same words as paper titles or abstracts. Zotero libraries also have missing abstracts, duplicates, personal libraries, and group libraries. Retrieval needed to narrow the search without pretending it knew which paper was correct.
The trust boundary took the most care. Proofline must not modify Zotero, and a draft must not introduce a paper that the researcher never chose. That is why Zotero stays read-only, citations are checked before preview, and writing a note still needs a separate approval.
I also needed a demo that judges could run without private research material. Judge mode uses clearly labelled fixture data and stops at preview.
Accomplishments that I'm proud of
- A citation firewall that rejects an unselected source before it reaches the grounded note.
- Claim Traceback, which connects a note to its chosen evidence, approved task, and original feedback.
- A deterministic judge mode that runs without credentials or a Zotero installation.
- Read-only Zotero access and approval-gated local note writing.
- A final test run with 184 of 184 tests passing.
What I learned
I learned that a useful research assistant should make the researcher's decisions easier to inspect, not hide them behind a polished answer. The value is in knowing why a change was made, which paper supports it, and where a note came from.
What's next for Proofline
Next, I want to add PDF full-text extraction for papers with missing abstracts, researcher-maintained relevance judgements, and reviewable project-state diffs. I also want to explore local Git and Overleaf patch workflows while keeping the same approval model.
Built With
- api
- cli
- code
- css
- gpt-5.6
- html
- javascript
- markdown
- node.js
- obsidian
- ollama
- openai
- overleaf
- vs
Log in or sign up for Devpost to join the conversation.