@sellable/mcp 0.1.122 → 0.1.123

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.
@@ -26,26 +26,36 @@ Use the inherited Sellable MCP tools when available:
26
26
  Process:
27
27
 
28
28
  1. Read the campaign brief, kickoff doc, or lane prompt supplied by the parent.
29
- 2. Search 3-5 keyword/topic lanes, favoring fresh posts from the last 7-14 days.
29
+ 2. Generate 3-5 intersection keyword/topic lanes, favoring fresh posts from the
30
+ last 7-14 days. Each lane should combine the campaign anchor with the buyer
31
+ pain, use case, or ICP role so fit is high before sampling. For example, for
32
+ a Claude + GTM/outbound campaign, prefer `Claude outbound`, `Claude Code
33
+ LinkedIn outreach`, `AI SDR Claude`, `GTM automation Claude`, and `founder-led
34
+ sales Claude`; do not treat broad anchor-only lanes like `Claude Code`, `MCP`,
35
+ `AI agents`, or `agentic coding` as selectable unless they also include the
36
+ GTM/outbound wedge or the narrower lanes fail.
30
37
  3. Inspect finalist posts by content type before final selection. Prefer posts
31
38
  where the topic matches the campaign wedge, not generic high-engagement news.
32
- 4. Promote the first narrow sample set when campaign-attached. If a
39
+ 4. If Round 1 produced broad anchor-only inventory, retarget immediately around
40
+ the wedge before sampling. Do not promote or sample broad posts when there are
41
+ narrower posts about the actual campaign pain/use case.
42
+ 5. Promote the first narrow sample set when campaign-attached. If a
33
43
  `campaignOfferId` was supplied, call `select_promising_posts({
34
44
  campaignOfferId, selectionMode: "replace", selections, headlineICPCriteria,
35
45
  currentStep: "signal-discovery" })` before sampling so the watched Signal
36
46
  Discovery table shows the exact posts being tested.
37
- 5. Fetch or sample engagers for promoted posts and score rough ICP fit from
47
+ 6. Fetch or sample engagers for promoted posts and score rough ICP fit from
38
48
  visible headline/display-name cues only. Do not enrich people during
39
49
  viability estimation.
40
- 6. Compute capacity before recommending the source: target good-fit leads
50
+ 7. Compute capacity before recommending the source: target good-fit leads
41
51
  (default 500 unless the parent supplies a target), reachable engagers,
42
52
  sampled ICP-fit rate as `n/N` plus an easy percentage/range, expected usable
43
53
  leads per right-content post after dedupe/cleanup, and posts needed to hit
44
54
  the target.
45
- 7. Select/promote enough right-content posts to plausibly hit the target. If the
55
+ 8. Select/promote enough right-content posts to plausibly hit the target. If the
46
56
  warm Signals pool is useful but too small, return the expected warm range and
47
57
  recommend Sales Nav/Prospeo for scale instead of padding with noisy posts.
48
- 8. Return false positives and dead ends explicitly.
58
+ 9. Return false positives and dead ends explicitly.
49
59
 
50
60
  Return a concise structured result with:
51
61
 
@@ -67,6 +77,10 @@ Evidence standards:
67
77
 
68
78
  - Do not trust raw post volume without inspecting finalist post quality.
69
79
  - Prefer sample-based pass rates over intuition.
80
+ - Prefer narrow intersection topics over broad audience topics. A post about
81
+ the anchor technology alone is not enough; the post should also express the
82
+ GTM/outbound/buyer pain, workflow, or role context that makes the campaign
83
+ relevant.
70
84
  - Do not make the user infer capacity. Say, plainly, how many eligible posts
71
85
  exist, what percent of sampled engagers looked in-ICP, how many posts are
72
86
  needed for 500+ good-fit leads, and which posts you would use.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.122",
3
+ "version": "0.1.123",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -816,8 +816,9 @@ Required behavior:
816
816
  then stop on the first viable source unless the user asked to compare.
817
817
  1. Start with LinkedIn Engagement / active LinkedIn posts (internal provider:
818
818
  Signals / `signal-discovery`) because recent engagement gives the strongest
819
- message context and expected reply-rate upside. Search relevant keyword
820
- lanes, review finalist posts, promote a narrow sample set with
819
+ message context and expected reply-rate upside. Search intersection keyword
820
+ lanes that combine the campaign anchor with the buyer pain/use case/ICP
821
+ role, review finalist posts, promote a narrow sample set with
821
822
  `select_promising_posts` before fetching engagers when a campaign shell
822
823
  exists, fetch top-post engagers, estimate ICP-fit rate, compute posts
