Composite study

This is a product-class write-up, not a named-client story and not a results press release. Counts below describe the pack we actually write (approach points, tools, layers) — not invented bug totals or conversion lifts.

4
Approach points
5
Tools in the pack
5
Layers covered
3
Challenges documented

Overview

The scribe produced usable notes on a quiet demo call. Production rooms had two speakers, a family member, and a nurse mentioning a different MRN. The model mixed speakers and attached the wrong identifiers.

Separately, client-side logging and an analytics SDK were shipping snippets of transcript. That is a BAA and minimum-necessary problem, not an NLP score problem.

Industry pattern this is grounded in

Health systems have warned that unapproved ambient voice tools can breach data-protection rules. The failure is often in the pipeline, not the microphone demo.

Highlights

Typical launch bar: Block until pass rules hold on the money, identity, or safety path.

Challenges

01

We could not use real clinic audio. Fixture scripts had to cover overlap, accents, and medication names without being a privacy incident.

02

The STT vendor and the LLM vendor were different companies; one BAA did not cover the other.

03

“It only keeps audio for 24 hours” was a slide, not something we could see in traces until we asked for retention evidence.

How we tested

01

Map every hop: browser, STT vendor, LLM, EHR write-back, logs, crash reporters.

02

Run speaker-overlap fixtures and require the UI to flag low-confidence spans instead of silently attributing speech.

03

Confirm session timeout and that PHI is not left in local storage after the exam ends.

04

Treat any PHI in Sentry breadcrumbs or URL query params as Critical.

Starting point vs what we required

Starting point versus the controls we required
Starting pointWhat we required
We could not use real clinic audio. Fixture scripts had to cover overlap, accents, and medication names without being a privacy incident.Map every hop: browser, STT vendor, LLM, EHR write-back, logs, crash reporters.
The STT vendor and the LLM vendor were different companies; one BAA did not cover the other.Run speaker-overlap fixtures and require the UI to flag low-confidence spans instead of silently attributing speech.
“It only keeps audio for 24 hours” was a slide, not something we could see in traces until we asked for retention evidence.Confirm session timeout and that PHI is not left in local storage after the exam ends.

What we delivered

01

Journeys / UI

  • Playwright — Exam-room journey and leftover local storage
02

LLM traces / evals

  • LangSmith — Confirm payloads do not include unexpected identifiers
03

Failure telemetry

  • Sentry — Hunt PHI in client errors and breadcrumbs
04

Security scan

  • OWASP ZAP — Exposed debug endpoints on the scribe API
05

API / contract

  • Postman — Write-back authorization

Outcomes

Findings ranked PHI-in-logs and cross-vendor data flow above word-error-rate. The team disabled the analytics SDK on the scribe route and added a visible “uncertain speaker” state.

We left a repeatable Playwright path for start-scribe → stop → note-in-chart → PHI-cleared-from-browser, plus a Postman check that the write-back API rejected a swapped patient id.

Stack

Testing stack used on this product class
LayerToolWhat we validated
Journeys / UIPlaywrightExam-room journey and leftover local storage
LLM traces / evalsLangSmithConfirm payloads do not include unexpected identifiers
Failure telemetrySentryHunt PHI in client errors and breadcrumbs
Security scanOWASP ZAPExposed debug endpoints on the scribe API
API / contractPostmanWrite-back authorization

Same method as the rest of our work: severity-ranked findings, pass rules in writing, and a ship / wait / block call. See the evaluation method and tool comparison.