@sellable/mcp 0.1.59 → 0.1.61

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.59",
3
+ "version": "0.1.61",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -573,7 +573,10 @@ Required behavior:
573
573
  - do not mutate DB-backed campaign state
574
574
  - run a real parallel source-angle scout when the source is not supplied and at
575
575
  least two viable source angles exist. Treat source scouting as independent
576
- branches, then compare the outputs in `lead-review.md`.
576
+ branches, then compare the outputs in `lead-review.md`. If the realistic
577
+ source set is Signals + Sales Nav, run both. If it is Signals + Prospeo, run
578
+ both. If all three are credible, run all three when the host/runtime supports
579
+ it.
577
580
  - Branch A: Signals / active LinkedIn posts. Search relevant keyword lanes,
578
581
  review finalist posts, fetch top-post engagers, and estimate warm-fit
579
582
  volume.
@@ -589,7 +592,7 @@ Required behavior:
589
592
  lanes and fetch top-post engagers in parallel when tool batching allows it.
590
593
  For Sales Nav-first or Prospeo/account-first campaigns, run multiple preview
591
594
  lanes for that provider in parallel and use Signals only as a warmth/quality
592
- check when relevant
595
+ check when relevant.
593
596
  - after every Sales Nav preview, validate that filters actually applied before
594
597
  using the lane in `lead-review.md`: `searchUrl` should include filters, the
595
598
  first page should match the intended roles/companies, and the result count
@@ -606,6 +609,16 @@ Required behavior:
606
609
  keyword lanes; it does not mean 492 prospects. The source decision must name
607
610
  the actual posts we would use, show why they won, and estimate usable engagers
608
611
  from those posts after headline/sample filtering
612
+ - Signals viability is based on estimated ICP-fit reachable engagers, not raw
613
+ post count and not whether it beats Sales Nav scale. If 5-8 selected posts can
614
+ plausibly produce ~150+ ICP-fit warm prospects before final filtering, keep
615
+ Signals as a viable focused option. If stricter cleanup likely reduces that to
616
+ ~100 usable prospects, say so plainly instead of discarding it.
617
+ - When Signals is viable-but-smaller and Sales Nav or Prospeo is more scalable,
618
+ the user-facing lead review must present the choice: Signals for a warmer,
619
+ smaller, higher-reply-upside first batch versus Sales Nav/Prospeo for broader
620
+ scale. Recommend the source you believe should win, often Sales Nav when scale
621
+ matters, but keep the smaller Signals lane available as a real option.
609
622
  - user-facing source logic must use numbers, not vibes. Never write a percentage
610
623
  such as `73% match` without the numerator, denominator, and sample basis, e.g.
611
624
  `8 of 11 sampled engagers fit the ICP (73%)`. If the sample is small, say it is
