Claude-powered Granola to Linear action items with a Slack recap

When Granola finishes a new meeting note, Claude pulls out your action items, files them in Linear, dedupes duplicates, and drops a clean recap in Slack.

Agentic Task
GranolaAnthropicLinearSlack BotPersonal ProductivityOperationsMeeting WorkflowsNotifications & Alerts
PromptCreate

Build me a Claude-powered agent workflow that turns every new Granola meeting note into filed Linear issues and a clean Slack recap, so my commitments never die inside a notes doc.

Trigger: poll Granola on new_note. Whenever a new meeting note shows up, kick off the agent.

Step 1. Call Granola Get Note for the new note id. Ask for the full note including the transcript, and grab the meeting title, the Granola URL, the attendees with their emails, and the meeting host.

Step 2. Call Anthropic Create Message with a Claude prompt that reads the note and returns two things: (a) a short executive summary of the meeting, maybe three to five bullets max, and (b) a structured list of action items where each item has an owner name, a one-sentence description, and an urgency of low, medium, or high. Ask Claude to only pull items with a real verb and a real commitment. Skip vague 'we should think about' lines.

Step 3. Filter the action items down to the ones the meeting host is on the hook for. That means items where the owner matches the meeting host, plus any items where no owner was named. Skip items owned by other attendees by default. Keep this rule configurable.

Step 4. Dedupe against Linear before creating anything. For each filtered action item, use Linear Search Issues to pull recent open issues in the configured team whose titles look related. Ask Claude to judge whether any of those existing issues are essentially the same task as the action item. If Claude says yes, mark that action item as a duplicate and remember the existing issue's URL and identifier. If Claude says no, mark it for creation.

Step 5. For each action item marked for creation, call Linear Create Issue in the configured team. Use the action item description as the issue title. In the issue description, reference the meeting title, paste the Granola URL, and include the short bit of context Claude captured. Set priority from the urgency field when possible.

Step 6. Post a single Slack recap using Slackbot Send a Message to a configurable channel. Keep it tight and Slack-friendly. Tag the meeting host at the top. Use bullets, not walls of text. Include the executive summary, then a 'Filed in Linear' section listing each newly created issue with its Linear URL, then a 'Duplicate, linked instead' section listing each skipped item with the matching existing Linear issue URL. Close with a one-line 'Filed X issues, linked Y duplicates' summary.

Configuration I want to control: the Linear team new issues land in, the Slack channel the recap posts to, the ownership rule (mine only vs whole team), and the dedupe strictness. Defaults are fine to start, but make these easy to change.

Additional information

What does this prompt do?
  • Watches Granola for new meeting notes and pulls the full note including the transcript.
  • Uses Claude to write a short executive summary and pull out real action items with an owner, a description, and an urgency.
  • Files each of your own or unassigned action items as a Linear issue in a team you pick, with the meeting title and Granola link in the description.
  • Checks your open Linear issues first, and if Claude sees a near-duplicate it skips the create and links the existing issue in Slack instead.
  • Posts a Slack-friendly recap in your chosen channel with bullets, the meeting host tagged, and a 'Filed X issues' line at the bottom.
What do I need to use this?
  • A Granola account with a personal API key so we can read new meeting notes.
  • An Anthropic account with an API key so Claude can write the summary and pick out action items.
  • A Linear workspace where the agent can create issues in a team you choose.
  • A Slack workspace with the bot connected and access to the recap channel.
How can I customize it?
  • Change which Linear team new issues land in, or route them by keywords in the action item.
  • Change the Slack channel, or send a compact DM version to yourself instead of a channel post.
  • Tighten the ownership rule. You can include items for anyone on your team, or keep it strict at 'only mine or unassigned'.
  • Adjust how strict the dedupe is. Loosen it so only exact title matches skip, or tighten it so anything about the same topic gets a comment link.
  • Skip low-signal notes, for example 1:1s or notes shorter than a couple of paragraphs, so the recap channel stays clean.

Frequently asked questions

Will this create issues for other people on my team?
By default, no. The agent only files issues where the owner is you (the meeting host) or where no owner was named. You can change that rule if you want it to cover the whole team.
How does the duplicate check work?
Before creating each issue, the agent searches your open Linear issues and asks Claude whether any of them are essentially the same task. If yes, it skips the create and notes the existing issue link in the Slack recap instead.
Which Claude model runs the summary?
You can pick any current Claude model in the workflow settings. The default is fine for most meetings, and you can bump it up for longer or more technical calls.
Can I use this if my team lives in Jira or Asana instead of Linear?
This template is wired for Linear. If you want the same flow into Jira or Asana, tell the agent that during setup and it will swap the file-and-forget step for the right integration.
Do meeting attendees see the recap?
Only the people in the Slack channel you pick see it. Pick a channel your team already reads, or a private channel just for you, depending on how public you want meeting follow-ups to be.

Stop hand-copying action items after every meeting.

Connect Granola, Anthropic, Linear, and Slack once, and Geni turns every meeting note into filed work and a clean recap.