Start free trial →
Case Study · Dual-pass test

We tested our analyzer on 7 public YouTube depositions — here's what came out

Two test passes against the same 7 depositions: closed-caption text fed to the analyzer directly, and live audio captured via Mac loopback through Deepgram. Real numbers, real cross-exam questions, real admissions. Plus the silent production bug this test caught.

By John Mahoney · May 15, 2026

The Top Line

134
Cross-exam questions generated
14
Admissions detected
27
Evasion patterns flagged
8
Breach-of-SOC elements advanced

From 30 high-signal chunks across 6 depositions in CC mode + 7 live-audio captures. Highest individual case: vascular-surgery expert depo (Daubert vulnerability 75/100, 8 PubMed literature citations the analyzer pulled in real time).

Why we ran this test

We've published two reproducible case studies showing what the analyzer does on a single full deposition. This test takes the next step: can the same tool handle a cohort of 7 unrelated cases, including one where YouTube transcripts are disabled (so the only path is live audio)?

Two reasons this matters:

Methodology

The cohort

7 public medical-malpractice depositions on YouTube — pediatric neurology, ER physician (×2), Johns Hopkins vascular surgery expert, triage nurse, ER nurse Doppler exam, defendant PA. Total ~12 hours of testimony.

Test A — closed-caption text

  1. Pull each video's English transcript via youtube-transcript-api.
  2. Bucket the 30-second ASR segments into 120-second chunks (~250-400 words each).
  3. Score each chunk by weighted regex hits across 8 impeachment patterns (memory failures, breach admissions, evasion, contradictions, qualifications gaps, FRE 702 vulnerabilities, etc.).
  4. Send the top 5 highest-scoring chunks per video through POST /courtroom-ai/api/analyze — the production endpoint paying users hit.

Test B — live audio

  1. Mac output → MedLegal Multi-Output Device → BlackHole 2ch (virtual audio loopback).
  2. Mac default mic input set to BlackHole 2ch.
  3. Open courtroom-ai page in Chrome, select Deepgram source, click Start. Browser getUserMedia opens BlackHole as the mic.
  4. Open YouTube video in second tab, play 3 minutes per video.
  5. Audio routes from Chrome's YouTube playback → BlackHole → courtroom-ai's mic input → Deepgram WebSocket → analyzer.
  6. Capture analyzer events from the live transcript + signals panel.

Same analyzer prompt for both tests. Same Anthropic Haiku 4.5 model. The only difference is whether the input came from YouTube's CC API or from real audio playback.

Results

Per-video table

DepositionCC DaubertCC Cross-QCC AdmLive AdmLive Sig
Pediatric neurologist (aneurysm)
rb1GiUAX6aw
74244414
ER physician (Shady Grove)
9hjNW-eHvlg
3919258
ER physician (St Agnes — knee)
Pq6o1fJFrmI
5418206
Vascular surgery EXPERT (Johns Hopkins)
Emc1TaC3ceU
7523128
Triage nurse (Tolson)
9g1V1RV8F2A
6025307
ER nurse Doppler (Tolson)
gUTPIOPkDHU
74252018
Defendant PA (live audio only — YouTube transcripts disabled)
4dZ9p8nC24U
06

What the numbers say

Both pipelines work end-to-end. Every CC chunk returned real model output (medical accuracy score, Daubert vulnerability score, cross-exam questions, admission/evasion detection, FRE foundation triggers). Every live-audio session captured real depo speech and routed it to the analyzer.

The vascular-surgery expert depo was the highest-impact case — Daubert vulnerability 75/100, 23 cross-exam questions, and 8 PubMed literature citations the analyzer pulled in real time on ischemia, myoglobin, and intimal-tear topics. Real PMIDs. The kind of thing that would take a human attorney 30 minutes per chunk to pull manually.

Where live audio underperformed CC — videos 3, 5, 6 caught zero admissions in the 3-minute live-audio window. Three reasons:

  1. Real-time-only by design. Live mode catches what plays in the 3-minute window. The CC pre-screen surveyed the FULL deposition (165 minutes for the pediatrician depo) and surgically picked the top-5 highest-signal chunks. Apples to oranges by definition.
  2. ASR errors on medical jargon. Deepgram occasionally mistranscribes "Doppler" → "doctor" or "intimal tear" → "internal terror," which suppresses signal detection.
  3. Non-clinical preamble heuristic. Currently evaluates each chunk in isolation; a procedural sentence after 60 seconds of clinical Q+A can suppress analysis. (Open issue, fix queued.)

