gotchas.md
103 lines · small-business/skills/business-pulse/reference/gotchas.md at 2574e29
Most marks come from matching words in the file, so treat them as pointers.
Gotcha: QuickBooks returns unexpected state
Why it matters: QuickBooks can return empty results, a sync-in-progress state, or an auth error without throwing a hard exception. Treating silence as "no data" causes the pulse to skip Cash entirely without telling the owner — they assume their business has no QuickBooks data.
Raw lines 7 to 10✗ Bad
Claude: [QuickBooks returns empty response]
→ skips Cash section silently
→ pulse presents no cash data; owner assumes QB isn't connectedThe owner spends 10 minutes reconnecting QuickBooks before realizing it was always connected — just in a transient state.
Raw lines 11 to 20✓ Good
Claude: [QuickBooks returns empty response or error]
→ Cash section header present with: "n/a — QuickBooks unavailable (sync error or auth required)"
→ "Sources unavailable: QuickBooks — returned empty response" in appendixThe owner sees the gap explicitly and can decide whether to reconnect or proceed with a partial pulse.
Raw lines 21 to 32
Gotcha: Gmail auth failure mid-pulse
Why it matters: Gmail auth is intermittently flaky. Surfacing a raw auth error in the middle of the pulse looks broken and breaks the owner's trust in the skill.
Raw lines 33 to 36✗ Bad
Claude: [Gmail auth error mid-composition]
→ "Error: Gmail authentication failed. Please re-authenticate."
→ pulse output stops or shows raw error in Watch List sectionThe owner sees a broken tool, not a useful briefing.
Raw lines 37 to 46✓ Good
Claude: [Gmail auth error]
→ continues pulse without Watch List section
→ appendix: "Gmail — auth error; Watch List unavailable this run"
→ all other sections unaffectedThe pulse still delivers value. The owner is informed, not alarmed.
Raw lines 47 to 59
Gotcha: Asking permission before pulling data
Why it matters: The skill's core value is doing the work without prompting. An owner who invoked the pulse already implicitly approved the data pull. Asking "should I check QuickBooks?" or "can I read your emails?" defeats the purpose and erodes trust in the skill as an autonomous assistant.
Raw lines 60 to 63✗ Bad
Owner: "catch me up on the business"
Claude: "Should I check QuickBooks for your cash balance? And is it okay to look at your HubSpot pipeline?"Three more round trips before anything useful is delivered.
Raw lines 64 to 72✓ Good
Owner: "catch me up on the business"
Claude: [immediately dispatches all parallel tool calls]
→ presents pulse in one responseRaw lines 73 to 82
Gotcha: Slack write requires explicit confirmation
Why it matters: Slack write posts to channels other people can see. Auto-posting without confirmation could embarrass the owner or spam a team.
Raw lines 83 to 86✗ Bad
Claude: [at end of pulse]
"I've posted this to #general."Owner never asked for a Slack post; now the whole team has the financial data.
Raw lines 87 to 95✓ Good
Claude: [at end of pulse]
"Want me to post this to Slack? If so, which channel?"Slack write only happens with a specific "yes + channel name" from the owner. Never assume.
Raw lines 96 to 103