Veritas Charting

Catches AI-written clinical notes that drift from what the patient actually said. Built at the Abridge AI Healthcare Hackathon.

When
Jul 2026
Role
Co-built with Rajeev Sethuraman
Built with
Python, FastAPI, Claude, FHIR, JavaScript
Code
Live demo and public code
Links
By the numbers
16 commits of mine over 3 working days, Jul 18, 2026 to Jul 20, 2026
A real run on a COVID-19 admission. The note said the patient "explicitly denies chest pain"; the transcript says "This is not that. No pain," a comparison to her prior heart attack, not a denial.
Veritas results view: 72 claims audited, 12 flagged, 5 confirmed drifts, with a contradicted claim traced back to the transcript.

What I built

Ambient scribes turn a doctor visit into a SOAP note. The dangerous failure isn't a garbled note, it's a fluent one that lists a medication the patient stopped, or turns a hedged "I don't think so" into a clean "denies." Veritas treats the note writer as a system under test: it audits every claim in the note against the patient's FHIR chart, the visit transcript, and the after-visit summary, then three independent Claude judges vote on each flag.

Rajeev and I split the work. I set up the dataset and the first prompts, tuned the auditor's severity weighting and reasoning, built the three-panel interface (transcript, note, flagged discrepancies with each judge's vote), and after the hackathon cleaned up the repo and shipped a static demo that replays a real run with no API key. Rajeev fed the chart and after-visit summary into the auditor and judges and built the self-scoring that measures how many planted traps we catch.

The three judges, each framed differently, all confirming the same omission: a glucose of 67 mg/dL the note's plan never mentions.
Three judge cards, patient safety, documentation integrity, and false-positive skeptic, each confirming a missed low-glucose reading.
Rajeev and me at the Abridge AI Healthcare Hackathon.
Two students standing on either side of an Abridge banner at the hackathon venue.

What was hard

Deciding which source wins. The chart is authoritative for measured facts, the clinician for judgment, and the patient for their own body and whether they took their meds. We wrote that authority model down once and gave the same text to the auditor and all three judges, then enforced it in code: a contradiction against an authoritative source gets bumped one severity level, and the finding keeps a record of why.

Judges disagree. Averaging their votes hid the interesting cases, so a split vote is shown as a split.

What I learned

When it caught a note listing a medication the patient never took, I realized AI fails quietly. A working prototype isn't the same as a tool people trust.

The hardest questions at the hackathon weren't technical. They were about who would use the tool and why they would trust it.

Results

On the demo case, a COVID-19 admission, it audited 72 claims, flagged 12, and the judges confirmed 5 drifts, one of them high severity.

Public demo anyone can click through. Every reasoning step returns strict JSON through tool use, so nothing in the pipeline parses free text.