The silent production bug this test caught

Two hours into testing, every analyze call across the entire production user base started returning {"error": "Analysis unavailable"} for every expert dimension — but the health endpoint stayed green. The only signal was firing a real chunk and seeing all-empty results.

Root cause: Anthropic Claude Haiku 4.5 began wrapping responses in ```json ... ``` markdown fences despite the prompt's explicit "no markdown" instructions. The defensive parser used lastIndexOf('{') which picks the INNERMOST nested brace — broken for the analyzer's 11-key nested schema ({"medical": {...}, "daubert": {...}, ...} — the inner-most { would be inside literatureHits[0], not the outer object).

Fix shipped in commits 8af2a89 and 13e5977: strip markdown fences first, then use indexOf('{') + lastIndexOf('}') for the OUTER brace span. Plus pinned Haiku to dated revision claude-haiku-4-5-20251001 for stability, and added a CI smoke test that fires a known-good chunk against /api/analyze-smoke on every main-branch deploy.

This is the kind of bug a smart competitor would never tell you about — a silent quality regression that affected real customer sessions. We're flagging it because reproducibility means showing the failures, not just the wins.

Sample output: pediatric neurologist depo, chunk 0

From the 160:06 mark of the pediatric neurologist depo. Witness is a treating physician facing wrongful-death cross-examination over a missed aneurysm in a teenage patient (Jonathan).

"Examination of Jonathan — did you actually read your report? The report? She dictated it. I'm sorry. Dave, I mean, I don't recall. I usually do it same day or the next day, but I don't remember what... There was that referral slip for the CT scan. I may have misheard you in this — but did you actually send a copy of that over to Children's ahead of time? I fax it the moment I write an order for imaging — we make a photocopy in our office and we fax it to Children's Hospital right away. Okay, do you have any confirmation of that fax being sent? I don't need it and I don't get it. Okay, so you don't keep anything like that in your office? Yeah. Okay, but it's your understanding it would've been sent that day, is that correct? All right, how long after you dictated your report did you send it to the pediatrician? I don't recall. Do you have a custom and practice to do within a certain time frame? Either within a reasonable time — could be the same day, it could be longer than that... I don't recall, I don't recall, I don't recall."

What the analyzer flagged in this single 120-second chunk:

5 cross-exam questions generated for this chunk alone. A senior plaintiff's attorney would generate similar questions in 15-20 minutes of prep work; the analyzer produced them in 7 seconds.

Reproducibility

Anyone with the four ingredients can rerun this test:

Re-run, compare your numbers to ours. If they're materially different, file an issue.

Product improvements queued from this test

  1. Auto-load YouTube CC transcript as chartContext. When a user pastes a YouTube URL into the prep panel, fetch the transcript via youtube-transcript-api and feed it to the analyzer as chart context. Then "witness now says X but YouTube transcript says Y" cross-references fire automatically. (Backend already accepts chartContext; frontend wiring queued.)
  2. Tune the non-clinical preamble heuristic to inspect a rolling window, not the chunk in isolation. A procedural sentence after 60 seconds of clinical Q+A shouldn't suppress analysis.
  3. Per-specialty Deepgram keyword boosts for vascular surgery (pulses, ischemia, fasciotomy, myoglobin) and pediatric neurology (saccular aneurysm, anterior communicating artery). Reduces ASR errors on medical jargon.
  4. Hybrid Daubert score — combine the regex pre-screen with model output so a low-content live chunk that follows 60 seconds of high-signal content still gets context-aware analysis.

Disclosure: I'm the founder of MedLegal AI. The reproducibility commitment described in our methodology essay applies to this test too. The dual-pass numbers above are unedited; the production bug we caught is documented because hiding it would violate the commitment. The point of publishing failures, not just wins, is so attorneys can evaluate vendor claims with their eyes open.

Try it on your own deposition transcript

The same analyzer that ran on these 7 public depositions runs on your case. Three free analyses on the trial — no credit card required.