@sellable/mcp 0.1.157 → 0.1.159

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -143,7 +143,12 @@ will use, what the first message says, and what happens if the user approves.
143
143
  Keep implementation details available, but move them below the customer-facing
144
144
  summary.
145
145
 
146
- 1. **brief** — `brief.md` thesis, product, ICP, offer
146
+ 1. **brief** — `brief.md` thesis, product, ICP, offer. Label major strategic
147
+ choices with compact provenance tags when known: `[from you]`,
148
+ `[from LinkedIn]`, `[from website]`, `[from case study]`, or
149
+ `[Sellable recommendation]`. Include this correction affordance before
150
+ approval: "This is based on what I found. If your site or LinkedIn is stale,
151
+ tell me what to update before I build the lead list." Ask "Do you agree with this researched campaign direction?"
147
152
  2. **lead sample** — first 5-10 rows from `lead-sample.json` rendered as
148
153
  `Name / Title / Company` lines, plus the `lead-review.md` pass-rate
149
154
  and supplied-source framing when `lead-source-intake.json` exists:
@@ -169,6 +174,12 @@ review in the pre-mint approval packet. Those are configured and reviewed after
169
174
  the campaign is created in the autonomous tail. The pre-mint packet approves
170
175
  only the brief, lead source, lead filter/rubric, and first message direction.
171
176
 
177
+ In the first strategic brief before leads exist, do not show quoted outreach
178
+ copy or speculative first-message examples. If a message-shape hint is useful,
179
+ keep it as non-final bullets and label it: "This is not the message yet; I will
180
+ write real examples after we find and filter leads." Real rendered message proof
181
+ belongs in message review after leads and sample rows exist.
182
+
172
183
  Do not include or summarize post-accept DMs, connection-accepted follow-ups,
173
184
  day-2 / day-7 follow-ups, second touches, reply branches, or any other
174
185
  sequence-shaped copy in `message-review.md` or `approval-packet.md`. If
@@ -12,6 +12,32 @@ production rubrics, and protect the user from replies they would not want to
12
12
  take. It should not re-run sourcing, create a second source plan, or build a
13
13
  large scoring framework.
14
14
 
15
+ ## Source Scouting Framing
16
+
17
+ Use "source scouting" for the pre-import source decision. Do not say "testing
18
+ sources" in first-time-facing copy. Explain the decision the user is approving:
19
+ which source is being tried, why it was recommended from the research, the
20
+ precision/scale tradeoff, what evidence quality it should prove, and what safe
21
+ bounded pilot volume looks like.
22
+
23
+ Source-scouting approval authorizes scouting/search only. It does not approve
24
+ lead import, filtering, messaging, sequence, sender selection, or sending.
25
+ Keep detailed LinkedIn account-safety reassurance for the sender/settings step.
26
+
27
+ ## Filter Approval Framing
28
+
29
+ Before asking the user to approve saved filters, explain the value in plain
30
+ language:
31
+
32
+ - These rules prevent wasted sends before I score/import the list.
33
+ - They protect limited outbound capacity by blocking bad-fit rows early.
34
+ - Recommended because of the researched ICP, source sample, and repeated
35
+ false-positive patterns.
36
+ - Show one pass example and one block example when available.
37
+
38
+ Make the approval object explicit: the user is approving filter rules, not
39
+ message drafts, not sender connection, and not campaign launch.
40
+
15
41
  ## Inputs
16
42
 
17
43
  Use only live campaign inputs supplied by the parent thread or scoped MCP tools:
@@ -35,6 +35,9 @@ order (all before waiting for the user):
35
35
  4. Explain sender setup and Slack in normal customer language: Sellable needs a
36
36
  connected LinkedIn sender for launch, and Slack reply review matters because
37
37
  replies and approvals need a channel the team will monitor.
38
+ Before asking the user to connect or select a sender, include this sender
39
+ safety contract: lead research and filtering already happened outside the
40
+ user's LinkedIn account; the connected sender is not used for source scouting, scraping, or filtering; this account is only used for approved sending after final launch; final launch approval still happens at the Start step.
38
41
  5. If no connected sender exists, surface the campaign Settings link
39
42
  `/campaign-builder/{campaignId}/settings?mode=claude`, tell the user to
40
43
  connect a sender there, and STOP. Do not attach sequence and do not start.
