Repository navigation
Send meeting processing time and stage timings to PostHog - #1861
Merged
Merged
Conversation
meeting_transcript_saved now carries how long the job took from start to saved (processing_ms), how much of that the Mac slept (sleep_ms), time per stage (models_ready_ms, resample_ms, diarize_ms, stt_ms), the number of speech-to-text calls and seconds of audio fed to them, the recording length in whole minutes, the speech model, and the coarse Mac class. Timings are rounded to 10 ms. A task-local MeetingPipelineTimings recorder is bound per job in the task manager, so each stage adds its own time without new parameters through the pipeline. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LcH2PBaqN6yYkxeoaYrj45
r3dbars
marked this pull request as ready for review
September 25, 2026 17:14
This was referenced Sep 25, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Justin · project thread
Why
Before: PostHog can't say how long a meeting takes to turn into a transcript. The only number is a guess from pairing the stop and save events, and it can't tell slow speech-to-text from a Mac that slept, a cold model, or a slow Mac.
After: every
meeting_transcript_savedsays how long the job took, how much of that the Mac slept, and how long each stage took, plus the speech model and Mac class. That's what we need to rank the "faster meeting transcripts" fixes on real users.Product Impact
meetingsmeeting reliabilityWhat changed
MeetingPipelineTimings(Core): a task-local, lock-guarded recorder bound once per job inTranscriptionTaskManager(live, import, and failed-meeting retry paths). Stages add their own time:ensureModelsReadyForPipeline,AudioResampler.loadAndResample,DiarizationService.diarizeOffline(incl. ERes2Net re-embed), and each speech-to-text call viaMeetingSTTAdapter. Sleep = wall clock minussystemUptime.publishTranscriptSavedtakes an optional snapshot and setslastPipelineTimingsbefore publishing, so the host never reads a previous save's numbers.MeetingProcessingTelemetry(app) rounds them:processing_ms,sleep_ms,models_ready_ms,resample_ms,diarize_ms,stt_ms(10 ms),stt_calls,stt_input_seconds,recording_minutes, plusstt_model,mac_chip,memory_gb_bucket.testMeetingProcessingTelemetry, SPMMeetingPipelineTimingsTests.How I checked it
scripts/dev/agent-preflight.shbash scripts/dev/linux-checks.sh(48 passed).agents/test-matrix.ymlfor the files changed (CI)bash build.sh --no-open(CI)bash run-tests.sh(CI)bash run-integration-smoke.sh(CI)swift test(CI)bash run-e2e-smoke.sh/swift test --package-path Tools/<Package>if the matrix maps themChecks I could not run, and why:
Mac or hardware test still needed? If yes:
events.jsonl/PostHog debug formeeting_transcript_savedcarryingprocessing_ms,stt_ms,stt_calls. Onmainthose keys are absent.Risk Review
check-telemetry-keys.pyPASS)check-source-pins.py --changed-onlyPASS)Notes
The retranscribe-saved-meeting path stays untimed on purpose (sends no timings). Timing overhead is one uptime read per stage and per speech-to-text call.
Agent handoff
COORD_DONE: BRIEF | this PR | meeting speed telemetry | none | none | linux-checks, source pins, telemetry keys | CI + deep review🤖 Generated with Claude Code
https://claude.ai/code/session_01LcH2PBaqN6yYkxeoaYrj45
Generated by Claude Code