/voc-source-notes — Mine Meeting Notes
Your call recorder captures scheduled video calls on a work account. It misses the conference hallway conversation, the in-person QBR, the dial-in from a phone, and the meeting someone forgot to admit the bot to. Meeting-notes apps catch a different slice, and the two sets overlap less than people assume.
Notes are lower fidelity than transcripts — summarized, not verbatim. Treat them accordingly and the pipeline will weight them correctly.
Requires
| What | Value |
|---|---|
| Notes MCP server or export | Granola, Fathom, Otter, Fireflies, or a Notion database of meeting docs |
| Config | context/product-context.md → notes_source, internal_meeting_patterns |
| Cost | Free on most plans. |
Wiring the tools
Tool names are not hardcoded here on purpose. Run /mcp to see what your notes server
exposes, then add those names to allowed-tools. A skill that declares a tool from a different
product entirely will fail silently at its first call, which is exactly the class of bug this
repo is trying not to ship.
No MCP server for your notes app? Most export to markdown. Point notes_source at the export
directory and this skill reads the files directly with Glob and Read.
Execution
Step 1 — Find customer-facing meetings
Pull meetings in the window, then exclude internal ones. Default exclusion patterns — extend them in your context file:
standup · 1:1 · 1-1 · retro · planning · all hands · allhands · sync ·
interview · review (when no external domain is present) · team · offsite
The reliable test is the attendee list: if every attendee is on an internal domain, it is an internal meeting regardless of the title. Use the title patterns only when attendees are missing.
Step 2 — Extract signal, not summary
A meeting note is already a summary. Summarizing it again produces mush. Instead, pull only:
| What | Rule |
|---|---|
| Quoted customer statements | Notes apps mark these with quotation marks or a "they said" construction. These are your only true verbatims from this source. |
| Stated pains and blockers | Usually under a "concerns" or "challenges" heading |
| Requests and asks | Under "action items" or "follow-ups" — filter for things the customer asked for, not tasks your team assigned itself |
| Competitor mentions | Any named vendor |
| Decision criteria | "They need X before they can move forward" |
Everything else — agenda, attendees, next steps for your own team — is not VoC.
Step 3 — Mark fidelity honestly
Every signal from this source carries fidelity: "summarized" unless it is inside quotation
marks in the original note, in which case fidelity: "verbatim".
This matters more than it sounds. A summarized signal is fine for detecting a pattern and
unusable as a published quote. Downstream, /voc-dispatch will refuse to put a summarized
signal in a testimonial, and it can only do that if this field is honest.
Step 4 — Write
outputs/voc/sources/notes/<date>-<slug>.json:
{
"channel": "notes",
"verbatim": "...",
"fidelity": "summarized",
"company": "...",
"attendee_roles": ["VP Marketing", "RevOps Manager"],
"meeting_title": "...",
"meeting_date": "2026-04-22",
"signal_type": "pain",
"source_link": "..."
}
Report: meetings scanned, internal excluded, customer-facing analyzed, signals extracted, and the verbatim-to-summarized split.
Overlap with call transcripts
If both this skill and /voc-source-calls cover the same meeting, you will double-count it —
and since they are different channels, the confirmation rule will treat one conversation as two
independent sources. That is the single most damaging failure mode in this pipeline, because it
manufactures confidence out of nothing.
Deduplicate on company plus date plus approximate title before profiling. When both exist, keep the transcript and drop the note. Verbatim beats summarized every time.
The synthesis step cannot catch this for you. It has to happen here.
What this gets wrong
- Notes are one attendee's reconstruction, shaped by what the AI notetaker's model found salient. Two notetakers on the same meeting produce different notes.
- Quotation marks in notes are not always verbatim. Some tools add them stylistically. Spot check a few against a recording before trusting the fidelity flag completely.
- Coverage is uneven. People remember to run a notetaker for important meetings and forget for routine ones, which biases the corpus toward high-stakes conversations.
- In-person notes are the thinnest. Typed after the fact, from memory, usually the shortest and least reliable records in the set.