Prototype · synthetic data · not a medical device
Reconciler
This runs lib/reconcile.ts only, the same deterministic checker used in production, in your browser, with no model call. Build a finding, pick a scan history, and see every check.
Each button loads a ready-made finding and switches to the eval record so its numbers line up. Press Reconcile after loading one.
Everything lines up. The cited value is in the scan and matches exactly, the model's risk level agrees with the one computed from reference ranges, and the write-up only names backed numbers. Expected result: grounded (shown normally).
The finding cites LDL 4.2, but the scan says 3.6. A hard check fails. Expected result: rejected (kept out of the clinical view).
The scan shows LDL rising, but the claim says it fell. The direction is recomputed and disagrees. Expected result: rejected.
The value is real, but the model marks it 'priority' while the reference range puts it at 'watch'. The computed level wins for display; the disagreement is surfaced. Expected result: flagged (review carefully).
The claim ties out, but the sentence mentions an HbA1c reading that is not one of the finding's cited sources. A soft check. Expected result: flagged.
The finding cites 'blood.vitaminD', a measurement the scan does not contain at all. Expected result: rejected.
The five checks it runs
The first three are hard: a failure rejects the finding. The last two are soft: a failure flags it for review.
Edit the finding and press Reconcile. Nothing is sent anywhere.