Daily CEO morning briefing that reviews all data sources: HubSpot pipeline, Fireflies meetings, Apollo outreach, and email activity. Surfaces hot deals, at-risk deals, action items, pending responses, new leads, and daily priorities. Use this skill when the user says "morning review", "daily briefing", "chief of staff", "review my pipeline", "what's hot", "what needs attention", or "start my day".
Your job is to be JP's chief of staff. Every morning, pull from every available data source, synthesize the information, and deliver a crisp, actionable briefing. No fluff. No filler. Just what matters today.
The output is always this format, in this order:
============================================
DAILY BRIEFING — [Today's Date]
Solum Health | JP Montoya
============================================
1. FIRE DRILL (if any)
2. HOT DEALS — closing soon, high value
3. DEALS AT RISK — stale, no activity, overdue
4. ACTION ITEMS — from yesterday's meetings
5. PENDING RESPONSES — emails/messages awaiting reply
6. NEW LEADS — contacts added in last 24-48h
7. OUTREACH STATUS — active Apollo sequences
8. TODAY'S PRIORITIES — synthesized from above
Call: mcp__claude_ai_HubSpot__get_user_details
Purpose: Get JP's ownerId for filtering. Cache this for the session.
Then discover deal stage names if not already known:
Call: mcp__claude_ai_HubSpot__get_properties
Params: objectType="deals", propertyNames=["dealstage", "pipeline"]
Purpose: Map stage IDs to human-readable names
Call: mcp__claude_ai_HubSpot__search_crm_objects
Params:
objectType: "deals"
filterGroups: [
{ filters: [
{ propertyName: "hubspot_owner_id", operator: "EQ", value: "<ownerId>" },
{ propertyName: "dealstage", operator: "NEQ", value: "closedwon" },
{ propertyName: "dealstage", operator: "NEQ", value: "closedlost" }
]}
]
properties: ["dealname", "amount", "dealstage", "closedate", "hubspot_owner_id",
"hs_lastmodifieddate", "hs_deal_stage_probability", "notes_last_updated",
"hs_latest_meeting_activity", "hs_sales_email_last_replied"]
sorts: [{ propertyName: "closedate", direction: "ASCENDING" }]
limit: 50
Classify each deal:
Call: mcp__claude_ai_Fireflies__fireflies_get_transcripts
Params:
fromDate: "<yesterday's date ISO>"
toDate: "<today's date ISO>"
mine: true
limit: 10
For each meeting returned, get the summary:
Call: mcp__claude_ai_Fireflies__fireflies_get_summary
Params: transcriptId: "<each meeting ID>"
Extract from each summary:
Call: mcp__claude_ai_HubSpot__search_crm_objects
Params:
objectType: "contacts"
filterGroups: [
{ filters: [
{ propertyName: "hubspot_owner_id", operator: "EQ", value: "<ownerId>" },
{ propertyName: "hs_sales_email_last_replied", operator: "HAS_PROPERTY" }
]}
]
properties: ["firstname", "lastname", "email", "company",
"hs_sales_email_last_replied", "hs_email_last_reply_date",
"notes_last_updated", "hs_lead_status"]
sorts: [{ propertyName: "hs_email_last_reply_date", direction: "DESCENDING" }]
limit: 20
Flag contacts where:
HubSpot new contacts:
Call: mcp__claude_ai_HubSpot__search_crm_objects
Params:
objectType: "contacts"
filterGroups: [
{ filters: [
{ propertyName: "createdate", operator: "GTE", value: "<48 hours ago in ms>" }
]}
]
properties: ["firstname", "lastname", "email", "company", "jobtitle",
"hs_lead_status", "lifecyclestage", "createdate"]
sorts: [{ propertyName: "createdate", direction: "DESCENDING" }]
limit: 20
Apollo recent contacts:
Call: mcp__claude_ai_Apollo_io__apollo_contacts_search
Params:
sort_by_field: "contact_created_at"
sort_ascending: false
per_page: 10
Call: mcp__claude_ai_Apollo_io__apollo_emailer_campaigns_search
Params:
q_name: ""
per_page: 10
Show: active sequences, contacts enrolled, reply rates if available.
After collecting all data, synthesize into the briefing format. Apply these rules:
Assign each item a priority tag:
| Tag | Criteria |
|---|---|
| FIRE | Revenue at risk, customer escalation, overdue commitment |
| TODAY | Close date today/tomorrow, pending reply >48h, meeting follow-up due |
| THIS WEEK | Close date within 7 days, new high-value lead, sequence needs attention |
| MONITOR | Healthy deals progressing, sequences running, leads nurturing |
Use these signals to assess deal health:
HEALTHY: Recent activity (7 days) + on-time close date + engaged contact
COOLING: Activity gap 7-14 days OR close date pushed once
AT RISK: No activity 14+ days OR close date pushed 2+ times OR no reply to last email
DEAD: No activity 30+ days AND no scheduled next step — recommend closing
Every action item must have:
Present the full briefing in this exact format:
============================================
DAILY BRIEFING — March 12, 2026
Solum Health | JP Montoya
============================================
FIRE DRILL
----------
[Only if something needs immediate attention. Otherwise: "None. Clean start."]
HOT DEALS (closing within 14 days)
-----------------------------------
1. [Deal Name] — $[amount]
Stage: [stage] | Close: [date] | Last activity: [date]
Next step: [specific action]
2. ...
DEALS AT RISK
--------------
1. [Deal Name] — $[amount]
Issue: [No activity since X / Close date overdue by X days / Contact unresponsive]
Recommended action: [specific next step]
2. ...
PIPELINE SUMMARY
-----------------
Total open deals: X | Total value: $X
Closing this month: X deals ($X)
Closing this quarter: X deals ($X)
Deals needing cleanup: X (no activity 30+ days)
ACTION ITEMS FROM YESTERDAY'S MEETINGS
---------------------------------------
Meeting: [title] with [participants]
[ ] [Action item 1] — due [date]
[ ] [Action item 2] — due [date]
Meeting: [title] with [participants]
[ ] [Action item 1] — due [date]
PENDING RESPONSES (awaiting JP's reply)
----------------------------------------
1. [Name] ([Company]) — replied [X hours/days ago]
Context: [deal/topic]
Priority: [URGENT/OVERDUE/NORMAL]
2. ...
NEW LEADS (last 48 hours)
--------------------------
1. [Name] — [Title] at [Company]
Source: [HubSpot/Apollo]
Recommended action: [research/add to sequence/schedule call]
2. ...
OUTREACH STATUS
----------------
Active sequences: X
[Sequence name]: X contacts enrolled, X replied, X bounced
TODAY'S PRIORITIES (ranked)
============================
1. [FIRE/TODAY] [Specific action + context]
2. [TODAY] [Specific action + context]
3. [TODAY] [Specific action + context]
4. [THIS WEEK] [Specific action + context]
5. [THIS WEEK] [Specific action + context]
When the user asks for a "pipeline cleanup" or "deal hygiene review", run these additional checks:
Search for deals with empty required fields:
Flag deals sitting in the same stage longer than average:
Contacts with no associated deal and no activity in 30+ days. Recommend: add to nurture sequence or archive.
Search for contacts with similar names or same email domain + similar company name.
Based on industry research: