Build a local-first meeting memory app with Mnueron.
Mnueron Meet turns meeting transcripts into durable AI memory: searchable transcript chunks, decisions, action items, project context, and recall hooks for every connected agent.
Current app routes
Local-first capture
Manual upload, desktop capture, or connector polling starts locally. Hosted sync is optional, not required for the core memory workflow.
MeetingSource plugins
Each connector implements onUpload, onPoll, onWebhook, or onEmail and emits a normalized MeetingEnvelope.
Mnueron memory pipeline
The pipeline chunks transcripts, extracts decisions and action items, writes memories, and makes everything recallable by agents.
Enterprise controls
Tenant-scoped rows, source dedupe, audit-friendly records, and clear local-vs-hosted boundaries are part of the first version.
What we are building
Not a Granola clone. Granola is a meeting note product. Mnueron Meet is a meeting memory layer: it can ingest Granola, uploads, email recaps, and future desktop capture, then makes the facts available to Mnueron MCP tools and your AI workflow.
Step-by-step build
Follow this exact path to install, create, recall, and update the app.
1. Apply the Meet schema
Run the migrations that create meeting_sources, meetings, decisions, action_items, project rules, and duplicate-source guards.
supabase db push
# or run these in order in hosted SQL:
# 050_meetings.sql
# 053_meeting_sources_auth_jsonb.sql
# 054_projects.sql
# 055_meeting_sources_dedupe.sql2. Create your first meeting memory
Open Mnueron Meet and upload a transcript. The upload plugin normalizes the file and hands it to the core ingestion pipeline.
Open /dashboard/meet
Click "Upload transcript"
Choose .txt, .vtt, .srt, or .json
Open the created meeting detail page3. Connect a source
Use the connector page for Granola now, then add Fathom, Zoom, Teams, or custom tools using the same MeetingSource contract.
Open /dashboard/integrations/meet
Paste the Granola API key
Click "Sync now"
Confirm meetings appear in /dashboard/meet4. Recall the meeting from an AI tool
Once ingested, the meeting is not just a note. Claude, Codex, Cursor, and other MCP clients can recall decisions and transcript context.
Ask your AI tool:
"Use meet_recall. What decisions did we make about the pricing page?"
Or:
"Search Mnueron memory for action items from yesterday's Granola sync."5. Update the app safely
Add a migration, update a plugin or page, run focused checks, save what changed to Mnueron memory, then commit and push.
npm run build
git add src supabase/migrations
git commit -m "Extend Mnueron Meet"
git push origin mainConnector hook contract
Every meeting source implements the same shape. That keeps the hosted app, local desktop app, and future enterprise plugin marketplace compatible from the beginning.
| Hook | Use | Output |
|---|---|---|
| onUpload | Manual files and customer exports | Returns one MeetingEnvelope from .txt, .vtt, .srt, or .json. |
| onPoll | Granola-style API sync | Uses plugin storage for cursors and returns new MeetingEnvelope records. |
| onWebhook | Realtime vendor events | Verifies signatures and converts vendor payloads into meetings. |
| onEmail | Forwarded recaps | Parses email text or attachments from tools that do not expose APIs. |
How to update Mnueron Meet with Mnueron memory
- Ask your AI tool to recall previous Mnueron Meet decisions before planning a change.
- Make the code or migration change in the web app.
- Run a focused parser/build check for the touched files.
- Save the shipped change to Mnueron memory with tags like
meet,shipped, and the connector name. - If the change is repeatable, save it as a Mnueron runbook so future agents can execute the same workflow.
# Example agent workflow
memory_recall("Mnueron Meet source dedupe and Granola sync")
edit files
npm run build
memory_save("Shipped Mnueron Meet connector update ...", tags=["meet","shipped"])
git add .
git commit -m "Extend Mnueron Meet"
git push origin main