MatchVahti · Lite

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.
v0.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.

2 · Read & capture

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 — verify 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 unverified against full text.
What is a .ris file, and how do I add it to Zotero?

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… — or just drag the .ris file onto your library.
  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 lets a companion Zotero-side tool (vahtian_fulltext.py, local-first, open-access only) close the loop:

  1. Scan imported items for cite:closer-look.
  2. Try to fetch the PDF by DOI (primary) or PMID (fallback) and attach it.
  3. Tag the item fulltext:pdf-found, fulltext:pdf-missing, or fulltext:check-needed.

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