Swapnil
Swapnil
All posts

2 min read Swapnil Patil

Shipping Zeta's live transcription in six weeks

How a meeting-intelligence platform went from empty repo to production between November and January, and which decisions made the deadline survivable.

  • build-log
  • real-time
  • ai
  • aws

Zeta had a hard deadline and a simple promise: join a Google Meet or Teams call, get a diarized transcript while it is happening, and receive a summary by email when it ends. Six weeks, November 2025 to January 2026. This is what actually mattered.

Capture where people already are

The first decision was not to build a meeting bot. A Chrome extension captures the call from inside Meet or Teams, which means no separate participant joining, no permissions dance, and nothing for the user to remember except clicking once. The extension streams audio to the backend over a WebSocket, so the transcript builds live instead of after an upload.

Keep the live path thin

Real-time transcription with speaker diarization is heavy, and the mistake I was most determined not to make was doing that work on the same path that keeps the socket alive. Every audio chunk goes into a BullMQ queue on Redis, and workers do the transcription and diarization off the live path. The API stays responsive, and the heavy part scales on its own.

This is also what saved the deadline. When something in processing broke, the capture kept working, and I could fix the worker without touching the part users were looking at.

Summaries are the product

A transcript nobody reads is a file. When a meeting ends, Gemini turns the diarized transcript into a structured summary, and the summary is what gets emailed. Calendar integration attaches context to each meeting, and collections keep related meetings together. Supabase holds auth and all of it.

Ship it like a real system

Docker on AWS from the start, not as a later migration. Six weeks is short enough that “we will productionize it after” never happens, so it had to be production shaped from week one.

What I would design in earlier

Backpressure and retries in the workers. They were added after the first genuinely long meeting exposed the gap. Next time they are a day-one decision, not a fix.

Zeta shipped as a working platform on time. The lesson underneath all of it: the live path should do as little as possible, and everything that can be a queue should be a queue.