@@ -621,9 +634,10 @@ usable leads`.
621
634
  last 30 days, prefer the last 7-14 days when quality is comparable, and call
622
635
  out any older post as a deliberate tradeoff. Do not hide post age inside the
623
636
  raw search count
624
- - default source quality target is 300-500+ likely usable leads; accept
625
- 150-300 only for an explicit beta/design-partner motion and name that
626
- volume tradeoff in `lead-review.md` and the approval packet
637
+ - default source quality target is 300-500+ likely usable leads for scalable
638
+ outbound; accept ~150+ likely ICP-fit warm prospects as viable for a focused
639
+ Signals-first campaign or first review batch. Name the volume tradeoff in
640
+ `lead-review.md` and the approval packet rather than forcing a discard.
627
641
  - if `lead-source-intake.json` is present, read `sourceType`,
628
642
  `sourceInputMode`, file path or existing lead-list ID, selected columns,
629
643
  confirmation token, normalized counts, and any preview-created
@@ -301,7 +301,7 @@
301
301
  "action": "run_subskill",
302
302
  "target": "find-leads",
303
303
  "mode": "campaignless-preview",
304
- "sourceScoutRule": "When source is not user-supplied and at least two viable source angles exist, scout independent source angles in parallel when host/tooling permits: Signals active-post branch, Sales Nav title/company branch, and Prospeo/domain branch only when relevant. If real parallel execution is unavailable, run the same scouts sequentially and do not claim parallel execution. Compare outputs by raw volume, n/N sampled fit, estimated good-fit range, expected reply range, and tradeoff."
304
+ "sourceScoutRule": "When source is not user-supplied and at least two viable source angles exist, scout independent source angles in real parallel when host/tooling permits: Signals active-post branch + Sales Nav title/company branch, Signals + Prospeo when domains/accounts are relevant, or all three when credible. If real parallel execution is unavailable, run the same scouts sequentially and do not claim parallel execution. Compare outputs by raw volume, n/N sampled fit, estimated good-fit range, expected reply range, and tradeoff. Keep Signals as viable when selected posts can produce ~150+ ICP-fit warm prospects before final filtering, even if Sales Nav is more scalable; when both are viable, present the choice and recommend the stronger default."
305
305
  },
306
306
  {
307
307
  "action": "write_artifacts",
@@ -235,6 +235,11 @@ Use the existing provider tools to run a small, directional probe:
235
235
 
236
236
  If the first probe is weak or noisy and enough context exists, try 1-2 alternate hypotheses before returning.
237
237
  If the first probe has good quality but insufficient scale, iterate 1-2 times to widen intelligently before returning.
238
+ When two or more source angles are viable, run the provider probes in real
239
+ parallel when the host/runtime allows it. Examples: Signals + Sales Nav,
240
+ Signals + Prospeo, or Sales Nav + Prospeo. If the host cannot run them in
241
+ parallel, run the same probes sequentially and do not claim they ran in
242
+ parallel.
238
243
 
239
244
  Treat refinement as a measured loop:
240
245
 
@@ -262,10 +267,23 @@ Use first when the value is in conversation opportunity, competitor engagers, co
262
267
  - Favor ICP-fit conversation density over raw post volume.
263
268
  - Capture counts, false-positive patterns, and notable examples.
264
269
  - If Signals is materially in the running, do not stop at post-level quality alone.
265
- - Pick 1-2 promising posts, then call `fetch_post_engagers` on those posts.
270
+ - Pick enough promising posts to estimate campaign viability. Start with 1-3
271
+ strong posts for a spot check; if the sampled pass rate is good but the
272
+ projected pool is below target, expand to 5-8 selected posts before
273
+ discarding Signals.
266
274
  - Sample a representative first page only, scoring the first 25-40 engagers across the chosen posts against a rough yes/no headline rubric or `headlineICPCriteria`.
267
275
  - Use headline and display-name cues only for the spot-check sample; do not enrich people during this phase.
268
276
  - Base `estimatedReachableLeads` on the sampled engager pass rate, not only on a guessed discount from post themes.
277
+ - A Signals lane with ~150+ estimated ICP-fit reachable engagers from selected
278
+ posts is viable for a focused warm campaign, even if Sales Nav is more
279
+ scalable. Do not discard that lane solely for being smaller. If post-level
280
+ filtering likely reduces 150 good fits to ~100 after stricter cleanup, say so
281
+ plainly and treat it as a viable-but-smaller option.
282
+ - When Signals and Sales Nav/Prospeo are both viable, present the tradeoff and
283
+ ask for the user's source preference if the decision changes campaign
284
+ strategy: Signals = warmer, smaller, higher reply upside; Sales Nav/Prospeo =
285
+ more scalable, usually colder or less signal-rich. Recommend the source you
286
+ believe is better, but keep the viable alternate as a real option.
269
287
  - If you cannot fetch engagers in the current runtime, say the estimate is inferred and lower confidence.
270
288
  - If Signals is too sparse, too noisy, or clearly below campaign scale after the spot check, fall back to `Sales Nav` rather than forcing a weak conversation-led lane.
271
289
 
@@ -279,6 +297,9 @@ Use first when LinkedIn activity plus tighter role / company filters matter.
279
297
  `CURRENT_TITLE` lookups. Seniority filters are supporting constraints, not a
280
298
  substitute for target roles. Example: VP Sales / VP Revenue / Head of Growth
281
299
  should use title filters, not only `SENIORITY_LEVEL: Vice President`.
300
+ - When a title lookup returns multiple options, choose the option that most
301
+ closely matches the intended role, not the first option by position. If
302
+ `Head of Growth` appears after `Head of Marketing`, use `Head of Growth`.
282
303
  - For reply-likelihood-first outbound, Sales Nav is the second choice after Signals: use it when the TAM is not active enough on LinkedIn, when Signals cannot sustain enough good fits, or when the targeting thesis depends on tighter role/company control than Signals can provide.
283
304
  - For InMail or LinkedIn-send motions, establish the baseline TAM first, then test a `POSTED_ON_LINKEDIN` slice when the pool can still sustain a campaign.
284
305
  - Treat recent posters as a preferred first-send slice, not just a nice-to-have proxy. When the recently-posted slice still yields enough projected good fits, prefer it because reply / acceptance performance is usually materially better than the cold full-TAM pool.
@@ -57,6 +57,12 @@ Example search name: "Active CXOs at 201-500 companies"
57
57
  business development, partnerships, marketing, operations, and other noisy
58
58
  roles.
59
59
 
60
+ Do not blindly use the first `lookup_sales_nav_filter` result. Review the
61
+ returned options and choose the closest semantic title match. If the first
62
+ result for "Head of Growth" is "Head of Marketing" but a later option is
63
+ "Head of Growth", use "Head of Growth". If no close title match exists,
64
+ retry with a tighter title query or omit that role and call out the tradeoff.
65
+
60
66
  Dynamic filters (REQUIRE lookup):
61
67
 
62
68
  - REGION: "United States", "California", "London"