Transcribe. Summarize. Act. β Automatically.
Live App Β· API Β· Report a Bug
IntellMeet is a full-stack, AI-powered video conferencing and meeting intelligence platform built for enterprise, startup, and company-level teams. It brings together live video calls, real-time transcription, and Google Gemini-driven summarization into a single workspace β so meetings turn into searchable notes and trackable tasks automatically, instead of disappearing the moment the call ends.
- Live video meetings powered by the Stream Video SDK β instant meetings, scheduled meetings, and join-by-code
- Adaptive meeting layout with Google Meetβstyle responsive tiling for 1 to many participants, plus dedicated screen-share layouts
- Waiting room & access control β hosts can admit, deny, or admit-all, or open a meeting for anyone with the link
- In-meeting chat via Stream Chat, running alongside video
- Live closed captions with per-speaker attribution
- Collapsible sidebar for chat, transcript, and participant management
- Post-call rating & insights gate to capture quick feedback after every meeting
- Real-time transcription, automatically started and stopped with the call
- Gemini-powered summaries β structured executive summaries generated from the full transcript
- Auto-extracted action items with assignee and due-date detection, ready to promote into real tasks
- Fallback processing pipeline that recovers gracefully if a transcript arrives late or a webhook is missed
- Kanban-style task board with priority, due dates, assignees, and comments
- One-click promotion of AI-detected action items into tracked tasks
- Multi-team workspaces with admin/member roles, invites, and team switching
- Analytics dashboard β meeting cadence, ratings, engagement, and team productivity metrics
- Recordings library with playback, per-session transcripts, and duration tracking
- PDF export of meeting notes and executive summaries (generated server-side)
- Slack & Notion sync β push summaries and action items straight into your team's existing tools
- Secure authentication end-to-end via Clerk (sign-up, sign-in, profile, sessions, password management)
- Live dashboard β upcoming meetings, recent AI summaries, and open action items at a glance
| Technology | Purpose |
|---|---|
| React 19 + TypeScript | Core UI framework |
| Vite | Build tooling & dev server |
| Tailwind CSS v3 + shadcn/ui | Styling & component primitives |
| TanStack Query | Server state & data fetching |
| Zustand | Client state management (teams, meetings, tasks) |
| Clerk (React) | Authentication & user/session management |
| Stream Video & Chat React SDK | Video calls, chat, captions, recordings |
| Technology | Purpose |
|---|---|
| Node.js + Express | REST API server |
| MongoDB + Mongoose | Primary database |
| Clerk (Express) | Auth middleware & session verification |
| Stream (Node SDK) | Video call orchestration, chat, recordings, transcription |
Google Gemini (gemini-2.5-flash) |
AI summarization & action item extraction |
| pdfkit | Server-side PDF generation, streamed to the client |
| Inngest | Background event handling (user sync, lifecycle webhooks) |
| Service | Purpose |
|---|---|
| Vercel | Frontend hosting |
| Render | Backend hosting |
| MongoDB Atlas | Managed database |
flowchart LR
A[React Frontend] -->|REST plus JWT| B[Express API]
B --> C[MongoDB]
B --> D[Stream Video and Chat]
B --> E[Gemini AI]
D -->|Webhook transcription ready| B
B -->|AI Summary and Action Items| C
B -->|PDF export| G[pdfkit]
B -->|Sync| H[Slack and Notion]
F[Clerk] -->|Auth| A
F -->|Session Verification| B
Flow: A user starts, schedules, or joins a meeting β Stream handles video, chat, live captions, and transcription β once the call ends, a webhook (with a fallback polling path) delivers the transcript to the backend β Gemini processes it into a structured summary and action items β results are persisted in MongoDB and surfaced on the dashboard, where action items can be promoted to the team's task board, exported as a PDF, or synced to Slack/Notion.
IntellMeet/
βββ frontend/ # React + TypeScript client
β βββ src/
β β βββ pages/ # Dashboard, MeetingRoom, TaskBoard, AISummary,
β β β # RecordingDetail, Onboarding, Sign In/Up
β β βββ components/ # AdaptiveMeetingLayout, ParticipantListPanel, etc.
β β βββ layouts/ # DashboardLayout (sidebar shell), AuthLayout
β β βββ store/ # Zustand stores (teams, meetings, tasks)
β β βββ lib/ # api.ts (backend adapter), utils.ts
β βββ ...
βββ backend/ # Node.js + Express API
βββ src/
β βββ models/ # User, Team, Session, Task, ActionItem,
β β # Invite, MeetingInvite
β βββ controllers/ # session, team, task, ai, webhook, chat
β βββ routes/
β βββ middleware/ # Clerk auth
β βββ services/ # Gemini AI pipeline, Slack/Notion integrations
β βββ lib/ # db, stream, env, resolveParticipants, inngest
β βββ scripts/ # backfills & diagnostics (recordings, transcripts,
β # Stream user sync)
βββ ...
- Linting & formatting β ESLint (flat config, TypeScript + React rules) on the frontend, ESLint +
eslint-config-prettieron the backend; Prettier configured on both - Automated tests β Vitest covering frontend utility functions (
getInitials,getAvatarColor,formatDurationSeconds, etc.); Jest + Supertest covering backend API authorization and validation (task creation, team membership checks, team listing) - Accessibility β
aria-labels on all icon-only controls in the meeting room and dashboard,role="dialog"+aria-modal+ Escape-to-close on every modal, corrected heading hierarchy, and WCAG AAβcompliant text contrast throughout the dashboard
| Category | Score |
|---|---|
| Performance | 85β98 |
| Accessibility | 100 |
| Best Practices | 100 |
| SEO | 83 |
Note on these numbers: Performance fluctuates noticeably between runs (85β98 observed across repeated tests) β normal run-to-run variance from network conditions and cold starts rather than a code change, so treat it as a range rather than a fixed figure. SEO is intentionally not optimized further, since IntellMeet sits entirely behind authentication and isn't meant to be indexed or discovered via search. Accessibility and Best Practices are the two scores that reflect deliberate work and were verified stable across multiple runs.
- Node.js 18+
- MongoDB instance (local or Atlas)
- Clerk account (API keys)
- Stream account (API key + secret)
- Google Gemini API key
- (Optional) ngrok, for testing Stream webhooks locally
git clone https://github.com/TechShashank7/IntellMeet.git
cd IntellMeetcd backend
npm installCreate a .env file:
PORT=5000
DB_URL=your_mongodb_connection_string
CLIENT_URL=http://localhost:5173
CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
CLERK_SECRET_KEY=your_clerk_secret_key
STREAM_API_KEY=your_stream_api_key
STREAM_API_SECRET=your_stream_api_secret
GEMENI_API_KEY=your_gemini_api_key
INGEST_EVENT_KEY=your_inngest_event_key
INGEST_SIGNING_KEY=your_inngest_signing_keynpm run devcd ../frontend
npm installCreate a .env file:
VITE_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key
VITE_STREAM_API_KEY=your_stream_api_key
VITE_API_BASE_URL=http://localhost:5000/apinpm run devThe app will be available at http://localhost:5173, with the API running on http://localhost:5000.
To receive Stream transcription/recording webhooks during local development, tunnel the backend with ngrok and point the Stream dashboard's webhook URL at the tunnel:
ngrok http 5000- Phase 0 β Backend boot & MongoDB connection
- Phase 1 β Clerk authentication, end-to-end across the frontend
- Phase 2 β Meetings, tasks, team onboarding, and a real API layer
- Phase 3 β Stream webhook receiver + Gemini summarization pipeline
- Phase 4 β Live meeting room: chat, closed captions, adaptive video layout, screen share, waiting room, post-call ratings, Kanban board
- Phase 5 β recordings list/detail, playback, PDF export, timestamped transcript segments
- Phase 6 β PDF download, Slack, and Notion integrations per team
- Phase 7 β ESLint + Prettier on both frontend and backend, a minimal automated test suite (Vitest/Jest + Supertest), and a full accessibility pass (ARIA labels, dialog semantics, heading structure, contrast) β see Code Quality & Testing
- Long-term storage strategy for recording references (Stream URLs are presigned & expiring)
- General design pass benchmarked against Zoom/Meet for overall product feel
| Name | Role |
|---|---|
| Shashank Raj | Frontend & Product Architecture |
| Tanuj Gupta | Backend Development & Infrastructure |
| Dara Saiteja | Frontend Development |
| Gaurav Kumar | Backend Development |
IntellMeet β Every Meeting. Summarized. Actioned. Done.