Description

The transcript-conversational-audit skill already produces speaker_map (M1 interviewer / S1,S2 guests) and turns, but heuristically. Ground those turns on the acoustic boundaries from TASK-244 and have the LLM label each acoustic speaker → M1/S1/S2 using the interviewee metadata. This is a delta on the existing skill / rake audit path, not a new engine — the speaker_map/turns output must stay schema-compatible with the current ingest.

Acceptance Criteria

Implementation Plan

Goal — ground the audit skill’s heuristic turns on TASK-244’s acoustic segments

This is a delta on the existing rake audit:* path, not a new engine. Today the turn split is heuristic in two places, both of which hardcode M1/S1 and never emit S2:

Replace the guessing of turn boundaries with the acoustic diarization.segments from 244; the LLM’s only speaker job becomes labeling each acoustic SPEAKER_xx as the interviewer (M1) or a named interviewee (S1/S2…), using interviews.yml.interviewees.

Pre-work wrinkle to repair (blocks the audit path on the current corpus)

bin/prepare_audit_prompt.rb line 34-35 reads transcript_payload['content'], but all 196 files are now structured (turns, no content) — so the prompt currently ships an empty transcript. 247 must fix the text source regardless of diarization:

Files to touch

Schema compatibility (AC#3) — the load-bearing proof

bin/ingest_audit.rb loads the existing transcript payload and overwrites only four keys: speaker_map, turns, insights, youtube (lines 52-56). Therefore:

Verification (AC#4)

Run against 2-3 known-good interviews, including the reference layout fixture _data/transcripts/jez-humble-goto-conference-2014.yml, plus one multi-guest interview (e.g. steve-kim-jim-suchy-...) to prove S2 labeling. Confirm: speaker_map binds each M1/S1/S2 to an acoustic_id, turn count roughly matches acoustic segment runs, rake audit:ingest[slug] writes cleanly, the diarization block is still present after ingest, and bin/validate_data + bin/pipeline ci pass.

Coordination

Depends on TASK-244 (acoustic block + schema). Feeds TASK-250 (corpus backfill), TASK-251 (insight schema), and TASK-252 (captions from diarized turns). This task changes only the audit-skill/rake path — no new transcription engine.

Definition of Done