823
824
  needed for the target good-fit lead count, and only then recommend the
@@ -868,6 +869,13 @@ Required behavior:
868
869
  keyword lanes; it does not mean 492 prospects. The source decision must name
869
870
  the actual posts we would use, show why they won, and estimate usable engagers
870
871
  from those posts after headline/sample filtering
872
+ - for Signals-first campaigns, keyword lanes must be intersection-first. If the
873
+ campaign anchor is `Claude`, `MCP`, `AI agents`, or another broad technology,
874
+ do not make broad anchor-only lanes the main test. Combine the anchor with the
875
+ specific wedge and buyer pain, such as outbound, GTM automation, LinkedIn
876
+ outreach, AI SDR skepticism, founder-led sales, RevOps, or the ICP role. Treat
877
+ broad anchor-only lanes as fallback inventory only, and retarget before
878
+ sampling if the first pass is broad.
871
879
  - Signals viability is based on estimated ICP-fit reachable engagers, not raw
872
880
  post count and not whether it beats Sales Nav scale. If 5-8 selected posts can
873
881
  plausibly produce ~150+ ICP-fit warm prospects before final filtering, keep
@@ -568,7 +568,7 @@
568
568
  },
569
569
  "when": "after_source_selection_checkpoint_before_first_source_attempt",
570
570
  "requiresPriorVisibleStep": "pick-provider",
571
- "rule": "Choose the first visible source lane from explicit source direction when present, otherwise default to Signal Discovery. Only run this after the Pick Provider source-selection checkpoint has been made visible and explained in chat/watchNarration. Send watchNarration with stage find-leads that says why this lane is being tried now, what quick sample or filter gate will pass/fail it, and why that helps this campaign. For Signal Discovery sampling, make it clear this is a viability path before lead import: promote/select the first narrow sample posts with select_promising_posts before fetch_post_engagers so the watched table shows the exact posts being sampled; the guide copy should say Codex is pulling sample engagers from these posts to confirm the ICP is actually engaging and estimate whether enough right-content posts exist for the target lead count. Before final source approval, compute eligible posts, sampled ICP-fit rate, target good-fit lead count, posts needed, selected posts, expected good-fit range, and scale fallback. If the lane fails, update currentStep and watchNarration before moving to Sales Nav recent activity, normal Sales Nav, or Prospeo."
571
+ "rule": "Choose the first visible source lane from explicit source direction when present, otherwise default to Signal Discovery. Only run this after the Pick Provider source-selection checkpoint has been made visible and explained in chat/watchNarration. Send watchNarration with stage find-leads that says why this lane is being tried now, what quick sample or filter gate will pass/fail it, and why that helps this campaign. For Signal Discovery sampling, make it clear this is a viability path before lead import: generate intersection-first keyword lanes that combine the campaign anchor with the buyer pain/use case/ICP role, not broad anchor-only lanes. For Claude/GTM campaigns, prefer lanes like Claude outbound, Claude Code LinkedIn outreach, AI SDR Claude, GTM automation Claude, and founder-led sales Claude over generic Claude Code, MCP, AI agents, or agentic coding. If the first pass is broad, retarget around the campaign wedge before selecting posts. Promote/select the first narrow sample posts with select_promising_posts before fetch_post_engagers so the watched table shows the exact posts being sampled; the guide copy should say Codex is pulling sample engagers from these posts to confirm the ICP is actually engaging and estimate whether enough right-content posts exist for the target lead count. Before final source approval, compute eligible posts, sampled ICP-fit rate, target good-fit lead count, posts needed, selected posts, expected good-fit range, and scale fallback. If the lane fails, update currentStep and watchNarration before moving to Sales Nav recent activity, normal Sales Nav, or Prospeo."
572
572
  },
