What this is
What. ExtractVahti is the extraction-and-appraisal step of a diagnostic-test-accuracy review. For each included study you enter the 2×2 counts (it computes sensitivity, specificity, and overall agreement), record the study details, and rate risk of bias with QUADAS-2 / QUADAS-C / PROBAST-AI, then export tidy CSVs for meta-analysis in R.
Why. Extraction is where DTA reviews leak errors: a mis-transcribed 2×2, an inconsistent reference standard, a bias domain nobody appraised. Doing it once, in a structured form that computes the accuracy for you and keeps a risk-of-bias traffic-light, is what a reproducible review needs, and it hands the headline model straight to R.
How. Paste your included studies from MatchVahti (or load the example). For each study: enter the 2×2 per cutoff, note the decision impact, and rate each risk-of-bias domain, then Save and move on. Export extraction.csv / rob.csv and the traffic-light SVG. A second extractor’s file can be reconciled. Nothing uploads.
Is my data uploaded?
No. ExtractVahti runs entirely in your browser and saves to your device’s local storage — nothing leaves your machine, and there are no accounts or trackers.
What does it compute, and what stays in R?
From a 2×2 (TP/FP/FN/TN) it computes sensitivity, specificity, and overall percent agreement; with two or more extractors it computes Cohen’s κ (or Krippendorff’s α for 3+) on the judgments. The headline HSROC / bivariate model runs in R on the exported CSV (mada / metadta).
Which risk-of-bias tools?
QUADAS-2 and QUADAS-C by default; PROBAST-AI / TRIPOD-AI / CLAIM when the index test is AI (toggle it on in step 1). The reference-standard domain is high-concern by design when the reference standard is imperfect.
What do I get out?
extraction.csv and reclassification.csv for R, rob.csv, a risk-of-bias traffic-light SVG, and a de-identified validation file. All downloadable, reviewable, and local.
Can two people extract independently?
Yes. Load a second extractor’s extraction.jsonl in the Reconcile step — only beyond-tolerance mismatches surface for adjudication, and each person’s data stands alone.
1Included studies & protocol
Paste the included set from MatchVahti screening (JSON / JSONL: one object per study with record_id, pmid, doi, title, year, venue), or load the example. The corpus is your locked set — extraction is keyed to protocol_hash + record_id so it lines up with screening and reconciliation.
2Extract — study data
2bPer-cutoff accuracy — enter a 2×2 where reconstructable; sens/spec/OPA auto-compute
2cDecision impact — directional reclassification (AI vs manual)
3Appraise — risk of bias
Each domain: low · unclear · high. The reference-standard domain is high-concern by design here (an imperfect reference shares error with the comparator).
4Review & export
Completion + the risk-of-bias traffic-light. Export is downloadable, reviewable files — nothing uploads.
Risk-of-bias traffic-light
Feed extraction.csv / reclassification.csv to R (metadta / mada / meta) — HSROC where a 2×2 is reconstructable, agreement pooling otherwise.
5Reconcile — dual extraction
Load a second extractor's extraction.jsonl (from another ExtractVahti). Records join on record_id; judgments get Cohen's κ, counts an exact match, continuous values a tolerance. Only beyond-tolerance mismatches surface for adjudication — the human data source stands alone.
ASealed agent reconciliation aid — optional, guarded
Load an agent pre-extraction file (same jsonl; each record carries a model id). It is sealed — never shown and never entered into your data. After you commit a study (Save), the agent's values for that study are revealed only as discrepancy flags to re-check. Audited: human-commit before reveal.