Inspiration

Every professional knows the feeling: you leave a meeting energised, full of ideas — and three hours later, half of what was decided has already been forgotten. Action items get lost. Decisions get revisited. People ask "wait, who was supposed to handle that?"

The average professional spends 31 hours per month in meetings, yet most organisations have no reliable system for turning meeting discussions into structured, accountable outcomes.

I wanted to build something that didn't just record meetings — but synthesized them. Something that understood the difference between a decision made and a topic discussed. Something that could tell you exactly who committed to what, by when, at what priority — and then automatically put it into their calendar.

And then I thought: what if the AI could be in the meeting with you, invisibly, answering questions only you could see?

That became MeetSynth.


What It Does

MeetSynth is an AI-powered meeting operating system that transforms raw meeting content into structured, actionable intelligence — before, during, and after every meeting.

Core Synthesis Engine: Paste meeting notes, upload an audio file (MP3/WAV/WebM), or record live — and MeetSynth's Groq-powered AI extracts every decision made, every action item with its owner and deadline, a meeting summary, and key topics in under 2 seconds.

Voice Transcription: Powered by Groq Whisper, MeetSynth transcribes any audio format directly in the browser. Live recording uses the MediaRecorder API with the same pipeline.

Google Calendar Sync: Every synthesised action item becomes a Google Calendar event — colour-coded by priority, with full meeting context in the description, and email reminders. High-priority tasks are auto-scheduled the moment synthesis completes.

Email Summaries via Gmail/Resend: Beautiful HTML email summaries sent to any recipients with the full synthesis — decisions, action items table, key topics — all MeetSynth-branded.

Slack Notifications: Rich Block Kit formatted Slack messages posted to team channels instantly after every synthesis.

Notion Export: Meeting synthesis exported as a structured Notion page with to-do checkboxes for action items, automatically added to any connected database.

Linear Integration: High-priority action items pushed directly to Linear as issues, with priority levels mapped correctly.

Zapier Webhook: Every synthesis triggers a Zapier webhook with the full structured data — enabling 5,000+ downstream automations.

Analytics Dashboard: Meeting activity charts, action item distributions by owner and priority, team leaderboards, and a meeting cost calculator that shows the real financial cost of each meeting.

Ghost Mode Meet Pilot (The flagship feature): A Chrome extension that opens an invisible AI side panel inside Google Meet. It reads live captions via MutationObserver, detects questions, and generates responses in a private panel that only the user can see — even during screen sharing. For technical questions, it automatically renders a code block with syntax highlighting. Auto-respond or manual mode.

Delegate Mode (Beta): Users configure an AI meeting persona — communication style, speaking pace, voice selection — and brief the AI on the meeting purpose. During the meeting, Ghost Mode can speak AI responses aloud via Web Speech API.

Live Meeting Connectors: Join Google Meet, Zoom, and Loom directly through MeetSynth with AI note-taking throughout.


How We Built It

MeetSynth was built entirely using MeDo AI as the full-stack application generator — an experience that fundamentally changed how I think about software development.

Frontend: React with Tailwind CSS. Dark/light mode via CSS custom properties on the HTML element. Scroll animations via Intersection Observer API (no libraries).

Backend: Supabase Edge Functions (Deno/TypeScript) handling all API calls that require secret keys.

AI Engine: Groq API with LLaMA 3.3-70b for meeting synthesis, MeetSynth AI chat, and Ghost Mode responses. Groq Whisper for audio transcription.

Integrations Built:

  • Google Calendar (OAuth 2.0, event creation with colour coding, auto-scheduling, token refresh)
  • Gmail/Email via Resend API
  • Slack via Incoming Webhooks + Block Kit formatting
  • Notion via Internal Integration Token
  • Linear via GraphQL API
  • Zapier via Webhook payload
  • Zoom via Web SDK + browser Speech Recognition

Ghost Mode Chrome Extension: 6 files — manifest.json (Manifest V3), background.js (service worker + side panel management), content.js (MutationObserver caption detection with noise filtering), sidepanel.html/css/js (the AI interface).

The invisibility works because Chrome's Side Panel API renders in the browser chrome layer — outside tab content — making it physically uncapturable by tab-based screen sharing.

Development Approach: Every feature was built through MeDo's multi-turn chat interface. I'd describe what I wanted in plain English with technical specificity, test the output, describe what needed fixing, and iterate. The key insight was: the more precisely you describe the architecture and error handling, the better the output.


Challenges We Ran Into

1. Ghost Mode Caption Noise: Google Meet's DOM contains UI text (keyboard shortcuts, button labels, menu items) alongside actual speech captions. A naive MutationObserver on the body element captured everything. The fix: a multi-layer filter combining noise pattern matching, speech likelihood scoring (72%+ letter content, 2+ words, minimum length), and targeted CSS selector observation for known caption elements.

