Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
extruct-ai avatar

Meeting Followup

  • 2 installs
  • 7 repo stars
  • Updated April 12, 2026
  • extruct-ai/gtm-cowork-skills

Drafts a post-call follow-up email by combining Granola meeting notes, Gmail history, and pending Attio tasks for a contact.

About

Finds the relevant meeting in Granola, pulls email history from Gmail and open tasks from Attio, and drafts a follow-up email capturing action items and commitments. A salesperson uses it right after a call to send a grounded follow-up.

  • Extracts action items, decisions, and commitments from meeting notes
  • Combines Granola, Gmail, and Attio context into the draft

Meeting Followup by the numbers

  • 2 all-time installs (skills.sh)
  • Ranked #729 of 853 Sales & Marketing skills by installs in the Skillselion catalog
  • Data as of Jul 13, 2026 (Skillselion catalog sync)
npx skills add https://github.com/extruct-ai/gtm-cowork-skills --skill meeting-followup

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs2
repo stars7
Last updatedApril 12, 2026
Repositoryextruct-ai/gtm-cowork-skills

What it does

Drafts a post-call follow-up email by combining Granola meeting notes, Gmail history, and pending Attio tasks for a contact.

Files

SKILL.mdMarkdownGitHub ↗

Meeting Follow-Up Email

Draft a follow-up email after a call by combining meeting notes, email history, and CRM context.

Inputs

The user provides one or more of:

  • A contact name or email address
  • A meeting reference (title, date, or Granola meeting ID)
  • Specific points to include in the follow-up

If the user provides a Granola meeting context (summary, endTime), use that directly. If not provided, ask for the contact name or email.

Workflow

Step 1: Gather meeting context (Granola MCP)

Use Granola MCP tools to find and extract the meeting:

1. If meeting context is provided inline (summary, endTime): use it directly. 2. If contact name is known: call query_granola_meetings with "meeting with {contact_name}" to find the most recent meeting. 3. If no match: call list_meetings with time_range: "last_30_days" and scan for a matching title or attendee. 4. Once meeting ID is found: call get_meetings with the ID to get full details.

Extract:

  • Summary and key discussion points
  • Action items and next steps
  • Decisions made
  • Commitments from either side

If more detail is needed, call get_meeting_transcript with the meeting ID.

Step 2: Gather email history (Gmail MCP)

Use Gmail MCP tools to get conversation context:

1. Resolve the contact email. Sources (try in order):

  • User provides it directly
  • Extract from meeting attendees (Granola)
  • Search Attio: use search-records with object = "people" and the contact name as query
  • Ask the user

2. Call gmail_search_messages with query: from:{contact_email} OR to:{contact_email} Limit to 10 most recent messages.

3. Identify the most relevant thread (most recent exchange or matching meeting topic).

4. Call gmail_read_thread with the thread ID to get full email bodies.

Extract:

  • What was last discussed over email
  • Open questions or proposals
  • Tone and formality level of the conversation
  • Prior commitments or offers

Step 3: Check pending CRM tasks (Attio MCP)

Query Attio for open tasks linked to this contact:

  • Use list-tasks with is_completed = false.
  • Filter results for tasks whose linked_records match the contact's record ID

Note any overdue or pending tasks to reference in the follow-up.

Step 4: Draft the follow-up

Structure: 1. Thank them for their time (1 sentence, reference the specific meeting topic) 2. Summarize key discussion points (2-3 bullets from meeting + emails) 3. List next steps or action items (explicit, with owners if discussed) 4. Clear call-to-action (one specific ask or proposal)

Tone rules:

  • Match the tone of the existing email thread (formal ↔ casual)
  • Professional but warm
  • No filler phrases ("I hope this email finds you well")
  • Use the same greeting style as previous emails in the thread
  • Reference specific things discussed, not generic pleasantries

Constraints:

  • Under 200 words
  • No emojis unless the contact uses them
  • If a proposal or price was mentioned, reference it naturally

Step 5: Save artifacts locally

After gathering context, persist to revops/customers/{company-slug}/:

1. Meeting notes: Save Granola meeting data to meetings/YYYY-MM-DD_{title-slug}.md using the template from revops/customers/README.md 2. Context update: If context.md exists, update the Deal History and Current Status. If it doesn't exist, create it from the template. 3. Check first: Read existing files before writing to avoid overwriting.

This is non-optional — Granola data can be deleted, the local copy is the source of truth.

Step 6: Present and act

Show the draft with:

  • To: address
  • Subject: line (reply to existing thread or new subject)
  • Body
  • Context used: brief note on sources (meeting summary, email thread, tasks)

Ask the user if they want to: 1. Edit the draft 2. Create a Gmail draft via gmail_create_draft 3. Start over with different context

Attio MCP Tool Reference

Use these MCP tools (NOT raw API calls):

TaskToolKey parameters
Search people or companiessearch-recordsobject, query
Get pending taskslist-tasksis_completed=false

Environment

VariableSourcePurpose
AttioMCP (Attio connector)CRM — people, tasks
GmailMCP (claude.ai Gmail)Email search, read threads, create drafts
GranolaMCP (Granola)Meeting notes, transcripts, summaries

Reference

  • CRM enrichment context: revops/CRM_ENRICHMENT.md
  • Customer artifacts: revops/customers/ (see README.md for structure and templates)

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.