한국어

Dawell Service Meeting Notes System
Purpose-built for meeting notes — MeetClaw

We built an agentic meeting-notes system.
Upload a recording and the AI decides for itself, producing accurate meeting notes — an autonomous agent.

Written 2026-05-25 · For partners & internal use · v1.0
MEETCLAW
1 · In one sentence

An autonomous agent purpose-built for meeting notes

The Dawell Service meeting-notes system takes a meeting recording and, deciding for itself,
produces accurate meeting notes — an autonomous agent.

It is not a tool that takes audio and spits out a summary in one shot. It figures out what is missing and asks back, learns your organization's vocabulary, and finalizes the notes only when it is ready — closer to a capable colleague working alongside you.

1 · Origin of the name

Why "MeetClaw"

One major thread in recent AI is the autonomous agent (agentic system). Give it a goal and it picks its own tools, decides, and asks back when stuck — the flagship being the general-purpose autonomous agent OpenClaw.

MeetClaw takes OpenClaw's operating principle (a ReAct agent) as-is, but specializes it for one job: writing meeting notes.

If OpenClaw is "the autonomous agent that does anything,"
MeetClaw is "the autonomous agent that writes meeting notes best."
1 · What sets it apart

How it differs from existing meeting-notes tools

Most tools follow a fixed "audio → transcribe → summarize" pipeline — MeetClaw is different because it is an agent.

🛡️

It asks instead of guessing

When it doesn't know, it doesn't assume — it checks with you.

→ Safeguards (Ch. 5)
🧠

It learns as you talk

It stores people, terms, and rules as organizational memory, and even references past notes via RAG.

→ Organizational memory (Ch. 4)
📈

It gets smarter with use

The more meetings pile up, the less it asks back and the more consistent it becomes.

→ Compounding effect (Ch. 6)
2 · Core architecture

Not a fixed workflow — a ReAct agent that decides for itself

Control flow is handed to the LLM rather than to code — the key line between a "workflow" and an "agent."

Fixed workflowMeetClaw (ReAct agent)
Control flowBranches hard-coded in advanceThe AI decides each turn
Adding a behaviorNew nodes/edges (structural change)Add one tool
Asking back vs. workingSeparate stagesNaturally interleaved in one flow
AdaptabilityOnly anticipated scenariosHandles unexpected turns by combining tools
2 · How it works

The Reason · Act · Observe loop

ReasonThe AI decides what to do next (Gemini 2.5 Pro)
↓  tool call
ActRun a tool — extract info · update memory · detect ambiguity
↓  observe the result
Back to ReasonIf it answers without a tool → reply to the user

The AI holds 7 tools in hand and combines them freely as the meeting context demands.

  • Extract cues from the transcript · organize meeting info
  • Write / update / delete organizational memory
  • Detect ambiguity before writing (guessing prevention)
  • Finalize the meeting notes
3 · What the agent does

7 tools — observe · record · learn · finalize

AbilityToolWhat it does
👁 Observeextract_transcript_signalsRe-confirms cues for attendees, companies, dates, and figures from the transcript
✍ Recordupdate_collected_infoBuilds up meeting metadata (date, attendees, speaker cues, context)
🧠 Learnwrite_memoryStores new people, companies, terms, rules, and forbidden labels to long-term memory
🧠 Learnupdate_memoryUpdates selected fields of an existing memory entry
🧠 Learndelete_memoryDeactivates memory that no longer holds
🛡 Verifydetect_ambiguitiesFlags risky ambiguities and queues them for user confirmation
✅ Finalizecommit_minutesDeclares collection/resolution complete and triggers notes generation
4 · Organizational memory

A system that learns through conversation — 5 categories

Every meeting is different, but an organization's vocabulary repeats — tell it once and the next meeting uses it automatically.

CategoryWhat it remembersRequired / optional fields
personPerson — real name, org, role, aliases, speaking cuescanonical / org, role, aliases, …
companyCompany / organization — full name, short namename / description, aliases
termTerm / acronym definitionsdefinition / aliases
writing_ruleWriting rules to always applyrule / examples
forbidden_labelExpressions never to use in the notespattern / replacement, reason

Two scopes — org-shared (org): a common pool for members (isolated from other orgs) · personal (user): applies only to you

4 · How it learns

It learns "in the conversation," not on a separate page

Memory CRUD is exposed as the agent's tools — learning happens in the very conversation where notes are written.

"Gun is a PM at Dawell Service"write_memoryStore new person
"Gun isn't a PM, he's a designer"update_memoryUpdate the role field
"Delete Gun's memory now"delete_memoryDeactivate
"From now on, don't write 'the Popup side'"write_memoryRegister a forbidden_label
4 · Referencing past notes

RAG-based context injection — even referencing past notes

  • Embeds the new transcript → finds related past notes by pgvector cosine similarity
  • With few notes it uses most-recent; with many, top-k by similarity (default 2, ~3,000 chars each)
  • Ships a directive: "reference prior decisions, discussions, attendees, and terms — don't ask for the same info again"
  • Falls back to most-recent if embedding fails
Across consecutive meetings, prior decisions and context carry over automatically, and attendees/terms confirmed in the last meeting are not asked again.

→ This is where the "compounding effect" of Ch. 6 is implemented in code.
5 · Safeguards

Making an autonomous agent trustworthy — a 4-layer safety net

① Ask-back & ambiguity detection

It picks up to 3 ambiguities (speaker, decision owner, assignee, date, term) and asks about them one by one, moving on only once all are resolved. "If you don't know, don't write it."

② Sequential tool node

Even when several tools are called in one turn, a custom sequential node runs and threads them one at a time to avoid state-channel conflicts.

③ Checkpointing

A PostgreSQL checkpointer (PostgresSaver) persists conversation state to the session thread — context survives multi-worker runs and restarts.

④ Iteration cap

A cap of 12 iterations is the last bolt against a runaway autonomous loop.

6 · Impact

Quantitative impact — giving back the time spent on notes

Based on a 60-minute meeting, savings vs. manual work (varies with meeting length and attendee count).

TaskBefore (manual)After (MeetClaw)Savings
Writing the notes30–60 min5–10 min~80%
Saving & sharing files5–10 min eachUnder 1 min~85%
Reviewing & editing notes15–30 minUnder 5 min~75%
Organizing Drive folders3–5 min eachAutomatic100% automated
6 · Key effect

A system that gets better with use — the compounding effect

0 guesses
Errors removed by asking back
Auto ↓
Fewer ask-backs over time
Consistency ↑
Org standards applied automatically
Simple automation saves time;
an agent grows with the organization.
7 · Tech stack

Multi-LLM composition on proven open source

Orchestration

LangGraph (StateGraph · tool loop · PostgresSaver) · LangChain · LangSmith

Reasoning & generation LLM

Gemini 2.5 Pro (reasoning + generation) · Gemini Flash (lightweight memory filter)

Speech & embeddings

Whisper (transcription) · OpenAI text-embedding-3-large (3072 dims)

Web & backend

Django 4.2 · DRF · gunicorn multi-worker

Data

PostgreSQL + pgvector (semantic search) · psycopg 3

Async & shared

huey (task queue) · standarda-core (Google API client)

Design principle — "use the right model for the job": heavy reasoning on 2.5 Pro, light classification on Flash, transcription on Whisper

What's next

Response streaming (SSE)

Move from synchronous responses to streaming — so the UI never looks frozen on long replies.

Embedding search over memory

Once memory exceeds 30 entries, select via embedding top-k instead of an LLM filter.

An agent that gets smarter as meetings pile up

Thank you · chris@popupstudio.ai
navigate slides · F fullscreen · Home/End first/last