Skip to content
All projects
Web AppNov 2025Live

MeetEase: AI-Native Video Conferencing

AI-Native Video Conferencing

HD video calls with live in-browser transcription and a Claude-powered copilot that summarizes the meeting and pulls action items while the call is still running. Your mic feeds a live transcript, and that transcript goes to Claude in real time.

meet-ease-charan.vercel.app
MeetEase, the live site
Year
Nov 2025
Timeline
7 weeks
Type
Web App
Status
Live
01

Overview

Most video apps add AI afterwards, as a summary email that arrives an hour later. In MeetEase, transcription and the copilot are two ends of one pipeline. Most of the work went into making that pipeline feel instant and into keeping the app up when its external services aren't configured.

02

The hard parts

  1. 01

    Clerk validates its publishable key at the edge the moment it is invoked, so a fresh deploy with no keys returns a 500 before any page renders.

  2. 02

    Awaiting the whole Claude response feels frozen for seconds, so the copilot needed to start answering before the model finished.

  3. 03

    Live transcription and the AI assistant started as two components with faked data: two demos, not one system.

  4. 04

    Windows is case-insensitive and Vercel's Linux is not, so /icons/video.svg worked locally and 404'd in production.

03

The approach

Every external dependency fails soft and independently. The Clerk handler is built only when a key exists and is wrapped in a try/catch that falls back to NextResponse.next(), so an auth misconfiguration cannot take the site down. The /api/ai route pipes Anthropic's SSE stream through a ReadableStream transformer that parses each event and re-emits only the text deltas, so tokens render as they arrive, with a clearly labelled offline fallback when there is no key. The key change was putting transcription and the copilot behind one MeetingIntelligence context: the microphone writes to the same state the copilot reads, which turned two demos into one pipeline.

04

Outcome

Ask the copilot to summarize or pull action items mid-call and it answers from the words spoken, streamed token by token. Guest "explore mode" means no login wall. Missing configuration cannot crash the app, so it deploys and loads on Vercel with no environment variables set, and adding keys turns features on one at a time.

05

What I'd do differently

The /api/ai route has no rate limiting yet, and I would add it before the app sees real traffic. Transcripts aren't persisted and speaker diarization is client-side only. Server-side diarization and a stored transcript history are the next steps.

06

Stack

framework
Next.js 14 (App Router)
video
Stream Video SDK (WebRTC)
ai
Anthropic Claude (streamed)
transcription
Web Speech API
auth
Clerk (graceful degradation)

Like what you see?

Let's build the next one.

Hiring, or have a problem that needs this kind of engineering? I read every message myself.