@@ -58,6 +61,12 @@ currentStep: "sequence" })` to attach the sender via the v3 senders route and
58
61
  "what to do next" sentence.
59
62
  11. Ask the final launch greenlight with the structured question function:
60
63
  Start campaign, Review campaign first, or Pause here.
64
+ Before the Start choice, summarize launch confidence separately from quality
65
+ confidence: quality confidence means sample messages, prospect angle,
66
+ company/person match, token/person variables, and reputation-burn risk were
67
+ checked; launch confidence means sender, sequence, and final Start are ready.
68
+ Explain what happens after Start: approved messages begin sending according to the sequence, replies and meetings follow the connected settings, the user can monitor and pause, and no hidden extra approval disappears after
69
+ clicking Start.
61
70
  12. STOP unless the user explicitly chooses Start campaign. Do not call
62
71
  `start_campaign` from Step 16 itself.
63
72
 
@@ -68,7 +77,12 @@ The final handoff must answer five customer questions in plain language:
68
77
  sequence after a sender is attached)
69
78
  - whether the next UI step is Settings, Sequence, or Send
70
79
  - why the selected LinkedIn sender and Slack reply review matter before launch
80
+ - that the connected LinkedIn account is not used for lead research, source
81
+ scouting, scraping, or filtering
82
+ - that this account is only used for approved sending after final launch
71
83
  - what clicking Start does (approves/starts the campaign send path)
84
+ - the difference between quality confidence and launch confidence
85
+ - what happens after Start: approved messages begin sending according to the sequence, replies and meetings follow connected settings, the campaign can be monitored and paused, and no hidden approval disappears
72
86
  - how to revise (reply with what to change, or use the campaign UI)
73
87
  - current launch status and what the final Start action does
74
88
 
@@ -188,6 +202,7 @@ true:
188
202
  - Sender is missing or disabled.
189
203
  - `attach_recommended_sequence` never succeeded (no sequence bound to the
190
204
  campaign).
205
+ - No approved generated message exists in the campaign table.
191
206
 
192
207
  A refusal is NOT an escalation in the ladder sense — it's a pre-check
193
208
  failure. Surface the specific reason so the user can fix it and say
@@ -13,6 +13,32 @@ judge this campaign?" Message generation starts earlier: the first row that
13
13
  passes filters is enough to begin observing or queueing Generate Message for
14
14
  that passing row.
15
15
 
16
+ ## Sample Count Summary
17
+
18
+ When showing sample or message-review status, include concrete count math:
19
+
20
+ - `{checked} leads checked`
21
+ - `{passed} passed and have draft messages`
22
+ - `{blocked} blocked before sending`
23
+ - `full list remains paused until approval`
24
+
25
+ Use dynamic counts from campaign/table state when available. If counts are not
26
+ available yet, use the generic pattern: "I am checking the bounded sample now;
27
+ passed rows get draft messages, blocked rows stop before sending, and the full
28
+ list remains paused until approval."
29
+
30
+ When the UI/chat action would otherwise read like "Approve 11", make it precise:
31
+ approve these 11 draft rows for the next review step. This does not approve the
32
+ full campaign launch and does not approve the user's LinkedIn account for
33
+ sending yet; approval here does not approve the full campaign launch.
34
+
35
+ ## Message QA Receipt
36
+
37
+ Before asking for sample/message approval, include this compact receipt:
38
+ "Before you approve, I checked: tokens resolved, company/person match, proof claim, prospect angle, language/tone when known, and obvious bad fits."
39
+
40
+ Also include the reputation guardrail: weak personalization can burn the sender's reputation, so this approval is only for the reviewed sample/message direction. The full list remains paused until approval, and final launch happens later. Use the plain heuristic: "Would I take this call?"
41
+
16
42
  If the answer is yes, proceed to Step 15 messaging for the initial campaign rows. If
17
43
  the answer is no, diagnose whether the brief is wrong or the list is wrong,
18
44
  and either revise brief autonomously OR escalate to the user — never
@@ -34,15 +34,18 @@ Example skeleton:
34
34
 
35
35
  ```text
36
36
  I created the campaign shell with the brief already in it.
37
- You can watch the lead source, filters, and messages fill in from here.
37
+ I am creating the campaign through this chat. Open this link if you want to
38
+ watch the work being done and audit what changes.
38
39
 
39
- I’ll pause at the next approval gate before sourcing.
40
+ You can still ask me to change anything here. I’ll pause at the next approval
41
+ gate before sourcing.
40
42
 
41
43
  Watch link: [Open campaign]({watchUrl})
42
44
 
43
- Click that link to watch the campaign. If it opens in an in-app browser and asks
44
- you to sign in, open the same link in your regular browser so you can watch
45
- real-time updates from your signed-in session.
45
+ Click that link to watch the campaign. The app is for inspection; this chat is
46
+ where you direct the campaign. If it opens in an in-app browser and asks you to
47
+ sign in, open the same link in your regular browser so you can watch real-time
48
+ updates from your signed-in session.
46
49
 
47
50
  Command-Enter or click that link to watch it in Sellable.
48
51
 
@@ -65,6 +68,8 @@ clear:
65
68
 
66
69
  - the campaign shell exists now
67
70
  - the brief is already visible in the campaign
71
+ - chat is where the user directs changes
72
+ - the app link is for watching and auditing live work
68
73
  - import, sequence, and start are still blocked
69
74
 
70
75
  ## Browser Choice
@@ -425,9 +425,11 @@ recommendation, estimate source capacity from real sample math:
425
425
 
426
426
  Then select the smallest right-content post set that plausibly hits the source
427
427
  target. Do not scrape every promoted sample post by default; promoted sampling
428
- state and final scrape plan are separate. If the math says the warm post lane
429
- only supports a smaller first batch, say that and name the Sales Nav or Prospeo
430
- scale fallback rather than padding the selection with noisy posts. If the
428
+ state and final scrape plan are separate. If one 1,200+ engager post clears a
429
+ ~1,000-engager target, recommend scraping that one post rather than the 3-post
430
+ sample set. If the math says the warm post lane only supports a smaller first
431
+ batch, say that and name the Sales Nav or Prospeo scale fallback rather than
432
+ padding the selection with noisy posts. If the
431
433
  sampled/projected headline-fit rate is below 10%, do not call
432
434
  `import_leads`; move to Sales Nav recent activity.
433
435