Analyzes today's calendar events and generates meeting prep notes with attendee context, pending items, and communication history. Activates for meeting preparation, calendar review, daily meeting summaries, or 'who am I meeting with today?' Classifies meetings by type, scores importance, and cross-references attendees against Gmail and Notion CRM.
From founder-osnpx claudepluginhub thecloudtips/founder-os --plugin founder-osThis skill uses the workspace's default tool permissions.
Designs and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Analyze today's calendar events and generate structured preparation notes for each meeting. For every event, extract attendee identities, cross-reference them with Gmail and Notion for relationship context, surface pending action items and unanswered communications, and produce a prioritized prep brief. Treat calendar data as the primary source for scheduling facts (time, duration, recurrence, attendees) while enriching with email history and CRM data. Process all meetings in start-time order, flag high-priority meetings for attention, and degrade gracefully when enrichment sources are unavailable.
Categorize every calendar event into exactly one meeting type. Classification drives the depth of prep notes generated and the enrichment sources consulted.
| Type | Detection Signals | Prep Depth |
|---|---|---|
| external-client | Attendee email domains differ from user's org domain; attendee appears in CRM Contacts or Companies | Full (all sources) |
| internal-sync | All attendees share the user's org domain; recurring cadence (weekly/biweekly) | Light (agenda + open items only) |
| one-on-one | Exactly 2 attendees (user + 1 other) | Full (relationship-focused) |
| group-meeting | 4+ attendees, mixed domains or single domain | Standard (agenda + key attendee context) |
| recurring | Event has recurrence rule (RRULE); has occurred at least twice before | Standard (delta from last occurrence) |
| ad-hoc | No recurrence rule; first-time event with these attendees | Full (extra context needed) |
Apply classification rules in specificity order: external-client > one-on-one > ad-hoc > recurring > group-meeting > internal-sync. When multiple types apply (e.g., a recurring one-on-one with a client), select the most specific type -- in this example, external-client.
Score each meeting 1-5 to determine prep priority and output ordering. Calculate from four weighted factors:
| Factor | Weight | Scoring |
|---|---|---|
| Attendee seniority | 0.30 | 5 if C-suite/VP present, 4 if Director, 3 if Manager, 2 if IC, 1 if unknown |
| External vs internal | 0.25 | 5 if external client/partner, 3 if cross-team internal, 1 if same-team internal |
| New vs recurring | 0.25 | 5 if first meeting with any attendee, 3 if ad-hoc with known contacts, 1 if recurring |
| Deal proximity | 0.20 | 5 if attendee linked to active deal in Negotiation/Proposal stage, 3 if Qualified/Lead stage, 1 if no deal or Closed |
Compute weighted sum and round to nearest integer. Meetings scoring 4-5 receive a priority flag in the output.
For each attendee on a calendar event, build a context profile by cross-referencing available data sources. Process attendees in parallel when possible.
Search Gmail for threads involving each attendee's email address within the last 90 days.
Extract per attendee:
When a CRM Contact match exists, retrieve:
Search Notion pages for the attendee's name or company name:
Assemble per-attendee context into this structure:
- Name: [display name]
- Email: [email]
- Role: [title at company] or "Unknown"
- Company: [company name] or "Internal"
- Contact Type: [Decision Maker/Champion/etc.] or "N/A"
- Relationship Status: [Active/Cooling/Dormant/New]
- Last Interaction: [date] via [email/meeting/note] -- [one-line summary]
- Pending Items: [list of unanswered emails or open action items]
- Active Deals: [deal name, stage] or "None"
Generate one prep note per calendar event. Structure every prep note with the same sections for consistency.
Include the attendee context output (from the lookup step above) for each participant. Order attendees by: external before internal, then by seniority (highest first), then alphabetically.
Compile all pending items related to the meeting's attendees and topics:
Deduplicate by matching action verb + subject phrase. When the same item appears in both email and Notion, keep the version with more context and note both sources.
Summarize the last 3 relevant interactions with the meeting's attendees (across email, calendar, and notes). For each interaction include:
Sort by date, most recent first.
Generate 2-4 actionable recommendations tailored to the meeting type and context:
| Meeting Type | Recommendation Focus |
|---|---|
| external-client | Review deal status, prepare answers to likely pricing/timeline questions, note any unresolved issues |
| one-on-one | Review pending feedback items, check on previously assigned tasks, note career or project milestones |
| internal-sync | Prepare status update, flag blockers, review action items from last sync |
| ad-hoc | Research attendees if new contacts, prepare introductory context, review the meeting request thread |
| recurring | Review notes from last occurrence, prepare delta updates, flag stale recurring items for removal |
| group-meeting | Identify the user's expected contribution, prepare any assigned presentation materials, review shared documents |
Order all meetings by start time. Place priority-flagged meetings (importance score 4-5) at the top of the output regardless of time, under a "Priority Meetings" header.
### [Meeting Title]
**Time**: [start time] - [end time] ([duration])
**Type**: [meeting type] | **Importance**: [score]/5 [PRIORITY flag if 4-5]
**Location**: [meeting link or room] or "Not specified"
#### Attendees
[Attendee context blocks, one per participant]
#### Agenda
[Bullet list -- explicit agenda items first, then inferred items marked with [Inferred]]
#### Open Items
- **You owe**: [items the user needs to address before or during this meeting]
- **Owed to you**: [items attendees should be delivering]
- **Overdue**: [past-due items involving any attendee]
#### Recent Context
[Last 3 interactions summary]
#### Prep Recommendations
[2-4 actionable recommendations]
Not all calendar events warrant prep notes. Apply these filters before processing:
Produce useful prep notes even when enrichment sources are unavailable.
Rely on title-based topic inference and attendee email history to build the agenda summary. Flag the agenda as entirely inferred: "No event description provided -- agenda inferred from context."
Limit individual attendee context to the top 5 most relevant attendees, determined by: external contacts first, then contacts with active deals, then contacts with recent interactions. List remaining attendees by name only under a "Also attending" subsection.
When two meetings are scheduled with zero gap between them, flag the transition in both prep notes: "Immediately followed by [next meeting title]" and "Immediately preceded by [previous meeting title]". Suggest preparing materials for both meetings in advance.
When a recurring meeting instance has attendees added or removed compared to the recurring series definition, highlight the delta: "New this session: [names]" and "Not attending this session: [names]".
Compute attendee context once and reuse across all meetings for that attendee. Do not repeat the full cross-reference lookup. Reference the first meeting's attendee block and note "See [first meeting title] for full context" in subsequent appearances.