Business Pulse
One prompt, one page. Pull live data from every connected tool, synthesize it into a single scannable brief, and surface the single most important thing to act on today. Do the work — don't ask the user to help find the data.
Step 1 — Pull data in parallel
Dispatch all connector calls in a single parallel batch — see reference/data_sources.md for the exact tool-to-metric mapping. Do not pull serially; latency turns a 30-second skill into a painful wait.
Connectors to attempt simultaneously:
- QuickBooks — cash balance, MTD revenue, outstanding receivables, overdue invoices
- PayPal / Square — 7-day settlements, sales trend, failed/pending transactions
- HubSpot — pipeline by stage, deals moved/closed, deals gone cold, new leads
- Google Calendar — key meetings, deadlines, events this week and next 7 days
- Gmail — threads flagged urgent, customer complaints, time-sensitive requests
- Slack / Teams — urgent internal signals, threads needing owner attention
- Intercom / Zendesk — open tickets, escalations (if connected)
- Shopify / Square — fulfillment issues (if connected)
If a connector errors or returns no data, record it internally and move on. Never block the pulse on a single bad integration.
QuickBooks fallback: if QBO returns an unexpected state (account not connected, sync pending, empty response), mark the Cash section "n/a — QuickBooks unavailable" and proceed. Do not retry or ask the user to reconnect.
Gmail fallback: Gmail auth is intermittently flaky. If the call errors, skip the Watch List section silently and note "Gmail unavailable" in the appendix — do not surface an error mid-pulse.
Step 2 — Compute metrics
Read reference/thresholds.md for red/yellow/green cutoffs. Compute:
- AR aging — open QuickBooks invoices grouped by days since due date (0–30, 31–60, 61+)
- Pipeline coverage — HubSpot weighted pipeline ÷ monthly revenue target
- Revenue trend — this month's QBO revenue vs. prior month (or 7-day PayPal/Square vs. prior 7 days)
Assign a 🟢/🟡/🔴 status to each section. If a source returned nothing, mark the metric "n/a" and note it in the appendix.
Step 3 — Flag risks proactively
Scan for actionable items. Every risk entry must name a specific record and a next step — "some overdue invoices" is useless; "$3,400 from Acme Corp, 47 days overdue, no response since Mar 12" is actionable.
- QuickBooks invoices past due > 30 days — name customer, amount, days overdue
- HubSpot deals with no activity in 7+ days, or close date in past but still open
- Gmail threads marked urgent or containing "escalation," "complaint," "cancel," "refund"
- Failed or pending PayPal/Square transactions > $500
Step 4 — Compose the output
Use the exact template in reference/output_template.md. Include only sections where real data exists — omit headers for connectors that weren't available. Adapt depth to context: a casual "how are we doing" gets a fuller report; "quick snapshot before a call" gets a tighter one.
Cross-connector synthesis is where this skill earns its keep. If a Slack message connects to a stalled HubSpot deal, surface that link in the #1 Priority section. Synthesis is what makes the pulse more useful than checking each tool separately.
Writing rules:
- Numbers lead, words follow. Never write "revenue is healthy" — write "$43k this month, ▲ 8% MoM" and let the owner judge.
- Every number carries a delta vs. the prior period where available. Absolute snapshots (cash balance) still show WoW delta.
- Names and dollars, not adjectives. "$4,200 from Acme, 23 days overdue" beats "some concerning receivables."
- No filler. If a section has nothing worth reporting, write "No material changes" and move on.
Step 5 — Export and share (once)
After presenting the pulse, offer once:
- "Want me to save this as a file?" (use Files connector if available)
- "Should I post this to your Slack?" (only if Slack is connected and the user confirms — Slack write requires explicit approval)
If they say yes, do it. If they say no or don't respond, move on — don't ask again.
Scope variants
The owner may ask for a narrower cut:
- "Just cash" / "financial check" → only Cash & Finance + AR-related risks
- "Pipeline only" / "deals check" → only Pipeline section + stalled-deal risks
- "Watch list" / "anything urgent" → only Watch List + all risks, no metric sections
- "Quick snapshot before a call" → TL;DR + #1 Priority only, no full sections
What not to do
- Do not ask permission before pulling data. If the skill was invoked, run it. Asking "should I check QuickBooks?" defeats the whole point.
- Do not invent or estimate numbers. If a source returned nothing, say "n/a" explicitly. Never fill a gap with guesswork.
- Do not skip the delta. A number without a comparison is a missed insight. If there's no prior-period baseline, say "(no prior baseline)" rather than omitting the field.
- Do not surface connector errors mid-pulse. Log them to the appendix. The pulse leads with what was delivered.
Reference files
reference/data_sources.md — exact connector tool → metric mapping with fallbacks
reference/thresholds.md — 🟢/🟡/🔴 cutoffs, tunable per owner
reference/output_template.md — exact markdown structure; do not deviate
reference/gotchas.md — known failure modes (QB states, Gmail auth, Slack write)
1---
2name: business-pulse
3description: >
4 Produces a one-page cross-functional business snapshot for SMB owners —
5 cash position (QuickBooks), sales trend (PayPal/Square), pipeline movement
6 (HubSpot), this week's commitments (Calendar), urgent watch-list items
7 (Gmail/Slack), and the single most important thing needing attention today.
8 Proactively tries every available connector and gracefully scopes to
9 whatever is connected — one connector gives a partial pulse; the full stack
10 gives the full picture. Trigger when the user asks how the business is
11 doing, wants a snapshot, a weekly summary, a Monday brief, or says
12 anything like "what am I missing" or "catch me up on the business."
13---
14
15# Business Pulse
16
17One prompt, one page. Pull live data from every connected tool, synthesize it into a single scannable brief, and surface the single most important thing to act on today. Do the work — don't ask the user to help find the data.
18
19## Step 1 — Pull data in parallel
20
21**Dispatch all connector calls in a single parallel batch** — see `reference/data_sources.md` for the exact tool-to-metric mapping. Do not pull serially; latency turns a 30-second skill into a painful wait.
22
23Connectors to attempt simultaneously:
24
25- **QuickBooks** — cash balance, MTD revenue, outstanding receivables, overdue invoices
26- **PayPal / Square** — 7-day settlements, sales trend, failed/pending transactions
27- **HubSpot** — pipeline by stage, deals moved/closed, deals gone cold, new leads
28- **Google Calendar** — key meetings, deadlines, events this week and next 7 days
29- **Gmail** — threads flagged urgent, customer complaints, time-sensitive requests
30- **Slack / Teams** — urgent internal signals, threads needing owner attention
31- **Intercom / Zendesk** — open tickets, escalations (if connected)
32- **Shopify / Square** — fulfillment issues (if connected)
33
34If a connector errors or returns no data, record it internally and move on. Never block the pulse on a single bad integration.
35
36**QuickBooks fallback**: if QBO returns an unexpected state (account not connected, sync pending, empty response), mark the Cash section "n/a — QuickBooks unavailable" and proceed. Do not retry or ask the user to reconnect.
37
38**Gmail fallback**: Gmail auth is intermittently flaky. If the call errors, skip the Watch List section silently and note "Gmail unavailable" in the appendix — do not surface an error mid-pulse.
39
40## Step 2 — Compute metrics
41
42Read `reference/thresholds.md` for red/yellow/green cutoffs. Compute:
43
44- **AR aging** — open QuickBooks invoices grouped by days since due date (0–30, 31–60, 61+)
45- **Pipeline coverage** — HubSpot weighted pipeline ÷ monthly revenue target
46- **Revenue trend** — this month's QBO revenue vs. prior month (or 7-day PayPal/Square vs. prior 7 days)
47
48Assign a 🟢/🟡/🔴 status to each section. If a source returned nothing, mark the metric "n/a" and note it in the appendix.
49
50## Step 3 — Flag risks proactively
51
52Scan for actionable items. Every risk entry must name a specific record and a next step — "some overdue invoices" is useless; "$3,400 from Acme Corp, 47 days overdue, no response since Mar 12" is actionable.
53
54- QuickBooks invoices past due > 30 days — name customer, amount, days overdue
55- HubSpot deals with no activity in 7+ days, or close date in past but still open
56- Gmail threads marked urgent or containing "escalation," "complaint," "cancel," "refund"
57- Failed or pending PayPal/Square transactions > $500
58
59## Step 4 — Compose the output
60
61Use the exact template in `reference/output_template.md`. Include only sections where real data exists — omit headers for connectors that weren't available. Adapt depth to context: a casual "how are we doing" gets a fuller report; "quick snapshot before a call" gets a tighter one.
62
63Cross-connector synthesis is where this skill earns its keep. If a Slack message connects to a stalled HubSpot deal, surface that link in the #1 Priority section. Synthesis is what makes the pulse more useful than checking each tool separately.
64
65Writing rules:
66- Numbers lead, words follow. Never write "revenue is healthy" — write "$43k this month, ▲ 8% MoM" and let the owner judge.
67- Every number carries a delta vs. the prior period where available. Absolute snapshots (cash balance) still show WoW delta.
68- Names and dollars, not adjectives. "$4,200 from Acme, 23 days overdue" beats "some concerning receivables."
69- No filler. If a section has nothing worth reporting, write "No material changes" and move on.
70
71## Step 5 — Export and share (once)
72
73After presenting the pulse, offer once:
74- "Want me to save this as a file?" (use Files connector if available)
75- "Should I post this to your Slack?" (only if Slack is connected and the user confirms — Slack write requires explicit approval)
76
77If they say yes, do it. If they say no or don't respond, move on — don't ask again.
78
79## Scope variants
80
81The owner may ask for a narrower cut:
82
83- **"Just cash" / "financial check"** → only Cash & Finance + AR-related risks
84- **"Pipeline only" / "deals check"** → only Pipeline section + stalled-deal risks
85- **"Watch list" / "anything urgent"** → only Watch List + all risks, no metric sections
86- **"Quick snapshot before a call"** → TL;DR + #1 Priority only, no full sections
87
88## What not to do
89
90- **Do not ask permission before pulling data.** If the skill was invoked, run it. Asking "should I check QuickBooks?" defeats the whole point.
91- **Do not invent or estimate numbers.** If a source returned nothing, say "n/a" explicitly. Never fill a gap with guesswork.
92- **Do not skip the delta.** A number without a comparison is a missed insight. If there's no prior-period baseline, say "(no prior baseline)" rather than omitting the field.
93- **Do not surface connector errors mid-pulse.** Log them to the appendix. The pulse leads with what was delivered.
94
95## Reference files
96
97- `reference/data_sources.md` — exact connector tool → metric mapping with fallbacks
98- `reference/thresholds.md` — 🟢/🟡/🔴 cutoffs, tunable per owner
99- `reference/output_template.md` — exact markdown structure; do not deviate
100- `reference/gotchas.md` — known failure modes (QB states, Gmail auth, Slack write)