WordloopWordloop
WorkMeeting RecordingTechnical Design DocMilestones07 Live Talking Points

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 all run

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}/synthesis write-back the upload path uses.

Dependencies

  • Core Live Talking Points slice must be merged and ./dev gen all run — specifically POST /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.

TestLocationAssertion
test_draft_talking_points_appear_during_live_transcripttest_milestone_07The 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_contexttest_milestone_07A 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_pointstest_milestone_07The 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)

On this page