2. AssemblyAI speech_models Error: The initial transcription integration kept returning a 400 error for speech_models parameter. After multiple fix attempts, the root cause was a second API call in the frontend code that MeDo had generated alongside the backend one — both reaching AssemblyAI with conflicting parameters. Solution: remove AssemblyAI entirely and use Groq Whisper instead. One API key, two capabilities.

3. Google Calendar Token Refresh: OAuth tokens expire after 1 hour. Events were failing silently when the token expired. Fixed with a proactive token manager that checks expiry 5 minutes before expiration and refreshes automatically using the stored refresh token.

4. AI Chat Context Sync: The chat sidebar showed "Select a meeting first" even when a meeting was loaded from history. Root cause: three separate code paths (fresh synthesis, demo mode, history load) each set different state variables. Fix: single source of truth currentMeeting state set in all three paths.

5. Horizontal Overflow on Mobile: AI-generated layouts accumulated CSS inconsistencies across 20+ prompts. Global fix: box-sizing: border-box everywhere, overflow-x: hidden on root, min-width: 0 on all grid/flex children, width: 100% replacing 100vw throughout.


Accomplishments That We're Proud Of

🧬 Ghost Mode Meet Pilot — a genuinely novel feature that no commercial meeting tool currently offers. The invisibility mechanism is architecturally elegant and practically useful.

⚡ Sub-2-second synthesis — from paste to structured action plan in under 2 seconds, powered by Groq's LPU infrastructure.

🔌 7 live integrations — Google Calendar, Gmail, Slack, Notion, Linear, Zapier, and Google Meet — all working in a single app built in days.

🎨 Design quality — a full dark/light design system with glassmorphism, scroll animations, floating device mockups, and an orbiting card mobile layout — all built without a design team.

🧠 Multi-turn AI chat — contextually aware of the full meeting data, answering specific questions about owners, deadlines, and decisions accurately.


What We Learned

Specificity is the superpower in AI-assisted development. Vague prompts produce vague code. When I described exact CSS values, component structure, error handling behaviour, and edge cases — MeDo produced production-quality code.

Build in vertical layers, not horizontal features. Foundation → AI intelligence → voice → integrations → polish. Trying to build everything at once creates tangled, unmaintainable code.

Debug by describing symptoms with full context. Giving MeDo the exact error message, what I expected vs what happened, and my theory about the root cause produced faster, more accurate fixes than trial-and-error edits.

MeDo's multi-turn memory is the key differentiator. The ability to say "remember the auth system we built in step 4? The calendar needs to use that" — and have it understand the full codebase context — is what makes genuinely complex applications possible.

Architecture beats implementation. Spending time thinking through the right data flow before writing the first prompt saves hours of refactoring later.


What's Next for MeetSynth AI

🔴 Live Meeting Bot Joining — An AI bot that joins Google Meet, Teams, and Zoom as a visible participant, introduces itself, takes notes, and delivers synthesis the moment the call ends. Uses headless browser infrastructure + the Zoom Meeting SDK.

🤖 Full Delegate Mode — AI video avatar using real-time face synthesis to represent users in meetings with custom appearance, voice cloning, and autonomous question answering.

👥 Team Workspaces — Shared meeting libraries, team-wide action item tracking, and collaborative synthesis across organizations.

🔗 More Connectors — Microsoft Teams live transcription, HubSpot CRM integration, Jira issue creation, and Salesforce opportunity updates from meeting notes.

📱 Native Mobile Apps — iOS and Android apps with live recording, push notifications for task reminders, and a widget for quick voice capture.

🌍 Multi-language Support — Meeting synthesis and Ghost Mode in French, Spanish, Mandarin, Arabic, Yoruba, and 20+ other languages.


Built With

  • ai-chat
  • chrome
  • chrome-side-panel-api
  • chrome-storage-api
  • css-custom-properties
  • css-grid
  • css3
  • deno
  • developer
  • edge-functions
  • flexbox
  • ghost-mode)-groq-whisper-(audio-transcription)-**apis-&-integrations:**-google-calendar-api-(oauth-2.0
  • glassmorphism
  • google-calendar-api
  • google-oauth-2.0
  • groq
  • groq-whisper
  • html5
  • intersection-observer-api
  • javascript
  • linear-graphql-api
  • llama-3.3-70b
  • manifest-v3
  • mediarecorder-api
  • medo-ai
  • mutationobserver
  • netlify
  • notion-api
  • react-18
  • react18
  • resend-api
  • secrets-management)-**ai-&-machine-learning:**-groq-api-?-llama-3.3-70b-(meeting-synthesis
  • slack-incoming-webhooks
  • store
  • supabase
  • typescript
  • vercel
  • web
  • web-speech-api
  • zapier-webhooks
  • zoom-web-sdk
Share this project:

Updates

Submission history