# Inside 847 Production Clinical AI Notes — Sebastian Fox, Composo

AI Engineer · 2026-08-22

<https://aiengineer.podhood.com/d77a6ec1-895b-4df1-a8d9-a99dc4440d1f>

Sebastian Fox of Composo argues that AI clinical notes from production ambient scribes carry serious errors—1 in 20 could cause significant harm, nearly 1 in 5 had an important omission, more than 1 in 10 contained a hallucination—and the common fix, a rubric-based checker, fails: his best judge waved a fifth of serious errors through. The hard part is not spotting transcript-note differences but judging which matter—a tacit, contextual standard that can't be written down. Fox shows examples: a missed jaw pain signals giant cell arteritis; a note flips a 'wait and see' plan into 'arrange tests today.' His answer is a loop: discover failure modes from real outputs, capture clinicians' free-form judgments, and retrieve similar cases per note to calibrate each check and keep it evolving.

## Questions this episode answers

### How common are serious errors in AI-generated clinical notes?

Sebastian Fox cites the largest real-world study of ambient scribes: about 1 in 20 notes carried an error serious enough to cause significant harm, nearly 1 in 5 had an important omission, and more than 1 in 10 had a hallucination. These same numbers came from three leading production scribes, not from theoretical testing.

[1:54](https://aiengineer.podhood.com/d77a6ec1-895b-4df1-a8d9-a99dc4440d1f?t=114000)

### Why did the best AI judge still miss serious errors in clinical notes?

Sebastian Fox built a judge using a frontier model, a faithfulness rubric, automatic rubric optimization, and deterministic concept counting, yet 1 in 5 of the clean passes it signed off still hid a serious error, often an omission. He says the judge is not stupid or blind; it just cannot tell which differences between transcript and note matter.

[9:29](https://aiengineer.podhood.com/d77a6ec1-895b-4df1-a8d9-a99dc4440d1f?t=569000)

### How should you build an evaluation system for AI clinical notes?

Sebastian Fox recommends a repeating loop: discover failure modes from real outputs, capture expert judgments and corrections on them, and calibrate every output against similar previously judged cases rather than a static rubric. You keep the standard as examples per note, so when the standard moves, the loop moves with it.

[13:45](https://aiengineer.podhood.com/d77a6ec1-895b-4df1-a8d9-a99dc4440d1f?t=825000)

### What is the point of the France versus Lake Malawi example?

Sebastian Fox compares two patients with blood in their urine whose notes both dropped a holiday line. France is irrelevant, but Lake Malawi is the diagnosis: fresh water in sub-Saharan Africa changes the management plan entirely. The same dropped line is pure noise in one note and the answer in the other, so what matters is contextual.

[11:49](https://aiengineer.podhood.com/d77a6ec1-895b-4df1-a8d9-a99dc4440d1f?t=709000)

## Key moments

- **[0:00] Dangerous omission**
  - [0:13] AI clinical note missed the jaw-pain-on-chewing red flag for giant cell arteritis, reading as routine tension headache despite a sight-threatening emergency
  - [1:20] AI scribe added chest pain, diabetes meds and a fake hospital to a tonsillitis note; the patient later got invited to diabetic eye screening
- **[1:29] Obvious errors**
  - [2:18] Largest real-world ambient scribe study: 1 in 20 notes had a serious harm-level error, 1 in 5 an important omission, >1 in 10 a hallucination
- **[4:02] Failure map**
  - [4:30] AI scribe recorded 'abrupt sudden onset' headache when the patient said 'it just happened' — a red flag that drove a bleed-on-the-brain workup
- **[5:30] Error types**
  - [7:00] What matters in a clinical note is tacit, contextual and moving — the same detail is critical in one note and noise in the next, says Sebastian Fox
- **[7:03] What matters**
- **[7:56] Checker after generator**
- **[9:35] Blind judge**
  - [9:48] Sebastian Fox built a frontier-model judge with an optimized rubric and deterministic NLP, yet 1 in 5 clean passes still hid a serious error
  - [11:49] France vs Lake Malawi: two notes dropped the same holiday line; France was noise but Lake Malawi was the schistosomiasis diagnosis
- **[12:06] Lake Malawi**
  - [13:45] Fox's loop solves it: discover failure modes from real outputs, capture expert judgment, calibrate each output against retrieved cases
- **[13:49] The loop**
- **[14:39] Capture and calibrate**
- **[16:56] Three judges**
  - [16:56] On the same notes, a judge running Fox's discover-capture-calibrate loop far outperformed an off-the-shelf judge and a rubric+Jeeper system
- **[18:50] Takeaway**
  - [19:22] Evaluation isn't something you have, it's something that you do continuously over time.

## Speakers

- **Sebastian Fox** (guest)

## Topics

Guardrails, LLM-as-Judge, Evaluation Frameworks

## Mentioned

Composo (company), Jeeper (product)

## Transcript

### Dangerous omission

**Sebastian Fox** [0:13]
This is a clinical note an AI wrote from a real consultation. Take a few seconds and read it. It reads like a routine headache: "A new headache, likely tension type, take some paracetamol, come back if it doesn't settle."

Looks completely fine, doesn't it? Here's what's missing: in the room, she also mentioned her jaw aches when she chews. A new headache, over 50, with jaw pain on chewing. That's giant cell arthritis, and untreated it can take her sight within days.

It's the same day, start steroids now, emergency. And that one line, it never made it into the note. On the page it's a paracetamol headache, and nothing in the note is technically wrong. It's the dangerous part is what isn't there.

And see, that's what I'm going to talk about today: the dangerous failures are often the ones that actually look completely fine. Firstly, hello everyone. I'm Seb, medical doctor by background, and now run Composo, where we build AI evaluation systems for high-stakes domains.

So that one was a subtle kind of error, but sometimes it's not subtle at all. A man in his 20s sees his GP for a sore throat, tonsillitis. The AI writes that up. It gives him chest pain, suspected angina, diabetes medications he's never taken, and an address for a hospital that doesn't exist.

### Obvious errors

**Sebastian Fox** [1:39]
And I really like the LLM for this one. I think it's a good attempt at a hospital name. And weeks later he's invited to diabetic eye screening for diabetes he doesn't have. That's genuinely a real case that happened recently.

Obviously these kind of crazy ones someone notices, but it's those quiet ones that sit in the record, uncalled, that are the most challenging and can actually do a lot more damage. And they're not rare at all. In the largest real-world study of these notes, about 1 in 20 carried an error that was serious enough that it could cause significant harm to the patient.

1 in 20. That's not theoretical in testing, that's in production on real patients. And that's only the serious ones. If you widen that lens to all errors, nearly 1 in 5 had an important omission, and more than 1 in 10 had a hallucination.

And AI is being deployed at scale across healthcare, fast. Ambient scribes are one of the leading cases, already in about a third of US practices, and climbing. Physician AI used doubled last year, and none of this is tracked.

So for most of these systems, there's no adverse event reporting at all. The errors never show up as incidents, they just sit in the record. So errors this common that are going unseen, it's quite hard for me to believe that it's not already affecting patients.

It's not that we checked and it's fine, it's that we're flying blind. And this isn't just a healthcare problem, it's every high-stakes use of AI. Healthcare shows it more viscerally, because here being confidently wrong can be life and death.

But everything I show you can map straight back onto other domains as well. So here's what I want to do. I'm going to show you what exactly is going wrong, why it's going wrong, why the systems we built to capture don't work, and a suggestion at how maybe we can start to fix that.

So first, what's going wrong and why? So LLMs are getting good, obviously. They don't make stupid mistakes anymore most of the time. So it's not about dumb errors. Everything here came out of three of the best production ambient scribes on the market, ones that we all know.

We generated a load of notes across them last week, and this is exactly what's going onright now. This is every failure we found. Each dot is an error, colored by type. Left toright, how much it matters. Bottom to top, whether a strong automated check catches it.

### Failure map

**Sebastian Fox** [4:12]
And that split is the point. A handful up top get caught, but almost everything sits below the line. The ones I care about most are these on the bottomright, the high-stakes and missed ones. Let me show you what a couple of those look like.

So a woman comes in with a headache. Doctor asks, "Did it come on suddenly or build up gradually?" She says she doesn't know, it just happened. The note records that as abrupt, sudden onset. And sudden onset is a red flag.

You can see why "it just happened" could maybe be interpreted and inferred as abrupt onset, but that's a feature that points to a bleed on the brain. She never said it, the model decided it. And now that one word drives the whole workup.

Here's another. Doctor suggests running some tests. The patient says, "Can we just try antibiotics instead?" They agree, hold off on the tests, treat, and see how it goes. Note records the opposite: "Arrange tests today." It kept the plan that they talked out of, not the one they chose.

Every line in the note reads fine because it's not really a hallucination at all. It's not wrong, it was there in the original, but it's just not what they ended up deciding. So why are these happening? There's ambient scribes, there's first transcription, and then generation.

### Error types

**Sebastian Fox** [5:39]
A lot of it does happen on the transcription layer. It can be words misheard for their sound-alikes. So "humalog" heard as "humalin." Two incidents on completely different timelines, so swapping them could crash a blood sugar. Hyperthyroidism becomes hypothyroidism, the opposite condition.

Or a dropped "no" on "no evidence of cancer" that becomes "evidence of cancer." So these are really hard problems, and they are common. Not the ones I'm going to focus on, because most of what goes wrong is actually even with a perfect transcript.

It's the model reading the words correctly and still doing one of three things. Either it adds something that was never said, it changes something that was, or it omits something that should be there. Now the blatant version of each of these is really easy to catch.

The hard part in all three is the same. It's telling whether that thing that was added or changed or dropped actually matters. It's detecting that slight over-inference versus the dangerous fabrication. The harmless rephrase versus the meaning flip. A dropped line of small talk versus a dropped allergy.

So the ones that matter slip through, along with all of the ones that don't.

That call, which different matters, is taste effectively. Not aesthetic taste, but essentially judgment. It's whether, in this context, a missed allergy might kill someone or is not important. And I think there's three properties that really matter about this.

### What matters

**Sebastian Fox** [7:19]
It's tacit, so your domain experts have it, but they can't fully write it down. It's contextual, so the same detail is critical in one note noise in the next. And it's moving. The model changes, guidelines change, two good doctors disagree, different hospitals have different definitions.

And so there's no fixed target to write down. And so the model knows the facts, ultimately. They're extraordinarily capable. But what they lack is a sense of what matters here, for this specific example. And that's why even brilliant models make these mistakes.

So one natural move: you're never going to make that generator perfect, and generator is cheap. Generation is cheap, so stop fixing it at the source. Let it write, put a checker after it, pass only what clears the bar.

### Checker after generator

**Sebastian Fox** [8:07]
And that checker should be the easier job. The generator has to get everythingright and pay attention to lots of varying instructions. Whereas the checker only has to find the one thing that's wrong and just focus on that task.

You can also give it more time, more tokens, the exact failure modes to hunt for. Evaluation should be easier than generation. It's the asymmetry of verification, verify's law. And that's why AI is raised ahead anywhere you can cheaply check the answer, maths and code.

And doing this is exactly what the best teams do. They put a lot of energy into evaluation. It starts with the gold standard, which is expert humans reviewing notes, which obviously works offline, but you can't put a human on every note in production.

So they automate it, they build a serious system. And some of the best versions of this that I've seen are you take the transcript and the note and context, put it in front of the judge. A detailed rubric for faithfulness with worked pass and fail examples.

The rubric may be auto-optimized with Jeeper or something like that. Maybe you have some deterministic NLP to sort of count up medical concepts that are differing between the two. That's a powerful system, and yet I pulled all of those errors earlier out of ambient scribes in an afternoon.

So if the evaluation is this good, how are these errors still getting through? So I built this system and ran those same notes through it, and it scored most of them fine. It flagged a handful of them and signed off the rest.

### Blind judge

**Sebastian Fox** [9:48]
But 1 in 5 of those clean passes still had some sort of serious error buried in it. And often that was an omission. The things that should have been there and actually quietly weren't. And that's the best version of a judge that I've seen in a lot of teams, and it waved them through.

Why did it do that? It's not stupid. It's a frontier model. Serious engineering behind it, more than clever enough to read the whole encounter and catch every obvious error. And it's not blind either. And that's part of the trap.

If you take a note that says "start amoxicillin" when the real decision was actually to wait and see, it's faithful to the words, amoxicillin did come up, but it's a lie about the intent. A good judge might catch that, might, but whether it flags that versus the other dozen other things that it could comment on depends on it knowing what decision matters most.

And so it's not blind, it just can't tell what counts, essentially. So the note passes confidently, and you put a judge like that in front of your system, and you've not added a safety net. You've added a second silent failure that just nods along with the first.

And here's the root of it. So in maths or code, the verifier comes for free. A unit test, a compiler. But for "is this note safe and complete," there's no unit test. You have to build the verifier yourself.

And verification is only easier than generation for the easy bit, i.e., spot the difference between transcript and note. But that's not the hard bit. The hard bit is knowing, of all those differences you've seen, which matter. And that's harder than writing that plausibly good note in the first place.

Because that standard of good was never written down anywhere that the judge can read it. A rubric that you pre-specify is only the taste you could write down. The taste that matters is the part that you couldn't. And so here's a bit more detail on what matters looks like.

Two patients, both with blood in their urine, both notes dropped the same kind of line, where they'd been on holiday. One had been to France, the other to Lake Malawi. Same omission, same shape, same mistake. Well, not really, because blood in the new urine obviously worrying you away and you're going to investigate it, but the France trip is irrelevant.

### Lake Malawi

**Sebastian Fox** [12:10]
The Lake Malawi trip is the diagnosis. Fresh water in sub-Saharan Africa means just somiasis until proven otherwise. And it completely changes what the management plan is. So that same dropped line in one note is pure noise. In the other, it's the answer.

And which one it is, you simply just can't write all of that down in advance. So if you can't write it down, you can't write taste down, how do you get that into your evaluator and your whole application system?

Well, we've answered a version of this before. RLHF exists because you can't write the reward function for good. You learn it from examples by showing it. The only question is where you keep what you've learned. And there's three places.

You can either specify it up front, you can stuff the prompt, write the perfect rubric, and we've just watched that fail, essentially. You can bake it into the weights, fine-tuning or continual learning. But for a standard that's still moving and a score that has to be explainable, the weights I think are the wrong place to keep that.

They go stale, they can't tell you why, and you can't change them without a retrain. So there's the third option, which I'll show you, which is you essentially just keep the taste as the examples themselves. Past judgments, expert corrections, references.

And for each output, you retrieve the ones that bear on it into the judge's context, add one, and it's live on the next call. And you can point at exactly what moved the score. For this problem, it's both better and also cheaper to do.

So that's the way to do that. It's one repeating loop, three steps. Discover the failure modes from real outputs. Capture how your experts judge them. Calibrate every output against that. And when the standard moves, the loop moves with it.

### The loop

**Sebastian Fox** [13:59]
So more detail, discover. You don't write that rubric in a vacuum. You have to put the system in production and look at the real outputs. You cluster what goes wrong and the failure modes surface on their own. You name them.

This is your failure mode ontology. Discover from your data, not guessed on a whiteboard. And you can't shortcut it. The ways that a real system goes wrong are effectively unbounded, and synthetic test cases only cover the failures you already imagined.

The ones that hurt you are often the ones that you didn't. And you only find those in real outputs. So this ontology is your map, what to capture judgment on, and what to retrieve against, including the failures that you'd never thought to check for.

### Capture and calibrate

**Sebastian Fox** [14:39]
After that, it's capture and then calibrate. So those discovered modes, they're not a checklist that the judge runs, but they organize everything. What you ask your experts about, how you index the cases that you'll retrieve. And capturing is a simple part.

You put real outputs in front of your experts. Clinicians spend a focused few hours leaving comments. A session doesn't have to be a month-long labeling project to start with. And you collect their judgment. Not just a score, but the reasoning and corrections.

And over time, you build up that record of how your experts actually judge. You then calibrate. The generic part of this, you can write down once easily. For example, "be faithful" or "don't drop anything important." But what you can't write down is what counts as a serious miss for this specific note.

That's contextual. And it shifts from note to note. So

what we recommend is you assemble that on the fly. For each output, your judging agent pulls in everything that bears on this one case. It's memory of the most similar outputs, then it's judged before and how they scored.

The expert corrections that apply, the reference docs and guidelines. It's just context engineering, per output. And crucially, not just one pre-specified rubric in a vacuum, and not a model that you have to retrain every week, but a full case-specific standard assembled for this output.

And it's a loop as well. Every output you judge, every correction, sharpens the next. And when a brand new failure mode appears, discovery surfaces it and it flows straight back in. And so to make that a little bit more concrete, that headache that I opened with, the one that was really a possible blindness emergency, here's the kinds of things that you would want to pull in for that note.

The nearest cases that your experts have judged. Not this exact patient, but the same shape, maybe a red flag filed as routine. The corrections that apply, like a new headache over 50, suggest something that you need to check red flags on.

And some criteria and guidelines. And you pull all of that in. It hasn't memorized this case. It's a capable model and handed theright context to reason from. Held against that, the drop red flag stands out. It was never actually hard to catch.

### Three judges

**Sebastian Fox** [16:56]
It just didn't know what mattered. And so if you take that same dataset of generated notes from the start and pass it through these three judging systems, the first, a strong off-the-shelf judge with a rubric, frontier model, it's better than a coin flip, but it misses most of what matters.

The second, that sort of serious system that we talked about before, rubric, Jeeper, maybe some deterministic checks, better again, but still missing quite a lot of what counts. The third, the judge running this loop, discovered failure modes, calibrated per output against what experts judged, is performing a lot better on this specific dataset.

Same notes, the only thing that changed is what the judge was shown. And the difference here, it's not more compute or a better prompt, it's that the first two fight taste and lose. They guess the criteria, they freeze one standard, and they go stale.

This repeating evolving loop does the opposite. It discovers the modes, fits the standard to each note, and keeps learning. So you might not write clinical notes, but if you ship anything where being confidently wrong has a cost, the contract review that misses the clauses that change the deal, the support agent that promises a refund you don't offer, the same thing is true for all of those.

It's watched, if at all, by a judge with no taste for what matters in your domain. So three things. Discover your failure modes from real outputs. Don't guess them. Capture your experts' judgment on them, the standard that they can't write down.

Calibrate every output against the cases that they've already judged. Not a static rubric, not a retrained model. Then keep that loop running. And if you take one thing away, easiest place to start is your experts leaving free-form comments on real outputs.

### Takeaway

**Sebastian Fox** [18:50]
That's the raw material for everything else. Your judge can verify anything that you write down in advance, but the standard of good never could be. And so stop trying to write it all down in advance and just start capturing it case by case and evolving it.

That's why evaluation can't be a thing you build once and freeze. The standard it checks against doesn't exist on paper. It has to be discovered from real outputs, captured from the people who hold it, and kept alive as it moves.

Evaluation isn't something you have, it's something that you do continuously over time. Thank you.

---

This library is powered by PodHood (https://podhood.com), the podcast website platform.
