Before and after
| Before | Now |
|---|---|
| The account manager took notes during the meeting. | The finished Zoom transcript starts the pipeline automatically. |
| Afterwards, tasks were created by hand in ProofHub. | An LLM proposes tasks with likely owners. |
| Tedious and error-prone — items got lost. | The account manager approves or rejects each one. |
| Up to 2 days of delay. | Results in Slack and a dashboard in about 15 minutes. |
How it works
- Trigger. A Zoom webhook fires when the transcript is ready; polling runs as a safety net in case a webhook is missed.
- Understand. An LLM works out who said what and extracts proposed tasks.
- Assign. Owners are suggested based on who handled similar ProofHub tasks before.
- Between meetings. Requests that clients write in Slack go through the same pipeline.
- Review. Proposals appear in Slack and the dashboard; nothing reaches ProofHub without a human click.
Four decisions that made it work
1. A human approves every proposal. No proposal lands in ProofHub unreviewed. An auto-push logic with four filters is built and has been piloted.
Why: a wrong task costs more trust than one click costs time — and every decision is data that lets clear cases be automated later.
2. Duplicates are caught. If something was already discussed in an earlier meeting, the existing task is updated instead of creating a new one.
3. Model choice per task, tested on real meetings. Classification stayed on Gemini 2.0 Flash — more accurate and 7× faster in the test. Roadmaps use a newer model that found 4× more items. For meeting scoring, four models were calibrated by consensus and GPT-5.4 was chosen.
4. A guard against silence (09/2026). Recordings without a Zoom transcript are transcribed from audio by Gemini. One 13-minute recording was pure digital silence — and the model invented a complete conversation. Since then, audio below −45 dB is rejected (ffmpeg volumedetect) before it reaches the model.
Why: otherwise the system would have created tasks from a meeting that never happened.
What the review looks like
| Proposed task | Owner | Action |
|---|---|---|
| Send revised summer-promo budget to client — “…can you send me the new numbers by Thursday?” | Dana (account manager), from minute 12 | Approve · Reject |
| Check call tracking on the new landing page — “…the calls from that page don’t show up.” | Luis (PPC), from minute 27 | Approve · Reject |
| Update Google Business Profile hours — “…we’re open Saturdays now.” | Dana, from minute 31 | Merge · Reject — possibly discussed on Oct 6 → update existing task |
Technology
Source code (cleaned public version with test data): github.com/porrasbrand/zoom-action-items