Meeting capture agent

~4 min read

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:

  1. Reads the transcript.

  2. Proposes a meeting note in Meetings/YYYY-MM-DD - <title>.md.

  3. Extracts:

    • Attendees (with vault wikilinks if they exist in People/)

    • Decisions

    • Action items, each as - [ ] @owner: ...

    • Open questions

    • Follow-ups

  4. 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