No Audio. No Video.
How I built a privacy-first intelligence layer for Zoom and Teams using only captions. Most meeting AI tools have the same problem: they record you. Audio files, video files, cloud storage with your conversations sitti
How I built a privacy-first intelligence layer for Zoom and Teams using only captions.
Most meeting AI tools have the same problem: they record you.
Audio files, video files, cloud storage with your conversations sitting on someone elseβs server. For personal use that might be acceptable. For enterprise use, in healthcare, finance, legal, or defense. Itβs a non-starter. Compliance officers kill these tools before they reach users.
I wanted to build something different. A tool that could capture decisions, action items, and key insights from a meeting in real time, without ever touching audio or video. Just the captions. Just the text.
This is how I built it.
The Core Insight: Captions Are Enough
When I started building Atntiv, the first question I had to answer was: do you actually need audio to extract meaningful intelligence from a meeting?
The answer is no. Captions are a surprisingly rich signal. They contain speaker attribution, the full conversational content, and temporal ordering. Everything you need to identify who said what, when a decision was made, and what someone committed to doing.
The tradeoff is accuracy, captions have errors that audio transcription can correct. But for the use case of extracting structured intelligence (decisions, action items, blockers), caption-level accuracy is more than sufficient. And the privacy benefit is enormous.
The Technical Challenge: Getting Inside Zoom and Teams Web
Both Zoom Web and Microsoft Teams Web render their interfaces inside complex, deeply nested DOM structures. Getting clean caption data out of them requires understanding how each platform renders its live transcript UI. And they do it very differently.
Zoom Web runs inside multiple iframes. This creates an immediate problem for a Chrome extension: your content script might run in several frames simultaneously, which would cause duplicate caption captures and race conditions. Getting this right took significant debugging Zoomβs iframe structure is not documented anywhere and changes across versions.
Teams presented its own set of challenges. The way it renders and updates its transcript panel is fundamentally different from Zoom, which meant the solution couldnβt be copy-pasted between platforms. Each required its own approach.
I poll the DOM every 500ms rather than using a more event-driven approach. This turned out to be simpler and more reliable across both platformsβ update patterns, a reminder that predictability often beats elegance in production systems.
To avoid re-processing the same captions, I maintain a record of what has already been captured. New entries get added to the transcript. Old entries are silently skipped.
The Data Model: Simple and Intentional
Each transcript entry is just three fields: speaker name, caption text, and timestamp. That is the entire data model the AI layer operates on.
No audio. No video. No binary blobs. Just structured text with speaker attribution and timestamp.
When the user clicks βView Meeting Insightsβ, this data gets sent to the backend where a large language model extracts decisions, action items, blockers, and key insights. The result is a structured insight page the user can review, share, and reference later.
Authentication Without Disrupting the Meeting
One subtle challenge: how do you authenticate a Chrome extension user without breaking their meeting flow?
The solution uses a message-passing pattern between the extension and the host page. When a user signs in on atntiv.com, the authentication token is passed to the extension silently and persists across sessions. The user signs in once not during a meeting and the extension handles the rest without asking for attention at the wrong moment.
What Privacy-Preserving Actually Means in Practice
It is worth being explicit about what this architecture does and does not do.
What Atntiv captures: The text of captions as they appear in the Zoom or Teams transcript panel. Speaker names as displayed in the platform.
What Atntiv never captures: Audio streams. Video streams. Screen content. Any data outside the caption panel.
Where data lives: Captions are held in memory during the meeting. When the user requests their insights, the transcript is sent to the backend for LLM analysis. Raw audio never exists anywhere in this pipeline β not because it was deleted, but because it was never captured.
This is not a marketing claim. It is a direct consequence of the architecture. There is no audio to leak, subpoena, or accidentally expose because there is no audio in the system.
What I Learned
Building this taught me a few things worth sharing:
DOM scraping at 500ms is more reliable than you think. I considered a more event-driven approach initially but found that the interval-based polling was simpler and more predictable across both platforms.
The iframe problem is the hardest part of Zoom Web extensions. The multi-frame architecture took significant debugging to get right and is not documented anywhere.
Caption accuracy is good enough for structured extraction. I was worried that caption errors would corrupt the AI output. In practice, LLMs are robust to transcription noise. The structured output is accurate even when individual words in the caption are not.
Privacy-first architecture is also simpler architecture. Not capturing audio means no audio processing pipeline, no binary storage, no transcription service. The system is meaningfully less complex than audio-first alternatives and that simplicity makes it more reliable.
Whatβs Next
Atntiv currently works on Zoom Web and Microsoft Teams Web. The next architectural step is moving from DOM scraping to native webhook and API integrations Zoomβs webhook API and Microsoft Graph API for zero-click automatic transcript retrieval that doesnβt require the extension to be active.
The core privacy principle stays the same. No audio. No video. Just structured intelligence from text.
If youβre building in the meeting intelligence space or have thoughts on the architecture, Iβd love to hear from you. You can find Atntiv at atntiv.com.
Originally published on Medium
Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes β full credit and traffic to the original publisher.