Recording · Day 3

Council meeting - Public hearing

Technical details
Recording ID 936
Meeting ID 11
File path cc2ecf38-f606-4531-ad1b-a7b39ebb5316.mkv
Recording information
Status
Completed
Duration
8h45m
Start time
2026-04-02 13:30
End time
2026-04-03 04:14
Extract audio
Extract WAV audio for transcription and diarization
Storage & files
File type Storage Path / Key Status Action
Video S3 cc2ecf38-f606-4531-ad1b-a7b39ebb5316.mkv Exists
Transcript S3 0f713959-6845-4050-aeba-27fd798baa72.json Exists
WAV S3 6077fe72-ddac-4eda-8390-67f0ac2bd078.wav Exists
Diarization Pyannote S3 dacc01ac-ed7f-473e-85fa-5ba50e724207.json Exists
Diarization Gemini S3 7563b5df-a7ae-41f5-9655-7ed8481bd441.json Exists
Diarization Consolidated S3 a9b6041d-e50a-442a-8cb4-858f2926dab8.json Exists
Transcription progress
Failed Job: cf500ac2…
Loading transcription status…
Full recording transcript and speaker diarization data available for download.
Gemini-refined · speaker labels improved with AI using meeting agenda context
Processing logs
200 entries 2 errors 37 warnings
19:44:59 [ERROR] Step full failed: Speaker diarization failed for file: 6077fe72-ddac-4eda-8390-67f0ac2bd078.wav Details: Speaker diarization failed for file: 6077fe72-ddac-4eda-8390-67f0ac2bd078.wav Details: Diarization job timed out after 600 seconds
19:44:59 [ERROR] Diarization failed: Speaker diarization failed for file: 6077fe72-ddac-4eda-8390-67f0ac2bd078.wav Details: Diarization job timed out after 600 seconds
19:44:59 [INFO] {"step": "diarization", "status": "failed", "updated_at": "2026-09-07T13:44:59.131117-06:00", "error": "Speaker diarization failed for file: 6077fe72-ddac-4eda-8390-67f0ac2bd078.wav\nDetails: Diarization job timed out after 600 seconds"}
19:44:59 [ERROR] ERROR: Diarization job timed out after 600 seconds
19:44:59 [INFO] Poll #60: Status: running
19:44:48 [INFO] Poll #59: Status: running
19:44:38 [INFO] Poll #58: Status: running
19:44:27 [INFO] Poll #57: Status: running
19:44:16 [INFO] Poll #56: Status: running
19:44:06 [INFO] Poll #55: Status: running
19:43:55 [INFO] Poll #54: Status: running
19:43:45 [INFO] Poll #53: Status: running
19:43:34 [INFO] Poll #52: Status: running
19:43:24 [INFO] Poll #51: Status: running
19:43:13 [INFO] Poll #50: Status: running
19:43:03 [INFO] Poll #49: Status: running
19:42:52 [INFO] Poll #48: Status: running
19:42:42 [INFO] Poll #47: Status: running
19:42:31 [INFO] Poll #46: Status: running
19:42:21 [INFO] Poll #45: Status: running
19:42:10 [INFO] Poll #44: Status: running
19:42:00 [INFO] Poll #43: Status: running
19:41:49 [INFO] Poll #42: Status: running
19:41:39 [INFO] Poll #41: Status: running
19:41:28 [INFO] Poll #40: Status: running
19:41:18 [INFO] Poll #39: Status: running
19:41:07 [INFO] Poll #38: Status: running
19:40:57 [INFO] Poll #37: Status: running
19:40:46 [INFO] Poll #36: Status: running
19:40:36 [INFO] Poll #35: Status: running
19:40:26 [INFO] Poll #34: Status: running
19:40:16 [INFO] Poll #33: Status: running
19:40:05 [INFO] Poll #32: Status: running
19:39:55 [INFO] Poll #31: Status: running
19:39:45 [INFO] Poll #30: Status: running
19:39:34 [INFO] Poll #29: Status: running
19:39:24 [INFO] Poll #28: Status: running
19:39:14 [INFO] Poll #27: Status: running
19:39:04 [INFO] Poll #26: Status: running
19:38:53 [INFO] Poll #25: Status: running
19:38:43 [INFO] Poll #24: Status: running
19:38:33 [INFO] Poll #23: Status: running
19:38:22 [INFO] Poll #22: Status: running
19:38:12 [INFO] Poll #21: Status: running
19:38:02 [INFO] Poll #20: Status: running
19:37:52 [INFO] Poll #19: Status: running
19:37:41 [INFO] Poll #18: Status: running
19:37:31 [INFO] Poll #17: Status: running
19:37:21 [INFO] Poll #16: Status: running
19:37:10 [INFO] Poll #15: Status: running
19:37:00 [INFO] Poll #14: Status: running
19:36:50 [INFO] Poll #13: Status: running
19:36:40 [INFO] Poll #12: Status: running
19:36:29 [INFO] Poll #11: Status: running
19:36:19 [INFO] Poll #10: Status: running
19:36:09 [INFO] Poll #9: Status: running
19:35:58 [INFO] Poll #8: Status: running
19:35:48 [INFO] Poll #7: Status: running
19:35:38 [INFO] Poll #6: Status: running
19:35:28 [INFO] Poll #5: Status: running
19:35:17 [INFO] Poll #4: Status: running
19:35:07 [INFO] Poll #3: Status: running
19:34:57 [INFO] Poll #2: Status: running
19:34:46 [INFO] Poll #1: Status: running
19:34:36 [INFO] Diarization job started (Job ID: cf500ac2-e162-468e-b97a-83b1c6579983). Processing audio...
19:34:36 [INFO] Submitting diarization + transcription job to pyannote.ai (URL: https://ccai-prod.s3.amazonaws.com/6077fe72-ddac-4eda-8390-67f0ac2bd078.wav?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAQK6LNXA7XP5KSEWG%2F20260907%2Fca-central-1%2Fs3%2Faws4_request&X-Amz-Date=20260907T193436Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=66d87459914e2f8421ff21a61bc475e78d2fbcc2e93752108d89437fec0a6134)
19:34:36 [INFO] Starting speaker diarization via pyannote.ai API
19:34:36 [INFO] Starting speaker diarization via pyannote.ai API
19:34:36 [INFO] Using S3 pre-signed URL for diarization
19:34:35 [INFO] {"step": "diarization", "status": "processing", "updated_at": "2026-09-07T13:34:35.981029-06:00"}
19:34:35 [INFO] Starting transcription + diarization
19:34:35 [INFO] Audio extracted and attached: /tmp/tmpym6c79kv/cc2ecf38-f606-4531-ad1b-a7b39ebb5316.wav
19:34:35 [INFO] {"step": "extraction", "status": "completed", "updated_at": "2026-09-07T13:34:35.970825-06:00", "wav_path": "/tmp/tmpym6c79kv/cc2ecf38-f606-4531-ad1b-a7b39ebb5316.wav"}
19:34:28 [INFO] Audio extracted to /tmp/tmpym6c79kv/cc2ecf38-f606-4531-ad1b-a7b39ebb5316.wav
19:32:48 [INFO] Extracting audio to WAV format
19:32:48 [INFO] Extracting audio to WAV format
19:32:48 [INFO] {"step": "extraction", "status": "processing", "updated_at": "2026-09-07T13:32:48.565086-06:00"}
19:32:48 [INFO] Starting audio extraction
19:32:24 [INFO] Downloading video from S3 for processing
19:32:21 [INFO] Consolidation completed: 816 segments (reduced from 2833)
19:32:21 [INFO] {"step": "consolidation", "status": "completed", "updated_at": "2026-09-07T13:32:21.691728-06:00", "consolidated_path": "7563b5df-a7ae-41f5-9655-7ed8481bd441.diarization.consolidated.json", "stats": {"original_segment_count": 2833, "consolidated_segment_count": 816, "reduction_percent": 71.2}}
19:32:21 [INFO] {"step": "consolidation", "status": "processing", "updated_at": "2026-09-07T13:32:21.252615-06:00"}
19:32:21 [INFO] Speaker refinement completed
19:32:21 [INFO] {"step": "gemini", "status": "completed", "updated_at": "2026-09-07T13:32:21.240932-06:00", "output_path": "/tmp/tmpa69pbvug.json"}
19:32:21 [INFO] ================================================================================
19:32:21 [INFO] CHUNKING COMPLETE: Successfully merged all 2 chunks in 203.4s
19:32:21 [INFO] ================================================================================
19:32:21 [INFO] ✓ Unique speaker mappings discovered: 62
19:32:21 [INFO] ✓ Speakers: 68 named, 42 generic
19:32:21 [INFO] ✓ Segment count: 2833/2833
19:32:21 [WARNING] Large gap detected at segment 2775: 30976.725s -> 30982.845s
19:32:21 [WARNING] Large gap detected at segment 2709: 30606.905s -> 30623.165s
19:32:21 [WARNING] Large gap detected at segment 2706: 30585.065s -> 30590.525s
19:32:21 [WARNING] Large gap detected at segment 2503: 28195.305s -> 28201.645s
19:32:21 [WARNING] Large gap detected at segment 2472: 28079.545s -> 28084.685s
19:32:21 [WARNING] Large gap detected at segment 2253: 26329.565s -> 26334.605s
19:32:21 [WARNING] Large gap detected at segment 2074: 24966.965s -> 24973.745s
19:32:21 [WARNING] Large gap detected at segment 1967: 23815.945s -> 23850.685s
19:32:21 [WARNING] Large gap detected at segment 1958: 23752.305s -> 23775.345s
19:32:21 [WARNING] Large gap detected at segment 1951: 23706.245s -> 23715.245s
19:32:21 [WARNING] Large gap detected at segment 1911: 21645.445s -> 23592.105s
19:32:21 [WARNING] Large gap detected at segment 1652: 18964.605s -> 18972.285s
19:32:20 [WARNING] Large gap detected at segment 1634: 18689.005s -> 18697.425s
19:32:20 [WARNING] Large gap detected at segment 1596: 18042.265s -> 18051.665s
19:32:20 [WARNING] Large gap detected at segment 1537: 17430.305s -> 17438.945s
19:32:20 [WARNING] Large gap detected at segment 1420: 16132.905s -> 16138.585s
19:32:20 [WARNING] Large gap detected at segment 1364: 15178.545s -> 15185.505s
19:32:20 [WARNING] Large gap detected at segment 1354: 14872.405s -> 14878.825s
19:32:20 [WARNING] Large gap detected at segment 1324: 11077.785s -> 14810.405s
19:32:20 [WARNING] Large gap detected at segment 1036: 9505.445s -> 9515.845s
19:32:20 [WARNING] Large gap detected at segment 1026: 9473.905s -> 9481.825s
19:32:20 [WARNING] Large gap detected at segment 990: 8882.005s -> 8891.005s
19:32:20 [WARNING] Large gap detected at segment 950: 8541.105s -> 8550.105s
19:32:20 [WARNING] Large gap detected at segment 918: 8408.605s -> 8418.345s
19:32:20 [WARNING] Large gap detected at segment 721: 7080.105s -> 7094.265s
19:32:20 [WARNING] Large gap detected at segment 717: 7055.885s -> 7062.165s
19:32:20 [WARNING] Large gap detected at segment 537: 5288.985s -> 5294.405s
19:32:20 [WARNING] Large gap detected at segment 520: 4990.985s -> 4996.525s
19:32:20 [WARNING] Large gap detected at segment 385: 4052.965s -> 4058.385s
19:32:20 [WARNING] Large gap detected at segment 269: 2931.865s -> 2940.785s
19:32:20 [WARNING] Large gap detected at segment 225: 2511.925s -> 2518.985s
19:32:20 [WARNING] Large gap detected at segment 153: 1909.265s -> 1921.225s
19:32:20 [WARNING] Large gap detected at segment 149: 1872.545s -> 1878.305s
19:32:20 [WARNING] Large gap detected at segment 120: 1618.025s -> 1623.845s
19:32:20 [WARNING] Large gap detected at segment 114: 1604.145s -> 1609.865s
19:32:20 [WARNING] Large gap detected at segment 98: 1550.165s -> 1564.005s
19:32:20 [INFO] VALIDATING MERGED RESULT
19:32:20 [INFO] --------------------------------------------------------------------------------
19:32:20 [DEBUG] Saved chunk 2 state to database
19:32:20 [INFO] Chunk 2: ✓ Refined successfully. Total speaker mappings: 62
19:32:20 [INFO] Chunk 2: Added 42 new speaker mappings. Total: 62
19:32:20 [INFO] Chunk 2: Gemini returned 84 speakers (43 refined: Aaron Redman, Adam Zinatelli, Alka Kaplan, Andrew Weldon, Anthony Cox, Beverly Redman, Cheryl Rigger, Christine Worcher, Christopher Leslie, City Clerk, Councillor A. Chabot, Councillor Atkinson, Councillor D. McLean, Councillor J. Wyness, Councillor Kelly, Councillor R. Dhaliwal, Councillor Schmidt, Gregory Scott Finney, Jeff Banks, Jeremy Wong, Julia Law, Kelly Hornick, Kendra Holinski, Kira Ostrasser, Laura Comden, Laura McGregor, Marty McNaughton, Maureen O'Brien, Mayor J. Gondek, Michael Strojikov, Oli Walker, Patrick King, Peter Labastide, Public Speaker, Rachel Lee, Robert Curry, Ruben Vandermullen, Samuel, Sarah Elder, Sterling Carlson, Sylvia Kowalevsky, Tim Clotton, Uli Wuko)
19:32:20 [INFO] Chunk 2: Successfully refined 300 segments with sparse mapping
19:32:20 [INFO] Saved parsed JSON: /tmp/tmpcx9mlif9/cc2ecf38-f606-4531-ad1b-a7b39ebb5316.mkv.gemini_debug/chunk_002_parsed.json
19:32:20 [INFO] Saved chunk response: /tmp/tmpcx9mlif9/cc2ecf38-f606-4531-ad1b-a7b39ebb5316.mkv.gemini_debug/chunk_002_response.txt
19:32:20 [INFO] Chunk 2: Gemini finish_reason: FinishReason.STOP
19:32:20 [INFO] Chunk 2: Received Gemini API response in 64.2s
19:31:16 [INFO] Chunk 2: Starting Gemini API call (model: gemini-2.5-pro, prompt length: 242785 chars)...
19:31:16 [INFO] Saved chunk input: /tmp/tmpcx9mlif9/cc2ecf38-f606-4531-ad1b-a7b39ebb5316.mkv.gemini_debug/chunk_002_input.json
19:31:16 [INFO] Time range: 17233.7s - 31341.7s
19:31:16 [INFO] Processing chunk 2/2 (1324 segments)
19:31:16 [INFO] --------------------------------------------------------------------------------
19:31:16 [DEBUG] Saved chunk 1 state to database
19:31:16 [INFO] Chunk 1: ✓ Refined successfully. Total speaker mappings: 37
19:31:16 [INFO] Chunk 1: Added 37 new speaker mappings. Total: 37
19:31:16 [INFO] Chunk 1: Gemini returned 37 speakers (36 refined: Amir Eisenberg, Brian Donaldson, City Clerk, Councillor A. Chabot, Councillor Atkinson, Councillor J. Wyness, Councillor Jameson, Councillor Johnston, Councillor Kelly, Councillor Pantasopoulos, Councillor R. Dhaliwal, Councillor Schmidt, Councillor Tyres, Councillor Ward, Councillor Yule, Doug Roberts, Grant Simon, Gunter Samet, Jeff Marsh, Joe Vipont, Julia Law, Kate Easton, Kelsey Wickers, Laura McGregor, Mark Hayden, Marty McNaughton, Matthew McIntyre, Mayor Farkas, Naomi Bakana, Nathan Green, Sarah Elder, Sim Kartanda, Steve Bentley, Thomas Coyle, Tom March, Turn Kaplan)
19:31:16 [INFO] Chunk 1: Successfully refined 1508 segments with sparse mapping
19:31:16 [INFO] Saved parsed JSON: /tmp/tmpcx9mlif9/cc2ecf38-f606-4531-ad1b-a7b39ebb5316.mkv.gemini_debug/chunk_001_parsed.json
19:31:16 [INFO] Saved chunk response: /tmp/tmpcx9mlif9/cc2ecf38-f606-4531-ad1b-a7b39ebb5316.mkv.gemini_debug/chunk_001_response.txt
19:31:16 [INFO] Chunk 1: Gemini finish_reason: FinishReason.STOP
19:31:16 [INFO] Chunk 1: Received Gemini API response in 138.7s
19:28:57 [INFO] Chunk 1: Starting Gemini API call (model: gemini-2.5-pro, prompt length: 238647 chars)...
19:28:57 [INFO] Saved chunk input: /tmp/tmpcx9mlif9/cc2ecf38-f606-4531-ad1b-a7b39ebb5316.mkv.gemini_debug/chunk_001_input.json
19:28:57 [INFO] Time range: 1181.4s - 17232.2s
19:28:57 [INFO] Processing chunk 1/2 (1509 segments)
19:28:57 [INFO] --------------------------------------------------------------------------------
19:28:57 [INFO] Prior run found but no chunks completed. Starting from chunk 1/2
19:28:57 [INFO] Chunk tracking initialized in database
19:28:57 [INFO] Creating chunk tracking records for 2 chunks
19:28:57 [INFO] Split into 2 chunks
19:28:57 [INFO] ================================================================================
19:28:57 [INFO] City Clerk City Clerk, Councillor S. Sharp, Councillor J. Wyness, Councillor J. Mian, Councillor S. Chu, Councillor R. Dhaliwal, Councillor R. Pootmans, Councillor T. Wong, Councillor C. Walcott, Councillor G. Carra, Councillor A. Chabot, Councillor K. Penner, Councillor E. Spencer, Councillor D. McLean, Councillor P. Demong, Mayor J. Gondek, Council The provided text does not contain an attendance section or a list of council members., Administration There is no attendance information in the provided text., Public Speaker This document section does not contain any names of public speakers., Council no names can be extracted. The provided text does not contain an attendance section or a list of council members. Therefore, Administration There is no attendance section in the provided text., Administration An administration or staff attendance section was not found in the provided text.
19:28:57 [INFO] ================================================================================
19:28:57 [INFO] CHUNKING STRATEGY: Speaker list being used:
19:28:57 [INFO] ================================================================================
19:28:57 [INFO] CHUNKING: Processing 2833 segments in chunks of 1500
19:28:57 [INFO] ================================================================================
19:28:57 [WARNING] Creating debug folder: /tmp/tmpcx9mlif9/cc2ecf38-f606-4531-ad1b-a7b39ebb5316.mkv.gemini_debug. These folders are not auto-cleaned. Clean up with: rm -rf *.gemini_debug/
19:28:57 [INFO] Large meeting detected (2833 segments). Using chunking strategy.
19:28:57 [INFO] Starting speaker refinement
19:28:56 [INFO] Cleanup completed: 98 segments corrected
19:28:56 [INFO] {"step": "cleanup", "status": "completed", "updated_at": "2026-09-07T13:28:56.939726-06:00", "applied_count": 98}
19:28:56 [INFO] {"step": "cleanup", "status": "processing", "updated_at": "2026-09-07T13:28:56.625765-06:00"}
19:28:56 [INFO] Starting name cleanup step
19:28:56 [INFO] Diarization completed and attached: /tmp/tmpcx9mlif9/cc2ecf38-f606-4531-ad1b-a7b39ebb5316.mkv.diarization.pyannote.json
19:28:56 [INFO] Diarization completed successfully!
19:28:56 [INFO] {"step": "diarization", "status": "completed", "updated_at": "2026-09-07T13:28:56.592727-06:00", "output_path": "/tmp/tmpcx9mlif9/cc2ecf38-f606-4531-ad1b-a7b39ebb5316.mkv.diarization.pyannote.json"}
19:28:56 [INFO] Extracted 2833 turn-based segments
19:28:56 [INFO] Diarization results saved to /tmp/tmpcx9mlif9/cc2ecf38-f606-4531-ad1b-a7b39ebb5316.mkv.diarization.pyannote.json
19:28:56 [INFO] Job completed! Retrieving results...
19:28:56 [INFO] Job status: completed
19:28:56 [INFO] Speaker diarization completed
19:28:56 [INFO] Speaker diarization completed
19:28:56 [INFO] Poll #41: Status: succeeded
19:28:43 [INFO] Poll #40: Status: running
19:28:32 [INFO] Poll #39: Status: running
19:28:22 [INFO] Poll #38: Status: running
19:28:11 [INFO] Poll #37: Status: running
19:28:01 [INFO] Poll #36: Status: running
19:27:50 [INFO] Poll #35: Status: running
19:27:40 [INFO] Poll #34: Status: running
19:27:29 [INFO] Poll #33: Status: running
19:27:19 [INFO] Poll #32: Status: running
19:27:08 [INFO] Poll #31: Status: running
19:26:58 [INFO] Poll #30: Status: running
19:26:47 [INFO] Poll #29: Status: running
19:26:37 [INFO] Poll #28: Status: running
19:26:26 [INFO] Poll #27: Status: running
19:26:16 [INFO] Poll #26: Status: running
19:26:06 [INFO] Poll #25: Status: running