Meeting-notes recorder

Transcribe → extract decisions → save by meeting → cross-meeting recall.

End-to-end pattern: a meeting-notes app that listens to audio, extracts the durable facts (decisions, action items, key quotes), and stores them in a per-meeting namespace so later meetings can recall context from earlier ones.

A working code skeleton lives in the mnueron repo at examples/apps/meeting_notes_skeleton.py.

Architecture

[live audio or audio file]
    │
    ▼
Whisper / Deepgram / your speech-to-text of choice
    │
    ▼
Transcript with speaker labels
    │
    ▼
For each speaker turn:
    mnueron.save(content=turn, namespace=f"meeting-${meeting_id}",
                 metadata={"speaker": name, "ts_s": offset_seconds,
                           "summarize": True})
    │
    ▼
[v0.2.9] Fact extraction fires automatically for long turns:
    decisions / recommendations / action items become CHILD memories
    in the same namespace, tagged 'extracted-fact'
    │
    ▼
After the meeting ends:
    mnueron.search("what did we decide", namespace=f"meeting-${meeting_id}",
                   metadata_filter={"category":"decision"})
        returns just the decisions for digest emails

Why per-meeting namespaces

namespace=meeting-2026-05-17-q3-roadmap scopes recall to one meeting. For cross-meeting questions ("what have we ever decided about pricing"), search without a namespace and filter on tags or metadata:

mem.search(
    "pricing",
    metadata_filter={"category": "decision"},
    k=20,
)

This is exactly the pattern the Elevizio framework uses (/docs/samples/elevizio).

Practical tips

  • Speaker normalization: map speech-to-text speaker IDs to real names BEFORE saving so future filters work (metadata.speaker="sarah" not "SPEAKER_01").
  • Bulk search after the meeting: m.bulk_search([list of agenda items]) to see what was actually covered for each item.
  • Webhook to Slack: register a webhook on memory.saved filtered by metadata.category="decision" to broadcast decisions to a channel in real-time.
Last updated 2026-05-17edit