morning-brief
Daily briefing with calendar, CRM priority dial list, deal momentum summary, and Gmail drafts for each lead.
What this skill does
# Morning Brief Skill
<objective>
Generate Tim's daily briefing (Monday-Friday 7:30 AM) with calendar, HubSpot hot leads for dialing, deal momentum scores, recent Clari call summaries, and personalized Gmail drafts for each priority dial list contact. Integrate health metrics from callable-lead-count. Skip leads in Supabase cooldown. Output single-page HTML brief for quick review before 50+ daily dials.
</objective>
<quick_start>
**Trigger:** M-F 7:30 AM ET (after callable-lead-count at 7:25 AM)
**Manual Trigger:** "Show morning brief" or "Today's dial list"
**Dependencies:** Requires HubSpot (portal 21530819), Google Calendar, Clari, Supabase (disposition check)
**Output:** Single-page HTML brief with calendar, dial list (20 ATL contacts), deal momentum, call summaries, draft emails
</quick_start>
<success_criteria>
- [ ] Pull Tim's calendar for today (meetings, breaks, focus blocks)
- [ ] Pull 15-20 hot leads from HubSpot (ATL-first sort, high engagement)
- [ ] Filter: skip leads in Supabase cooldown (disposition_cooldown_until > NOW)
- [ ] Enrich each lead: company, title, last touch, recent activity
- [ ] Fetch deal momentum scores for leads (from deal-momentum-analyzer or calculated)
- [ ] Check Clari for calls from last 7 days (summaries, key takeaways)
- [ ] Create Gmail draft for each lead (using prospect-refresh templates or custom)
- [ ] Output: HTML brief with calendar, dial list, deal pipeline, call highlights, drafts ready
- [ ] Report: dial target (15-20 ATL), meeting blocks, deal momentum trends
</success_criteria>
<workflow>
## Stage 1: Pull Tim's Calendar for Today
**MCP Tool:** `gcal_list_events`
```
calendarId: "primary"
timeMin: TODAY 00:00:00
timeMax: TODAY 23:59:59
timeZone: "America/New_York"
condenseEventDetails: true
```
**Extract and Display:**
- All meetings with times, attendees, duration
- Focus blocks or "Do Not Disturb" blocks
- Lunch/break time
- Available dial windows (gaps between meetings)
**Calendar Output:**
```
## Today's Calendar
09:00 - 09:30 | All Hands (Zoom)
09:30 - 10:30 | [AVAILABLE FOR DIALS] 60 min
10:30 - 11:15 | 1:1 with Manager
11:15 - 12:00 | [AVAILABLE FOR DIALS] 45 min
12:00 - 13:00 | LUNCH
13:00 - 14:30 | [AVAILABLE FOR DIALS] 90 min
14:30 - 15:00 | Clari Call Review
15:00 - 16:00 | [AVAILABLE FOR DIALS] 60 min
16:00 - 17:00 | Admin / Wrap-up
```
**Dial Window Summary:** Total 255 min = 4.25 hours available for dials (target 50 dials at ~5 min/dial)
---
## Stage 2: Pull Hot Leads from HubSpot
**MCP Tool:** `search_crm_objects` (HubSpot)
```
objectType: "contacts"
filterGroups: [{
filters: [
{ propertyName: "phone", operator: "HAS_PROPERTY" },
{ propertyName: "hs_lead_status", operator: "IN", values: ["Qualified Lead", "Sales Qualified Lead"] },
{ propertyName: "hs_analytics_num_page_views", operator: "GTE", value: "3" }
]
}]
properties: [
"firstname", "lastname", "email", "phone", "jobtitle", "company",
"custom_atl_btl_tier", "custom_prospect_vertical", "hs_analytics_num_page_views",
"hubspot_owner_id", "hs_lastmodifieddate", "createdate", "custom_last_touch",
"lifecyclestage", "custom_deal_momentum_score"
]
sorts: [{
propertyName: "custom_atl_btl_tier",
direction: "ASCENDING" # ATL first
}]
limit: 50
```
**Filter + Sort Logic:**
1. Phone must exist (callable)
2. Lead status in engaged tiers (Qualified Lead, Sales Qualified)
3. Engagement signal: >3 page views OR recent activity (<7 days)
4. Sort by: custom_atl_btl_tier (ATL > GRAY > BTL)
5. Within tier, sort by: hs_lastmodifieddate DESC (most recent first)
**Trim to top 25 candidates** (will further filter in Stage 3)
---
## Stage 3: Apply Supabase Cooldown Filter
**Check Supabase disposition table for cooldown status**
**Query:** disposition table where contact_id = hubspot_contact_id AND disposition_cooldown_until > NOW()
**Cooldown Rules (per disposition policy):**
- Voicemail left: 24-hour cooldown
- Call declined/busy: 2-hour cooldown (can retry)
- Call connected but wrong person: 24-hour cooldown
- Call connected and scheduled: 7-day cooldown (follow-up call)
- Lead opted out: 30-day cooldown or permanent "Do Not Call"
**Filter Logic:**
```
FOR each contact IN hot_leads_list:
IF contact_id in supabase disposition AND cooldown_until > NOW():
SKIP contact
LOG: "In cooldown until {cooldown_until}"
ELSE:
KEEP contact (ready to dial)
```
**Output:** Filtered dial list (typically 15-20 after cooldown filter)
---
## Stage 4: Enrich Leads with Deal + Activity Data
**For each remaining lead, enrich:**
**Step A: Check deal association via HubSpot**
**MCP Tool:** `search_crm_objects` (HubSpot deals)
```
filterGroups: [{
associatedWith: [{
objectType: "contacts",
operator: "EQUAL",
objectIdValues: [contact_id]
}]
}]
properties: ["dealname", "dealstage", "amount", "closedate", "custom_deal_momentum_score"]
limit: 5
```
**Output per contact:**
- Associated deals (max 3)
- Deal stage (Negotiation, Qualification, etc.)
- Deal size
- Deal momentum score (if calculated by deal-momentum-analyzer)
**Step B: Check Clari calls (last 7 days)**
**MCP Tool:** `clari_search_calls`
```
attendeeEmail: contact.email
daysBack: 7
limit: 5
```
**Extract:**
- Call date/time
- Duration
- Summary of key topics
- Action items (from AI notes)
**Step C: Get last touch info**
- Pull custom_last_touch field from HubSpot (set by prior activities)
- Alternative: query hs_lastmodifieddate
- Display: "Last touched 3 days ago" or "Last call 2026-03-15"
---
## Stage 5: Calculate Deal Momentum Scores
**MCP Tool:** Epiphan CRM `ask_agent` OR pull from HubSpot custom field
**For each lead's associated deals, calculate momentum:**
**Momentum Scoring Factors:**
1. **Stage Progression:** +3 if moved in last 7 days
2. **Contact Breadth:** +2 if ATL contact involved, +1 per GRAY contact
3. **Activity Cadence:** +2 if >2 activities last 7 days, +1 if 1 activity
4. **Recency:** +2 if activity <2 days ago, +1 if <5 days
5. **Deal Size:** +1 if >$100K
**Momentum Tiers:**
- 10+ = π₯ Hot (near close, high activity, ATL engaged)
- 7-9 = β Warm (progressing, some ATL involvement)
- 4-6 = β¬ Cool (early stage, low activity)
- <4 = βοΈ Cold (stalled)
**Output example:**
```
Jane Smith @ Acme Corp
Deal: "Acme AV Suite" ($250K, Negotiation stage)
Momentum: π₯ 10/10 (ATL + VP Sales, moved stage 3 days ago)
Last touch: 2026-03-17 (call with VP)
```
---
## Stage 6: Check Recent Clari Calls
**MCP Tool:** `clari_search_calls`
```
repEmail: "[email protected]"
daysBack: 7
status: "POST_PROCESSING_DONE"
limit: 10
```
**Extract call summaries:**
**MCP Tool:** `clari_get_call_summary` (for each call)
```
callId: call_uuid
# Returns: summary, action_items, key_takeaways, attendees
```
**Display format:**
```
## Recent Calls (Last 7 Days)
### 2026-03-18 β State University (45 min)
Attendee: Dr. Janet Lee, Director of Academic Technology
Summary: Discussed hybrid learning infrastructure. Interest in lecture capture.
Takeaway: Promised demo of Epiphan Pearl Nano + Canvas integration
Action Items: [Send demo link by 2026-03-20]
### 2026-03-15 β County Courts (30 min)
Attendee: Tom Miller, Court Administrator
Summary: Current process: manual video setup + USB drives. Pain point: compliance archival.
Takeaway: High interest in automation. Will present to judge committee.
Action Items: [Follow-up after judge meeting, 2026-03-25]
```
**Trends:**
- Top pain points mentioned
- Products/features mentioned most
- Follow-up actions due
- Deals progressed
---
## Stage 7: Create Gmail Drafts for Priority Leads
**For each lead in final dial list (15-20), create Gmail draft:**
**MCP Tool:** `gmail_create_draft`
**Draft Template Strategy:**
**Template A β High Momentum Deal (Momentum 8+):**
```
To: [email protected]
Subject: RE: Acme AV Suite Demo β Next Steps
Hi Jane,
Following up on our call with your VP of IT on 3/17βthanks again for the positive feedback on the Pearl Nano demo.
Quick quRelated in Productivity
gitea-workflow
IncludedOrchestrate agile development workflows for Gitea repositories using the tea CLI. Use when working with Gitea-hosted repos and asking to 'run the workflow', 'continue working', 'what's next', 'complete the task cycle', 'start my day', 'end the sprint', 'implement the next task', or wanting guided step-by-step development assistance. Keywords: workflow, orchestrate, agile, task cycle, sprint, daily, implement, review, PR, standup, retrospective, gitea, tea.
microsoft-graph-gateway
IncludedRoute Microsoft Graph work in this workspace. Use when users want to read or write Outlook mail, calendar events, contacts, OneDrive or SharePoint files, Teams, Planner, To Do, users, groups, directory data, or arbitrary Microsoft Graph endpoints from VS Code. Prefer WorkIQ for common read scenarios. Use Microsoft Graph for write actions and gap-read scenarios that need exact Graph properties, filters, permissions, or endpoints.
copilotkit
IncludedUse when building with CopilotKit β setup, development, integrations, debugging, upgrading, or contributing. Routes to the appropriate specialized skill based on the task.
wordly-wisdom
IncludedProvides calibrated decision analysis using Charlie Munger-style multiple mental models, inversion, incentive mapping, circle-of-competence checks, misjudgment audits, second-order effects, and forecast updates. Use when the user asks for an oracle take, a hard call, a decision memo, a premortem, an outside view, a red-team, a sanity-check, what am I missing, think this through, or wants a strategy, hire, investment, plan, product, partnership, or major life choice analysed. Avoid for simple factual lookups or time-sensitive legal, medical, or market questions without fresh evidence.
swain-session
IncludedSession management and project status dashboard. Owns the full session lifecycle (start/work/close/resume), focus lane, bookmarks, worktree detection, and tab naming. Also serves as the project status dashboard β shows active epics, progress, actionable next steps, blocked items, tasks, GitHub issues, and recommendations. Worktree creation is deferred to swain-do task dispatch (SPEC-195). Triggers on: 'session', 'status', 'what's next', 'dashboard', 'overview', 'where are we', 'what should I work on', 'show me priorities', 'bookmark', 'focus on', 'session info'.
gandi
IncludedComprehensive Gandi domain registrar integration for domain and DNS management. Register and manage domains, create/update/delete DNS records (A, AAAA, CNAME, MX, TXT, SRV, and more), configure email forwarding and aliases, check SSL certificate status, create DNS snapshots for safe rollback, bulk update zone files, and monitor domain expiration. Supports multi-domain management, zone file import/export, and automated DNS backups. Includes both read-only and destructive operations with safety controls.