Skill Tracer
Skills › Knowledge Work Plugins › crm-autopilot › gotchas.md

gotchas.md

110 lines · small-business/skills/crm-autopilot/reference/gotchas.md at 2574e29

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Gotchas
2
3Edge cases where the `crm-autopilot` skill is most likely to produce bad CRM data. Each entry uses the Good / Bad pattern.
4
5---
6

Gotchas

Edge cases where the crm-autopilot skill is most likely to produce bad CRM data. Each entry uses the Good / Bad pattern.


Raw lines 1 to 6
7## Gotcha: Creating a duplicate contact when the email is already in HubSpot under a different case
8
9**Why it matters:** HubSpot dedupes on exact email match. `Sarah.Lin@acme.com` and `sarah.lin@acme.com` are treated as distinct, but an owner who already created one will see a silent duplicate appear. That destroys the owner's trust in the skill.

Gotcha: Creating a duplicate contact when the email is already in HubSpot under a different case

Why it matters: HubSpot dedupes on exact email match. Sarah.Lin@acme.com and sarah.lin@acme.com are treated as distinct, but an owner who already created one will see a silent duplicate appear. That destroys the owner's trust in the skill.

Raw lines 7 to 10
11### ✗ Bad
13> Searched HubSpot for `Sarah.Lin@acme.com` — no match. Creating new contact: Sarah Lin (Sarah.Lin@acme.com).
15New contact is created; owner's existing `sarah.lin@acme.com` contact now has a duplicate.

✗ Bad

Searched HubSpot for Sarah.Lin@acme.com — no match. Creating new contact: Sarah Lin (Sarah.Lin@acme.com).

New contact is created; owner's existing sarah.lin@acme.com contact now has a duplicate.

Raw lines 11 to 16
17### ✓ Good
19> Searched HubSpot for `sarah.lin@acme.com` (case-insensitive) — no match. Creating new contact: Sarah Lin (sarah.lin@acme.com). Announcing before write.
21Always normalize email to lowercase before lookup. Announce the creation so the owner can catch misses.
23---

✓ Good

Searched HubSpot for sarah.lin@acme.com (case-insensitive) — no match. Creating new contact: Sarah Lin (sarah.lin@acme.com). Announcing before write.

Always normalize email to lowercase before lookup. Announce the creation so the owner can catch misses.


Raw lines 17 to 24
25## Gotcha: Writing the full email thread as the activity body
27**Why it matters:** HubSpot activities are signal surfaces for fast scanning, not a transcript archive. A 12-message thread pasted into the activity body is useless; a three-sentence summary of what was agreed is actionable.

Gotcha: Writing the full email thread as the activity body

Why it matters: HubSpot activities are signal surfaces for fast scanning, not a transcript archive. A 12-message thread pasted into the activity body is useless; a three-sentence summary of what was agreed is actionable.

Raw lines 25 to 28
29### ✗ Bad
31> **Activity body:**
32> *From: Sarah Lin — Thu Apr 9…*
33> *Hi! Following up on our call, here are the specs we discussed…*
34> *[1,200 more words]*
36Owner scrolls past it every time.

✗ Bad

Activity body: From: Sarah Lin — Thu Apr 9… Hi! Following up on our call, here are the specs we discussed… [1,200 more words]

Owner scrolls past it every time.

Raw lines 29 to 37
38### ✓ Good
40> **Activity body:** Sarah confirmed scope for Q2 expansion — 50 seats, USD 18K ACV, start date June 1. She'll send the signed SOW by Friday. No open questions.
42Summary names the decisions, the numbers, and the next step.
44---

✓ Good

Activity body: Sarah confirmed scope for Q2 expansion — 50 seats, USD 18K ACV, start date June 1. She'll send the signed SOW by Friday. No open questions.

Summary names the decisions, the numbers, and the next step.


Raw lines 38 to 45
46## Gotcha: Auto-creating a deal when the right one can't be resolved
48**Why it matters:** Duplicate deals are very hard to untangle in HubSpot — they split activity history, confuse reporting, and the owner usually notices weeks later when a forecast looks wrong.

Gotcha: Auto-creating a deal when the right one can't be resolved

Why it matters: Duplicate deals are very hard to untangle in HubSpot — they split activity history, confuse reporting, and the owner usually notices weeks later when a forecast looks wrong.

Raw lines 46 to 49
50### ✗ Bad
52> No open deal found for Sarah Lin at Acme. Creating new deal: "Acme — new opportunity" and logging the call to it.
54Now there are two Acme deals and the owner has no idea which one is real.

✗ Bad

No open deal found for Sarah Lin at Acme. Creating new deal: "Acme — new opportunity" and logging the call to it.

Now there are two Acme deals and the owner has no idea which one is real.

Raw lines 50 to 55
56### ✓ Good
58> No open deal found for Sarah Lin at Acme. Which deal should I log this to? Options: (1) Acme Q2 Expansion (closed-won Feb), (2) Acme Renewal 2027 (open). Or do you want to skip logging for now?
60Ask. Never create a deal on behalf of the owner.
62---

✓ Good

No open deal found for Sarah Lin at Acme. Which deal should I log this to? Options: (1) Acme Q2 Expansion (closed-won Feb), (2) Acme Renewal 2027 (open). Or do you want to skip logging for now?

