Every quote in your notes, checked against its page.
Turn a reading list into source-grounded notes, check a draft against them, and build the paper. The quote check is a program, not a model's opinion: each quote is matched on its stated page against a page-marked Markdown copy of the source. What that does and does not show.
No server, no account, no API key for the quote check. The skills are Markdown that your assistant reads; the helpers are standard-library Python that runs on your machine. Converting PDFs needs Poppler's pdftotext, and building a paper needs pandoc.
Install
Upgrading from research-kit? Remove the old plugin before installing; see the upgrade steps.
In Claude Code, with Git installed:
/plugin marketplace add nik110403/provenote
/plugin install provenote@provenote
Then ask Claude to start a research project, search the literature, or verify notes. A Codex adapter exists too; see the install guide.
Seen in a real run
$ verify-quotes --strict 01_notes/lit/*.md; echo "EXIT=$?"; verify-quotes --strict 01_notes/negative/*.md; echo "EXIT=$?"; check-claims --root . 10_paper/draft.md; echo "EXIT=$?"
PASS lei2023financial.md: quote 1 (p. 2)
[… 4 PASS lines omitted]
PASS lei2023financial.md: quote 6 (p. 11)
FAIL lei2023financial.md: quote 1 (p. 1): text not found in source
[… notes path line, table separator and 2 OK rows omitted]
| line | key | status | paragraph | detail |
| 5 | lei2023financial | UNVERIFIED (advisory) | The authors stress that "flexibility cushions every economy, including the eurozone, by roughly 4... | quote not verbatim in lei2023financial source (check ellipsis/brackets/case): "flexibility cushions every economy, including the eurozone, by roughly 4 percent of GDP" |
| 9 | - | UNCITED (advisory) | As one commentator put it, "labour reform is the only free lunch left in macroeconomics". | quotation without a citation (cite its source, or mark the block <!-- unsourced: reason -->): "labour reform is the only free lunch left in macroeconomics" |
advisory: draft-quote check is heuristic; run with --strict-quotes to make it fail
3 cited paragraph(s); 0 row(s) not OK; 2 advisory.
- Line 5 isn't backed: "flexibility cushions every economy, including the eurozone, by roughly 4 percent of GDP." The quote isn't word-for-word in the source. The note also says the reverse: there's no effect in the eurozone, and no "4 percent" figure appears anywhere.
- Line 9 isn't backed: "labour reform is the only free lunch left in macroeconomics." It has no citation, and no note supports it.
- Lines 3 and 7 are backed by the note's claims. Separately, the strict check failed on `01_notes/negative/lei2023financial.md`: its quote 1 (p. 1) isn't in the source. That's a problem in the note, not the draft. I didn't edit any files.
A real Claude Code run on a small demo project (about 18 seconds, plays once; how it was made). Six quotes pass, one planted fabrication fails, and the draft's invented quote and uncited quotation are flagged. The sources ship with the repository.
What you get
Notes whose every quote is checked
A reading list becomes structured notes with page-pinned quotes. Each quote is matched on its stated page against a Markdown copy of the source.
A draft checked against those notes
Review roles read the draft against the notes, challenge its strongest claims, and flag citations the notes do not support.
A paper that builds
The bibliography is checked for structure and coverage, then pandoc builds PDF, HTML or DOCX.
How it works
Enter at any stage for which you have the inputs. The tools do the mechanical checks; the assistant roles return text for your session to save.
- Scaffoldnumbered project tree
- Searchproviders, with a receipt
- ConvertPDF to page-marked Markdown
- Verify quoteseach quote, on its page
- Draftwritten by you
- Reviewagainst the notes
- Buildbibliography check, then paper
Side track: set up and run a repeatable analysis, then return to the draft.
What is and is not verified
The check is narrow: each quote appears, on its stated page, in a hashed Markdown copy of the source (hash enforced with --strict). It does not show that the copy matches the original PDF, that the quote supports the claim, or that the claim is true. Those stay with a model or with you. Read the full boundary.