Deep dive · 02
Evaluations — how we knew it was safe to ship
In a clinical AI product, evals are the engineering moat. Knowledge quality and conversational quality are both downstream of how rigorously you can measure them — so this is the part of PHP I'd carry into any AI system I build next.
Helping a patient is two capabilities, not one
Detail — why the split is a design decision, not a convenience
Collapsing both into one rubric produces noisy, un-actionable scores: a low rating could mean a hallucinated dosage or merely a verbose tone. Separating them makes every failure attributable to a subsystem we could actually fix. Perfect knowledge delivered coldly fails; warm delivery of a wrong fact is dangerous.
The failure taxonomy was discovered, not assumed
Detail — the failure modes we converged on
- Incorrect fact ingested
- Irrelevant fact retrieved for the query
- Incorrect query generated for a turn
- Didn't ask enough clarifying questions
- Too verbose — should be brief & empathetic, with progressive disclosure once the patient signals value
The annotation tooling I built
Detail — same trace, two task-specific renderings
What deserves a judge
The loop — slow human round, fast judge net
Detail — why monthly, and who triggered it
Sourcing real patients with these conditions across different clinical stages is slow, but it's the only honest signal for a clinical product — simulated users would have taught the judges the wrong things. I triggered rounds when the agent backend had changed materially enough to warrant fresh feedback.
Calibrating — and governing disagreement
Coverage & cost
Detail — adversarial & red-team coverage
A separate adversarial / red-team set ran distinct from the core use-case traces, probing for off-scope advice, jailbreaks, and unsafe completions the naturalistic traces wouldn't surface.
The 0th round that reframed the product
Going in, the product owner and I had a confident definition of "good": deliver the most clinically accurate, important information as fast as possible. The very first round of evals demolished it. Almost none of the doctors' feedback was about facts or accuracy — it was all about behavior.
"Even though the AI understood the user's clinical standing and gave a clinically appropriate response, it should have asked more questions to get to know them — so the user feels heard about their symptoms."
"Don't reveal all the clinical help at once, even though it's accurate. Reveal it progressively, at the user's pace — what they're going through is big and needs empathy, not just information."
That feedback forced us to reassess what we were actually building. In conversations with the doctors, a striking split emerged: