ML — Live Talking Points
Batched insight pipeline producing draft talking points every N transcript segments, written back through Core, plus the final talking points in post-meeting synthesis.
ML — Live Talking Points
Owner: ML Engineer Domain: ml Complexity: M Prerequisite: Core Live Talking Points slice merged;
./dev gen allrun
When this slice is complete, ML's batched insight pipeline re-extracts talking points from the rolling live transcript on a cadence (every N segments / every ml_talking_point_cadence_seconds), writes each new or refined point back to Core via POST /meetings/{id}/talking-points, and avoids emitting near-duplicate wording of a point it already posted. On finalization, ML's post-meeting synthesis produces the final talking-point set through the same PUT /meetings/{id}/synthesis path the upload-finalization pipeline uses.
Required Capabilities
- ML re-extracts talking points from the live transcript on a cadence and posts new or refined ones to
POST /meetings/{id}/talking-points. - Refinement does not repost a point that is an exact duplicate of an already-posted draft (case/whitespace-insensitive).
- The final, post-meeting synthesis pass produces the meeting's final talking points via the same
PUT /meetings/{id}/synthesiswrite-back the upload path uses.
Dependencies
- Core Live Talking Points slice must be merged and
./dev gen allrun — specificallyPOST /meetings/{id}/talking-points. - Milestone 04 (
live-transcript-to-final-rebuild) — the live transcript segment stream this pipeline reads from.
Domain Notes
This slice is proven end-to-end rather than through a dedicated ML-only bet test: the bet suite streams real audio through Core → ML → the mock AssemblyAI/OpenAI providers and observes the resulting draft and final talking points through Core's REST API. There is no bet-progress test that isolates the ML extraction pipeline itself (e.g. asserting on the cadence timer or the dedup logic directly) — that level of detail is covered by permanent ML unit tests, not the bet suite.
Test Cases
Test cases map to tests/bets/meeting-recording/test_milestone_07_live_talking_points.py. These are end-to-end tests that exercise the real ML extraction pipeline (mock AssemblyAI transcript → mock OpenAI insight extraction); the assertions below are the ML-facing portion of each. Run via ./dev test bet meeting-recording.
| Test | Location | Assertion |
|---|---|---|
test_draft_talking_points_appear_during_live_transcript | test_milestone_07 | The batched extraction pipeline produces at least one draft talking point from the live transcript it is fed, with non-empty content. |
test_draft_talking_points_update_with_more_context | test_milestone_07 | A second and third extraction pass over more transcript context change the draft set (new content or new ids), and refinement never reposts an exact duplicate of an existing draft's content. |
test_finalization_replaces_drafts_with_final_talking_points | test_milestone_07 | The post-meeting synthesis pass produces a non-empty final talking-point set through PUT /synthesis, replacing every draft. |
Completion Checklist
- Code merged and deployed
- Bet progress tests pass (
./dev test bet meeting-recording) - Permanent service tests implemented per testing strategy
- Code review completed
- Testing review completed
- System documentation updated (as applicable)