MeetingMind — Project Story
Inspiration
We've all been there: a 45-minute meeting wraps up, everyone closes their laptops, and within 24 hours no one remembers who owns what. The action items that seemed crystal clear on the call quietly die in a Slack thread or a half-finished email chain.
The average knowledge worker spends 31 hours per month in meetings. Yet most teams have no systematic way to capture decisions or track commitments made in those meetings. The follow-up falls on one person — usually the meeting organizer — who has to re-listen, take manual notes, and chase people down.
We built MeetingMind because we were tired of being that person.
What it does
MeetingMind turns any meeting transcript into a structured, actionable summary in under 10 seconds.
You can:
- Paste a raw transcript or meeting notes
- Upload a
.txt,.vtt, or.srttranscript file - Drop an audio file (
.mp3,.mp4,.wav) and let the app transcribe it first via Whisper
The AI then returns:
| Output | Description |
|---|---|
| 📝 TL;DR Summary | 2–3 sentence executive overview |
| ✅ Action Items | Task, owner, deadline, and priority — editable inline |
| 🏛️ Key Decisions | What was agreed on in the meeting |
| ❓ Open Questions | Blockers with no clear owner yet |
| 👥 Participants | Auto-detected from the transcript |
Action items can be pushed directly to Slack or Notion with one click, so nothing lives only inside MeetingMind.
ROI in plain numbers:
If your 10-person team runs 5 meetings per week, and each follow-up takes ~25 minutes of manual work at a blended rate of $80/hr:
$$\text{Time saved} = 5 \text{ meetings} \times 25 \text{ min} = 125 \text{ min/week}$$
$$\text{Cost saved} = 125 \div 60 \times \$80 \approx \$167\text{/week} \approx \$8{,}500\text{/year}$$
And that's just one team.
How we built it
The stack is deliberately lean so any team can self-host or deploy in minutes:
- Next.js 14 (App Router) — full-stack framework, frontend + API routes in one repo
- Anthropic Claude API (
claude-sonnet-4-20250514) — the core intelligence layer for summarization and structured extraction - OpenAI Whisper API — audio-to-text transcription for uploaded recordings
- Tailwind CSS + shadcn/ui — UI components with a dark, focused "command center" aesthetic
- Vercel — zero-config deployment
- Slack Incoming Webhooks + Notion API — push integrations
The key technical challenge was getting Claude to return reliably structured JSON every time — no markdown fences, no explanation, just clean parseable output. We solved this with a strict system prompt that specifies the exact JSON shape, sets today's date for deadline inference, and instructs the model to use sensible defaults rather than omitting fields.
System: "You are an expert meeting analyst. Always respond with valid JSON only —
no markdown, no explanation, no preamble. Today's date is {date}."
The pipeline is:
Audio file → Whisper API → raw transcript
↓
Text input → Claude API → structured JSON
↓
Results UI + inline editing
↓
Slack webhook / Notion API
Challenges we ran into
1. Inconsistent JSON output from the model Early prompts occasionally returned JSON wrapped in markdown code fences or with extra commentary. We resolved this by tightening the system prompt and adding a JSON sanitiser on the client that strips fences before parsing.
2. Long audio files hitting API limits Whisper has a 25 MB file size cap. We added client-side file size validation and a chunking strategy for longer recordings that splits the audio, transcribes each chunk, and concatenates the results before passing to Claude.
3. Ambiguous owners in transcripts When a transcript says "someone should handle this", Claude would assign it to "Unassigned" — which is correct but unhelpful. We added a post-processing step that flags unassigned high-priority items in the UI with a red indicator, nudging the user to manually assign them.
4. Deadline inference across timezones "By end of week" means different things depending on when the meeting happened. We pass the current ISO date in the system prompt so Claude can anchor relative deadlines correctly.
Accomplishments that we're proud of
- End-to-end pipeline working in a weekend — from audio file to Slack message in one flow
- The inline editing on action items feels native — click any cell, edit, tab to the next. No separate edit mode, no save button
- The processing animation — showing the AI's steps in real time makes the tool feel deliberate and trustworthy, not like a black box
- A one-click Vercel deploy with documented ENV vars — any team can have this running in under 5 minutes
- Getting Claude to return structured JSON with zero parsing failures across 50+ test transcripts
What we learned
- Prompt engineering for structured output is as much an engineering discipline as it is art — the system prompt is as important as the model choice
- Internal tools succeed or fail on adoption, not features. The Slack push button doubled our test users' engagement because it met them where they already work
- Showing AI "thinking" step-by-step (even with simulated delays) significantly increases user trust in the output
- The best demo is a before/after story, not a feature tour. "30 minutes of follow-up → 8 seconds" is more compelling than any UI screenshot
What's next for MeetingMind
- Calendar integration — auto-pull transcripts from Google Meet / Zoom recordings linked in Google Calendar
- Recurring meeting intelligence — track the same open question appearing across 3 weeks of standups and surface it automatically
- Owner accountability — weekly digest email to each person summarising their outstanding action items across all meetings
- Team analytics — which meetings generate the most unresolved questions? Which team members are most frequently assigned items but least often marked complete?
- On-premise / self-hosted mode — swap Claude API for a local LLM (Ollama + Mistral) for companies with strict data policies
Built With
- 4
- anthropic
- api
- claude
- css
- javascript
- kv
- lucide
- nextjs
- node.js
- notion
- openai
- radix
- react
- rest
- shadcn-ui
- slack
- sonnet
- tailwind
- typescript
- ui
- vercel
- whisper
Log in or sign up for Devpost to join the conversation.