Work / Beaver AI
Case study 01 · Meeting intelligence
Beaver AI
Live in production · Founder & full-stack AI engineer · beaverai.app ↗
A production AI meeting platform that records, transcribes, summarises, and reasons across meetings - combining live-join bots, an ephemeral browser-based meeting room, custom RAG over personal meeting history, and an integration layer that pushes action items into eight project-management tools.
7
app modules
82
tests
9
background tasks
8
integrations
4
subscription tiers
Overview
Beaver addresses a simple idea: meetings generate enormous knowledge that almost nobody captures. It does this with two complementary products in one platform - an AI Notetaker that auto-joins your calendar meetings, and a Magic Whiteboard, a real-time browser-based meeting room with ephemeral audio. Both feed a shared intelligence layer powered by a custom RAG implementation over a per-user vector index.
What makes it interesting as engineering work isn't any single feature - it's the breadth of integration. A single user journey touches payment webhooks with idempotency, OAuth flows for a calendar provider plus eight task-tool integrations, multiple scheduled background jobs, Redis caching with a sentinel pattern for subscription checks, a custom RAG pipeline, PII redaction with audit trails, and a four-tier subscription model with feature gating across the entire app - all wrapped in a Dockerised production deploy fronted by a tunnel-based ingress.
Why this matters
Production AI is mostly the boring stuff. Beaver demonstrates competence across all of it.
AI integration depth
Custom RAG with per-user vector indices. LLM-driven summaries with template-based prompting. Semantic search. AI meeting scores. AI pre-meeting briefings.
Production engineering
Webhook idempotency, rate limiting, health-checked DB + Redis, cache sentinel patterns, query optimisation, separate dev/prod environments.
Product breadth
Two distinct products (Notetaker + Whiteboard) sharing one intelligence backend. Four subscription tiers. Eight third-party integrations.
Privacy-first design
Ephemeral audio mode. PII redaction with consent audit trail. On-prem deployment option. No public IP - tunnel-based ingress only.
Engineering highlights
The specific decisions worth defending in an interview.
-
Payment webhook idempotency via Redis
Every inbound event ID cached for 24h before processing. Replays return early without side effects. The kind of thing you only learn to do after a duplicate charge.
-
Subscription cache sentinel pattern
Store
sub or False, returncached or None. Distinguishes "we've checked and there's no subscription" from "we've never checked" without an extra DB hit on every authenticated request. -
Custom RAG with per-user vector indices
client_document_id = meeting_{pk}_user_{user_pk}ensures clean per-user semantic search with deterministic dedup keyed on the meeting PK. No cross-user bleed; safe re-ingest. -
Cascade-protect on the user FK from meetings
Explicit choice - prevents a cascade from accidentally wiping a user's entire meeting history. Forces explicit handling of user deletion, which is the right scaffolding for a GDPR-aware product.
-
Compound indexes matched to actual query patterns
(user, -started_at)on Meeting and(meeting, start)on TranscriptSegment. Replaced three Python-side filtering patterns with three indexed queries when the data outgrew memory. -
Drip email idempotency
A drip-log table with a
(user, day_number)unique constraint stops the hourly task from sending duplicates if it overlaps itself. -
Two distinct OAuth flows, one app
The signup OAuth library handles auth identity. The calendar integration is separate - different scopes (
calendar.readonly), separate refresh-token storage on its own integration record. Conflating them is a footgun; separating them is correct. -
Multiple auth backends, explicit
When both a password backend and a third-party OAuth library are active, every login call has to name the backend explicitly. Easy omission, baffling failures.
Feature surface
A glimpse - not exhaustive.
Core capture
AI Notetaker (auto-joins calendar meetings via recording bot) · Magic Whiteboard (ephemeral browser meeting room) · pre-recorded audio upload · in-person laptop recording.
Intelligence layer
Template-driven summaries (5 built-ins: Sprint Planning, Sales Call, 1:1, Incident Postmortem, General) · action-item extraction with priority and status · separate commitment ledger with target dates · Ask Beaver chat over your entire history · semantic vector search · 0–100 meeting scorecard across 5 dimensions · live meeting coach · auto-discovered knowledge graph · accountability network · watchlist for competitor/risk keywords.
Workflow automation
Pre-meeting AI briefings 25–35 min before each meeting · Smart Meeting Prep with relationship history · daily standup digest emails replacing recurring standups · AI-drafted follow-up emails · auto-promotion of summaries to a searchable wiki ("The Lodge") · three-mode calendar auto-join.
Integrations (eight providers)
Linear, GitHub, Notion, Trello (OAuth) · Jira, Asana (API token) · Slack, Discord (webhook). All sit behind a common BaseProvider interface.
Privacy & billing
PII redaction with original-text rollback (Business tier) · consent audit export · ephemeral audio (Whiteboard) · on-prem deployment option · four-tier subscriptions with 7-day trial · idempotent webhook handling.
Stack
Background tasks
Five scheduled, four on-demand.
| Task | Cadence | Purpose |
|---|---|---|
auto_join_calendar_meetings | 60s | Bot joins scheduled meetings |
send_pre_meeting_briefings | 60s | AI context email 25–35 min before |
cleanup_stale_meetings | 3600s | Mark stuck recordings errored after 3h |
purge_stale_audio_files | 3600s | Safety-net audio deletion |
expire_trials | 3600s | Convert expired trials |
send_drip_emails | 3600s | 7-day onboarding sequence |
generate_meeting_summary | on-demand | Transcript → summary → action items → commitments |
update_wiki_from_meeting | on-demand | Promote summary to wiki |