About Services Case Studies Pricing Blog Book Free Audit
CONVERSATIONAL AI20262 min read

AI Video Meetings, End-to-End

A subscription SaaS where users design custom AI personas, hold live video calls with them, and revisit every meeting through transcripts, summaries, and a context-aware chat assistant.

CLIENT
BrieflyAI
INDUSTRY
AI SaaS
TIMELINE
Multi-phase build
ROLE
Full-stack architect & engineer
// overview

BrieflyAI is a video-meeting platform where the other participant is an AI agent you design. Define a persona, schedule a call, and enter a real-time video room where the agent listens, speaks, and reasons. After hang-up, BrieflyAI auto-generates a structured summary and lets the user keep chatting with the same persona — now aware of everything that was said.

// the problem

Meeting tools and AI chats don't meet in the middle.

Conferencing tools bolt AI on as a passive notetaker — it transcribes but never participates. AI chat tools are conversational but text-first, siloed from scheduling, recording, and follow-up. For users who want a real meeting with an AI persona, neither category works.

  • A real meeting — calendar entry, lobby, video tile, microphone
  • An agent that holds its persona consistently through the whole call
  • A searchable record they can summarize and continue with afterward
  • Behind a clean subscription product, not a developer playground
// approach

How we built it.

01

Decompose into four surfaces

Realtime call, persistence, post-call pipeline, commerce — each matched to a managed primitive so one developer could ship without operating infrastructure.

02

AI through the call, not next to it

Stream's connectOpenAi joins the OpenAI Realtime model directly to the call as a participant. Audio routing, turn-taking, and voice synthesis collapse into one SDK call.

03

Webhook as source of truth

Stream's webhook flips meeting state — never the client. A dropped tab or flaky network cannot corrupt the lifecycle.

04

Durable post-call pipeline

Each summarization step runs inside an Inngest step.run. Transient OpenAI failures replay only the failing step, not the whole transcript fetch.

// what we shipped

The solution.

01

Live AI video calls

Stream owns video, chat, recording, transcription, and the OpenAI Realtime bridge. From every other participant's point of view, the agent is just another user in the call tile.

02

Webhook-driven state machine

session_started → active, session_ended → processing, transcription_ready → enqueue Inngest. The client is never trusted with state transitions.

03

Replay-safe summarization

Four durable Inngest steps fetch the transcript, parse JSONL, join speakers against users and agents, then run GPT-4o-mini. ~75 lines for what would normally be a queue worker + cron + monitoring stack.

04

Persona-consistent post-call chat

The agent's instructions field is reused at call time and chat time — composed with the generated summary to keep the persona coherent across modalities.

05

End-to-end type safety

Drizzle schema → tRPC procedure → React Query hook. A column rename surfaces as a TypeScript error in the UI, not a runtime crash.

06

Server-side subscription gating

Polar entitlement checks live in tRPC procedures that wrap creation flows. The UI mirrors the limits but cannot bypass them.

// product shots

Inside the build.

// the results

Outcomes that shipped.

Shipped a complete subscription-ready meeting platform — auth, video, AI, billing, async pipeline — from a single Next.js app deployable to Vercel. No separate workers, no operating a queue. Capabilities delivered: real-time AI video, durable async post-call processing, structured summaries, searchable transcripts, recording playback, persona-consistent chat, subscription gating, and mobile-responsive UI.

// stack
Next.js 15React 19tRPCDrizzle ORMNeon PostgresStreamOpenAI RealtimeGPT-4o-miniInngestPolarBetter Authshadcn/ui
// learnings

What we took with us.

  • 01Picking primitives that own a whole surface beats assembling three weaker ones.
  • 02Webhooks as state authority removed a whole class of "stuck meeting" bugs before they could exist.
  • 03A small eval harness for the summarizer would have caught quality regressions earlier than vibes did.
// ready when you are

Have a build that needs this level of thinking?

Free 30-min audit. We'll tell you what to build, what it'd cost, and whether we're the right shop.