Turn Granola action items into Todoist tasks with a Slack recap

When a new Granola meeting note lands, an agent files every action item as a Todoist task and posts a tidy recap of who owns what to Slack.

Agentic Task
GranolaTodoistSlack BotPersonal ProductivityOperationsMeeting WorkflowsNotifications & Alerts

Build me an agent workflow that turns my Granola meeting action items into Todoist tasks and posts a recap to Slack.

Trigger: poll Granola for new meeting notes (new_note). When a new note appears, fetch the full note (including transcript and attendees) from Granola using Get Note. Make sure to request the transcript explicitly, not just the summary.

What the agent should do once it has the note:

1) Read the summary, transcript, and attendees, and extract concrete action items. An action item is something a specific person committed to doing as a result of the meeting. Ignore side comments, FYIs, and vague intentions like "we should look into this someday". For each one, capture: the action, the owner (best guess from the transcript and attendees list), a due date inferred from the language used ("by EOD Friday", "next week", "before our next sync"), and a priority based on urgency cues ("asap" or "blocker" → priority 1, "soon" → priority 2, plain commitments → priority 3, "eventually" → priority 4).

2) For each action item, create a Todoist task in my Follow-ups project using Create Task. The task content should include the action and the owner's name. Pass the inferred due date as due_string so Todoist parses it naturally (e.g. "Fri", "next Monday"). Set the matching Todoist priority. If the Follow-ups project doesn't exist yet, look it up by name on first run and ask me before creating a new one.

3) After tasks are created, post one single recap message to Slack using Send a Message (Slack Bot). The recap should include the meeting title, a one-line summary, and a bulleted list of every commitment in the format "*Owner* — action (link to Todoist task)". Use Slack mrkdwn (asterisks for bold, angle-bracket links). Post to the channel I configure (e.g. #team-followups).

4) If the note has no real action items (FYI-only call, status update, casual chat), skip Todoist and Slack entirely. Do not post an empty recap.

Inputs I should be able to configure: the destination Slack channel for the recap, the name of my Todoist Follow-ups project, and whether to skip specific meeting types like 1:1s or recurring stand-ups (by title match).

Additional information

What does this prompt do?
  • Watches your Granola workspace and starts the moment a new meeting note finishes.
  • Reads the full note, transcript, and attendees, then picks out the real action items (and ignores side comments and FYIs).
  • Creates a Todoist task for each commitment in your Follow-ups project, with the owner, a sensible due date, and a priority inferred from the meeting.
  • Posts one clean recap message in Slack listing each owner, what they committed to, and a link back to the new Todoist task.
What do I need to use this?
  • A Granola account on a Business or Enterprise plan (personal API access is not available on Free or Pro).
  • A Todoist account with a project you want follow-ups to land in (the agent will use one called Follow-ups by default).
  • A Slack workspace and the channel where you want the recap posted.
How can I customize it?
  • Swap the destination Todoist project, or route tasks to different projects by meeting topic or attendee.
  • Choose which Slack channel gets the recap, or have it sent as a DM to you instead.
  • Tune how due dates and priorities are inferred from meeting language (for example, treat anything tagged urgent or blocker as priority 1).
  • Tell the agent to skip the recap and tasks for specific meeting types (1:1s, FYI-only calls, recurring stand-ups).

Frequently asked questions

What counts as an action item?
Anything a specific person committed to doing as a result of the meeting. The agent ignores side comments, FYIs, and vague intentions like "we should look into this someday".
What happens after an FYI-only call with no real follow-ups?
Nothing. If the agent can't find any real action items, it skips Todoist and Slack entirely. You won't get a noisy empty recap.
Will this work on the free Todoist plan?
Yes. Tasks land in a normal Todoist project, so any plan that supports projects works. You only need a paid Todoist plan if you want to assign tasks to teammates inside Todoist.
Does it only run on meetings I was in?
Yes. Your Granola personal API key only sees your own notes, so the agent only fires for meetings that show up in your account.
How does it pick the due date and priority?
It reads the language around each commitment ("by Friday", "asap", "before our next sync", "eventually") and converts that to a Todoist due date and priority. You can adjust the rules at any time.

Stop chasing meeting follow-ups by hand.

Connect Granola, Todoist, and Slack once, and Geni files every action item and posts the recap the moment a meeting ends.