Meeting capture agent
Meeting capture agent
An agent that takes a raw meeting transcript and turns it into a structured note with attendees, decisions, action items, and follow-ups.
What it does
You create a transcript at Inbox/transcript-2026-05-28.md. A trigger splices an > [!ai] directive into it; the next time your connected MCP agent polls pending_directives, it:
Reads the transcript.
Proposes a meeting note in
Meetings/YYYY-MM-DD - <title>.md.Extracts:
Attendees (with vault wikilinks if they exist in
People/)Decisions
Action items, each as
- [ ] @owner: ...Open questions
Follow-ups
Adds the original transcript as a foldable callout at the bottom.
Setup
1. The trigger
A trigger rule is exactly {when: "file:created:<glob>", prompt: "..."}. The only event is file:created, and the only thing a trigger does is splice a > [!ai] <prompt> directive into the newly created note. It does not run an agent, choose a provider/model, or filter on body content – name the transcripts so they match a glob (here, Inbox/transcript-*.md).
# .lettuce/triggers.yml
- when: "file:created:Inbox/transcript-*.md"
prompt: |
This file is a meeting transcript.
1. Identify the date (from frontmatter, body, or filename) and a title.
2. List attendees. For each attendee, search People/ for an existing
note (search) and use [[Person]] wikilinks where the note exists.
3. Extract decisions (anything stated as resolved).
4. Extract action items. Format each as
`- [ ] @owner-handle: <action>`, where owner-handle is the first
name lowercased.
5. Extract open questions.
6. Create Meetings/<date> - <title>.md with this structure:
---
title: ...
date: ...
attendees: [...]
tags: [meeting]
---
# Meeting title
## Attendees
## Decisions
## Action items
## Open questions
## Follow-ups
## Transcript
> [!quote]- Full transcript
> <original transcript here>
7. Delete this transcript file once the meeting note is created.
Use write_note and delete_note. If your key is propose-only these queue
proposals for review.
When you create a file matching the glob, the trigger inserts the directive into it. The actual work – reading, extracting, and proposing the meeting note – is done by whatever MCP agent is connected, which discovers the directive through pending_directives.
2. AGENTS.md mention
## Meeting handling
Meeting transcripts go into `Inbox/transcript-*.md`. A trigger drops an
`> [!ai]` directive into each one asking you to turn it into a note under
`Meetings/`. Action items use the `- [ ] @handle: action` format so the
Daily Triage agent picks them up.
Example
You drop in:
---
date: 2026-05-28
---
# Meeting: Q2 planning
[transcript with "Sarah:", "Mike:", etc.]
The agent proposes:
---
title: "Q2 planning"
date: 2026-05-28
attendees: [Sarah, Mike, Baher]
tags: [meeting, planning, q2]
---
# Q2 planning
## Attendees
- [[Sarah Chen]]
- [[Mike Rodriguez]]
- [[Baher]]
## Decisions
- Ship Lettuce 0.6 by 2026-06-01.
- Skip the mobile companion for now.
## Action items
- [ ] @baher: Write the launch post by 2026-05-29.
- [ ] @sarah: Set up the email list.
- [ ] @mike: Prepare Hacker News post.
## Open questions
- Pricing for 1.0?
- Should we open-source the LSP integration?
## Follow-ups
- Next sync: 2026-06-05.
> [!quote]- Full transcript
> Sarah: ...
> Mike: ...
Variations
Different file naming: the trigger matches on a glob, so add more rules with globs like
Inbox/recording-*.mdorInbox/*-notes.md. (The glob matches the note path; markdown files only.)Auto-create person notes: extend the prompt to ask the agent to
write_notefor unrecognised attendees inPeople/(propose-only keys queue these as proposals).Send action items elsewhere: ask the agent in the prompt to also push action items to an external system through its own tools after the meeting note is accepted.