Swapnil
Swapnil
All work

Meeting intelligence

Production platform shipped in 6 weeks (Nov 2025 to Jan 2026)

Zeta

Meeting intelligence for Google Meet and Teams. Live transcription with speaker diarization, Gemini summaries, and the notes emailed before anyone asks.

Zeta interface

Problem

Meetings on Google Meet and Microsoft Teams leave nothing behind but memory and whoever volunteered to take notes. Transcripts, when they exist, arrive after the fact and never say who said what. Summaries are a manual chore, and the follow-up email is the first thing to slip.

Zeta had to make the record automatic: capture the call as it happens, know who is speaking, produce a summary worth reading, and put it in people's inboxes without a human in the loop.

Approach

A Chrome extension captures the meeting from inside Meet or Teams and streams audio to the backend over WebSockets, so the transcript builds in real time instead of after upload. Transcription and speaker diarization run in workers behind a BullMQ queue on Redis, which keeps the live path responsive while the heavy processing scales independently.

Once a meeting ends, Gemini turns the diarized transcript into a structured summary. Supabase holds auth, meetings, and collections, calendar integration attaches context to each session, and the summary goes out by email automatically. The whole thing runs in Docker on AWS.

Architecture

  1. 1. Capture

    The extension joins the call inside Meet or Teams and the web app is where meetings live afterward.

  2. 2. Stream

    Audio flows over a WebSocket into the Node.js API while the meeting is still happening.

  3. 3. Process

    The API hands each chunk to BullMQ; workers on Redis run transcription and speaker diarization off the live path.

  4. 4. Summarize

    Gemini reads the diarized transcript and writes the summary. Supabase stores meetings, users, and collections.

  5. 5. Deliver

    Calendar context is attached, the summary is emailed automatically, and everything runs in Docker on AWS.

Stack

  • React
  • Node.js
  • WebSockets
  • BullMQ
  • Redis
  • Supabase
  • Gemini
  • Docker
  • AWS

Outcome

Zeta went from empty repo to a working production platform in six weeks: live transcription over WebSockets, diarization, Gemini summaries, automated email distribution, calendar integration, collections, and the extension that makes capture one click.

What I'd do differently

Putting the transcription work behind a queue from the first week is what kept the live path stable while everything else was still moving. Next time I would design worker backpressure and retries on day one instead of adding them when the first long meeting exposed the gap.