MatchVahti · Lite

by Vahtian · Capture abstract sentences for Zotero

The citation-capture companion to MatchVahti. Not the blinded claims×papers loop — it saves an abstract sentence (with PMID/DOI provenance) before you forget it.
Local processing, external metadata lookupv0.1PubMed searchtap a sentence[oo] closer lookZotero .rislocal-first

1 · Search PubMed

Sort
Refine
Type a query the way you would in PubMed (terms, AND/OR, "phrases", author 2024). Best Match ranks by relevance; broad queries return many hits, so refine if the top results drift off-topic.
NCBI etiquette: contact email & API key (optional)
NCBI asks tools to send a contact email with E-utilities calls; an API key lifts the rate limit from 3 to 10 requests/s. Both are sent only to NCBI and stored only in this browser.

2 · Read & capture

Abstract only — full text still required before citing
Tap sentences to capture them for citation. Tap again to release. Selected sentences are numbered in reading order.
Nothing selected yet.
Citation priority

Captured text is from the abstract only. Check against the full text before citing.

3 · Your .ris (review, then import)

Preview the raw .ris (exactly what gets imported)
No silent writes. Each reference is added once (dedup by PMID/DOI); re-reading the same paper appends new sentences to its note. Captured sentences and your note go in the RIS N1 field; tags in KW. Every record is tagged cite:abstract-only — abstract-level and unchecked against full text.
How this gets into Zotero (the .ris file)

RIS is a plain-text bibliography format (.ris) that almost every reference manager reads: Zotero, EndNote, Mendeley, Papers. Each record is a short list of tagged lines: TY type · AU author · TI title · PY year · DO DOI · N1 notes · KW tags · ER end-of-record. You can open it in any text editor and read exactly what will be imported — nothing hidden.

To get it into Zotero:

  1. Download .ris (or Copy) above. Each download is timestamped (e.g. matchvahti-lite-2026-06-11-1432.ris) so batches never overwrite each other.
  2. In Zotero, choose File → Import… and pick the .ris file (or open the file if your system already associates .ris with Zotero). Don't drag it into the Zotero window. Depending on where it lands that can attach the file to an item instead of importing it; File → Import… always imports.
  3. Zotero creates the items, with your captured sentences and note in each item's Notes/Extra and your tags attached. If a reference is already in your library (same DOI/PMID), Zotero can detect it as a duplicate (Duplicate Items view) so you can merge instead of double-adding.

Re-importing makes a new collection each time. Zotero names the import collection after the file, so importing repeatedly stacks up folders. Two ways to avoid the pile-up:

  • In the import dialog, untick “Place imported collections and items into a new collection” — items land loose in your current collection instead of a new folder.
  • Or keep the box ticked and let the timestamped filename name each folder as a dated batch (matchvahti-lite-2026-06-11-1432), so re-imports don't collide and you can tell them apart.

Either way, the export is cumulative (it always contains every reference you've captured this session), so import a fresh .ris once when you're done rather than after every capture, and let Zotero's duplicate detection catch any overlap.

What does the [oo] “closer look” flag do after import?

[oo] closer look means: this abstract sentence is interesting enough to justify pulling the full text. It's a retrieval trigger, not a judgement on the study.

In the exported .ris, the flag travels as the tag cite:closer-look (alongside cite:abstract-only), carried with the paper's DOI and PMID. That tag is the contract: it is how the retrieval step recognises which references get a full-text fetch. Two ways to close the loop — both local-first and open-access only:

  1. FullVahti: the Zotero plugin (no terminal). Install once from a file (two clicks in Zotero 7), then Tools → FullVahti: Find OA PDFs for tagged items. It scans your library for cite:closer-look, attaches the free, legal PDF when one exists (Unpaywall / PubMed Central, by DOI or PMID), tags each item fulltext:pdf-found / fulltext:pdf-missing / fulltext:check-needed, and leaves one run-report note listing what's still missing — ready for interlibrary-loan requests.
  2. vahtian_fulltext.py: the scripted path (power users). Same scan, same fulltext:* tags, dry-run by default.

Later, MatchVahti or CiteVahti can use those retrieved full texts for stronger, full-text claim checking instead of abstract-only. MatchVahti-Lite itself never fetches PDFs and never writes to your library — it only emits the flag; retrieval is a separate, explicit step.

Why does one-click OAuth to Zotero work in CiteVahti but not here?

Because CiteVahti is an installed app and this is a single web page. CiteVahti runs as a real process on your machine with a small backend, so it can do everything an OAuth handshake needs: hold a client secret that never reaches the browser, open a localhost callback to catch the redirect, and then keep an API key to write items into your Zotero library directly — decision-gated and undoable.

MatchVahti-Lite is the opposite by design: one static HTML file, no backend, no server, and network access locked down to PubMed E-utilities. That removes every piece OAuth requires:

  • No callback to return to. OAuth must send you back to a URL the app controls; a static file has none.
  • Nowhere to keep a secret. Anything in the page is readable by anyone who opens it, so a client secret can't be protected.
  • No path to Zotero's servers. The content-security policy only permits network calls to PubMed, so the page can't reach Zotero's API (and the browser's CORS rules would block them too).

So instead of a credentialed write, it uses the universal, no-login path: a reviewable .ris you import yourself. That is also the whole spine's no silent writes stance — nothing reaches your library until you have looked at it and clicked import. When you want the direct, authenticated Zotero write, that lives in CiteVahti / MatchVahti.

What this is

A citation-capture tool, not a claim engine. This Lite mode produces no MatchResult, does not blind you, does not feed the Atlas graph or the poolable corpus. The [oo] closer-look flag and stars are your private salience,"how much I want to cite this", never a verdict on the study. When you need the rigorous, blinded claim×paper rating with an auditable trail, step up to MatchVahti.
Pricing

MatchVahti-Lite is free — it runs entirely in your browser and the only network call is the PubMed search. A small subscription (planned, ~€3/mo) would add convenience extras (saved searches, cross-device sync of your capture list); the core read → capture → .ris loop stays free.

Added to your .ris