Ask. Never create a deal on behalf of the owner.


Raw lines 56 to 63
64## Gotcha: Resolving against an empty portal
66**Why it matters:** A brand-new HubSpot portal returns zero contacts and zero deals, and every resolution step then "fails" in a way that reads like a data problem. The skill starts proposing contacts to create and deals to log against, and the owner ends up with a CRM seeded by a logging run instead of by their own setup.

Gotcha: Resolving against an empty portal

Why it matters: A brand-new HubSpot portal returns zero contacts and zero deals, and every resolution step then "fails" in a way that reads like a data problem. The skill starts proposing contacts to create and deals to log against, and the owner ends up with a CRM seeded by a logging run instead of by their own setup.

Raw lines 64 to 67
68### ✗ Bad
70> No contact found for sarah@acme.com. Creating contact. No open deal found — which deal should I log this to? (none listed)
72The portal has nothing in it. There is no deal to pick.

✗ Bad

No contact found for sarah@acme.com. Creating contact. No open deal found — which deal should I log this to? (none listed)

The portal has nothing in it. There is no deal to pick.

Raw lines 68 to 73
74### ✓ Good
76> Your CRM has no contacts or deals yet — it looks brand new. I can keep this call log in the spreadsheet CRM until it is populated (on HubSpot, I can also start its own setup). Which?
78Check the counts first (Step 3). An empty portal is a setup question, not a resolution problem. Do not use `get_user_details`' `onboarded` flag as the test: a portal full of contacts can still report `onboarded: false`. The flag says whether HubSpot's guided setup ran, not whether there is data.
80---

✓ Good

Your CRM has no contacts or deals yet — it looks brand new. I can keep this call log in the spreadsheet CRM until it is populated (on HubSpot, I can also start its own setup). Which?

Check the counts first (Step 3). An empty portal is a setup question, not a resolution problem. Do not use get_user_details' onboarded flag as the test: a portal full of contacts can still report onboarded: false. The flag says whether HubSpot's guided setup ran, not whether there is data.


Raw lines 74 to 81
82## Gotcha: Proposing a deal stage change based on email language
84**Why it matters:** "We're moving forward" in an email doesn't always mean "advance to closed-won." Customers say it when they're moving forward with evaluation, or with a procurement step. Owners have context the skill doesn't. Auto-advancing stage is destructive to the pipeline.

Gotcha: Proposing a deal stage change based on email language

Why it matters: "We're moving forward" in an email doesn't always mean "advance to closed-won." Customers say it when they're moving forward with evaluation, or with a procurement step. Owners have context the skill doesn't. Auto-advancing stage is destructive to the pipeline.

Raw lines 82 to 85
86### ✗ Bad
88> Email from Sarah says "we're moving forward." Proposing `dealstage` → Closed Won. Writing now.

✗ Bad

Email from Sarah says "we're moving forward." Proposing dealstage → Closed Won. Writing now.
Raw lines 86 to 89
90### ✓ Good
92> Flagging: the Apr 18 email from Sarah ("we're moving forward with the Anthropic evaluation") may indicate stage movement. Current stage is "Proposal Sent." Do you want to advance it? I won't change stage without your explicit go-ahead.
94Surface the evidence, hold the write.
96---

✓ Good

Flagging: the Apr 18 email from Sarah ("we're moving forward with the Anthropic evaluation") may indicate stage movement. Current stage is "Proposal Sent." Do you want to advance it? I won't change stage without your explicit go-ahead.

Surface the evidence, hold the write.


Raw lines 90 to 97
98## Gotcha: Overwriting an owner-set next-step during cleanup
100**Why it matters:** The owner may have set a next step that reflects context the skill can't see — a phone call, a Slack thread, a private note. Overwriting it because a recent email suggests something different erases real work.

Gotcha: Overwriting an owner-set next-step during cleanup

Why it matters: The owner may have set a next step that reflects context the skill can't see — a phone call, a Slack thread, a private note. Overwriting it because a recent email suggests something different erases real work.

Raw lines 98 to 101
102### ✗ Bad
104> `hs_next_step` currently says "wait for legal review." Latest email from Sarah says "let's schedule pricing review." Updating `hs_next_step` to "schedule pricing review."

✗ Bad

hs_next_step currently says "wait for legal review." Latest email from Sarah says "let's schedule pricing review." Updating hs_next_step to "schedule pricing review."
Raw lines 102 to 105
106### ✓ Good
108> `hs_next_step` currently reads "wait for legal review" (set by you 3 days ago). The Apr 19 email from Sarah suggests a pricing review is also needed. Propose appending or replacing? Current → Proposed: "wait for legal review" → "wait for legal review; then schedule pricing review." Approve?
110Show the current value, propose the change explicitly, wait for approval.

✓ Good

hs_next_step currently reads "wait for legal review" (set by you 3 days ago). The Apr 19 email from Sarah suggests a pricing review is also needed. Propose appending or replacing? Current → Proposed: "wait for legal review" → "wait for legal review; then schedule pricing review." Approve?

Show the current value, propose the change explicitly, wait for approval.

Raw lines 106 to 110
Involves a person wait for approval :110