573
573
  {
574
574
  "action": "run_first_campaign_attached_source_search",
@@ -617,7 +617,7 @@
617
617
  "action": "run_subskill",
618
618
  "target": "find-leads",
619
619
  "mode": "campaign-attached-required",
620
- "sourceScoutRule": "Shell-first flow requires the CampaignOffer campaignId from durable state. Pass campaignId as campaignOfferId into every provider prompt/search that can persist source state (`get_provider_prompt({ provider, campaignOfferId, confirmed: true })`, `search_signals`, `search_sales_nav`, `search_prospeo`) and include currentStep for tools that accept it so the user can watch the selected source inside the campaign. Use the default sequential source viability funnel when the user did not specify a source: Signal Discovery first, then Sales Nav with recent activity, then general Sales Nav, then Prospeo only as fallback. For Signal Discovery, do not recommend from raw post count; sample engagers, calculate ICP-fit rate, target good-fit lead count, posts needed, selected posts, expected good-fit range, and scale fallback. Stop on the first viable source unless the user explicitly asked to compare. If the user names hiring signals, domains/accounts, supplied lists, posts/comments, or title/persona filters, start with the matching source instead. Parallel source scouts only when the user requested comparison, an existing parallel run is being resumed, or the first viable source is borderline and one cheap fallback check is needed. The later import_leads call must use the same campaignOfferId. Do not import, confirm, enrich, queue, or start leads during source discovery."
620
+ "sourceScoutRule": "Shell-first flow requires the CampaignOffer campaignId from durable state. Pass campaignId as campaignOfferId into every provider prompt/search that can persist source state (`get_provider_prompt({ provider, campaignOfferId, confirmed: true })`, `search_signals`, `search_sales_nav`, `search_prospeo`) and include currentStep for tools that accept it so the user can watch the selected source inside the campaign. Use the default sequential source viability funnel when the user did not specify a source: Signal Discovery first, then Sales Nav with recent activity, then general Sales Nav, then Prospeo only as fallback. For Signal Discovery, use intersection-first keyword lanes that combine the campaign anchor with the buyer pain/use case/ICP role; broad anchor-only lanes are fallback inventory, not selectable source lanes while narrower wedge lanes exist. Do not recommend from raw post count; sample engagers, calculate ICP-fit rate, target good-fit lead count, posts needed, selected posts, expected good-fit range, and scale fallback. Stop on the first viable source unless the user explicitly asked to compare. If the user names hiring signals, domains/accounts, supplied lists, posts/comments, or title/persona filters, start with the matching source instead. Parallel source scouts only when the user requested comparison, an existing parallel run is being resumed, or the first viable source is borderline and one cheap fallback check is needed. The later import_leads call must use the same campaignOfferId. Do not import, confirm, enrich, queue, or start leads during source discovery."
621
621
  },
622
622
  {
623
623
  "action": "optional_debug_artifacts",
@@ -43,6 +43,9 @@ When `find-leads` is using Signals during preview, treat this as a spot check:
43
43
  ### Round 1: Initial Discovery
44
44
 
45
45
  - Generate 5 strategic keywords based on their ICP
46
+ - Prefer intersection keywords that combine the campaign's anchor topic with
47
+ the ICP pain/use case/role. Do not lead with broad anchor-only terms when the
48
+ campaign is narrower.
46
49
  - Cast a slightly wider net to understand the landscape
47
50
  - After results, analyze what's working
48
51
  - Estimate whether the results are likely to produce a usable conversation lane
@@ -122,6 +125,27 @@ Use conservative logic:
122
125
 
123
126
  You're NOT looking for generic buying intent keywords. You're looking for topics that attract YOUR SPECIFIC ICP:
124
127
 
128
+ ### Intersection-First Rule
129
+
130
+ When the campaign has an anchor technology, category, community, or named tool,
131
+ do not search only the anchor. Combine it with the campaign's buyer pain, use
132
+ case, workflow, or role so the resulting posts are likely to attract the right
133
+ ICP before any engager filtering.
134
+
135
+ For a campaign about Claude/AI workflows for GTM, better first-round keywords
136
+ look like:
137
+
138
+ - "Claude outbound"
139
+ - "Claude Code LinkedIn outreach"
140
+ - "AI SDR Claude"
141
+ - "GTM automation Claude"
142
+ - "founder led sales Claude"
143
+
144
+ Broad anchor-only keywords such as "Claude Code", "MCP", "AI agents", or
145
+ "agentic coding" are inventory probes only. Use them after narrow lanes fail or
146
+ as diagnostic context; do not select/promote broad posts when narrower
147
+ campaign-wedge posts exist.
148
+
125
149
  ### For Founder/Executive ICPs:
126
150
 
127
151
  - "founder mode", "founder led sales", "founder brand"
@@ -149,6 +173,10 @@ You're NOT looking for generic buying intent keywords. You're looking for topics
149
173
  - Each round must have DIFFERENT keywords (no repeats across rounds)
150
174
  - Use SINGLE keywords or short phrases only
151
175
  - DO NOT use boolean operators (OR, AND, NOT)
176
+ - At least 3 first-round keywords must be intersection keywords that include
177
+ both the anchor topic and the campaign pain/use case/ICP context.
178
+ - If search results come back broad, immediately run a refined round around the
179
+ campaign wedge before selecting posts or sampling engagers.
152
180
 
153
181
  Examples of GOOD keywords:
154
182