From fathom-pack
Syncs Fathom meeting notes and action items to CRMs like Salesforce or HubSpot, generates automated follow-up emails, and maintains history in a SQL database.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin fathom-packThis skill is limited to using the following tools:
Automate post-meeting workflows: sync meeting notes to CRM opportunities, send follow-up emails with action items, and maintain a meeting history database.
Provides reference architecture for Fathom meeting intelligence integrations: webhooks to PostgreSQL, Python action extraction, CRM sync (Salesforce/HubSpot), email follow-ups.
Enhances Granola meeting notes post-transcript with AI templates, shares to Slack/Notion/CRM, extracts action items, and supports follow-ups.
Provides Python patterns for Close CRM, HubSpot, Salesforce integrations: API clients with auth, CRUD for leads/deals/activities, webhooks, sync automation. For sales pipelines and lead management.
Share bugs, ideas, or general feedback.
Automate post-meeting workflows: sync meeting notes to CRM opportunities, send follow-up emails with action items, and maintain a meeting history database.
def sync_meeting_to_crm(meeting: dict, crm_client):
summary = meeting.get("summary", "")
action_items = meeting.get("action_items", [])
participants = meeting.get("participants", [])
# Find matching CRM contact/opportunity by participant email
for email in participants:
contact = crm_client.find_contact(email=email)
if contact:
crm_client.log_activity(
contact_id=contact["id"],
type="meeting",
subject=meeting["title"],
body=f"Summary: {summary}\n\nAction Items:\n" +
"\n".join(f"- {a['text']}" for a in action_items),
date=meeting["created_at"],
)
def generate_followup_email(meeting: dict) -> str:
actions = meeting.get("action_items", [])
action_list = "\n".join(f"- {a['text']}" for a in actions)
return f"""Hi team,
Thanks for the meeting: {meeting['title']}
Summary:
{meeting.get('summary', 'No summary available')}
Action Items:
{action_list if action_list else '- None recorded'}
Best regards"""
CREATE TABLE fathom_meetings (
id VARCHAR PRIMARY KEY,
title VARCHAR NOT NULL,
created_at TIMESTAMP NOT NULL,
duration_seconds INTEGER,
summary TEXT,
participant_count INTEGER,
action_item_count INTEGER,
synced_to_crm BOOLEAN DEFAULT FALSE,
synced_at TIMESTAMP
);
For error troubleshooting, see fathom-common-errors.