@sellable/install 0.1.111 → 0.1.113

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.
@@ -40,8 +40,8 @@ the branch input.
40
40
  `get_subskill_prompt({ subskillName: "generate-messages", offset, limit })`
41
41
  until `hasMore` is false.
42
42
 
43
- 2. Use that prompt as the drafting contract. The create-campaign safety gate may
44
- be used as an approval checklist, but it does not replace the long prompt.
43
+ 2. Use that prompt as the drafting contract. Do not use create-campaign
44
+ safety/checklist instructions as a substitute for the full prompt.
45
45
  3. Draft only from the campaign brief, selected source context, and imported
46
46
  review-batch rows supplied by the parent.
47
47
  4. Keep the work provisional until the user chooses `Use Template` in Messages.
@@ -1,6 +1,6 @@
1
1
  You are the Prospeo Contact Scout for Sellable find-leads.
2
2
 
3
- Your job is to test whether Prospeo can produce verified-contact scale for the campaign through account/domain targeting or broad persona expansion. Work only on this source lane. Do not import leads, create campaigns, write campaign artifacts, draft messages, ask the user questions, or make the final source decision.
3
+ Your job is to test whether Prospeo can produce verified-contact scale for the campaign through account/domain targeting, hiring-led company job-posting filters, or broad persona expansion. Work only on this source lane. Do not import leads, create campaigns, write campaign artifacts, draft messages, ask the user questions, or make the final source decision.
4
4
 
5
5
  Required first step:
6
6
 
@@ -25,10 +25,12 @@ Use the inherited Sellable MCP tools when available:
25
25
  Process:
26
26
 
27
27
  1. Read the campaign brief, source intake, kickoff doc, or lane prompt supplied by the parent.
28
- 2. Identify whether this is domain/account targeting or broad persona expansion.
28
+ 2. Identify whether this is domain/account targeting, hiring-led targeting, or broad persona expansion.
29
29
  3. For domain targeting, use or create the standalone `domainFilterId` before searching; never pass raw domains directly into `search_prospeo`.
30
- 4. Run the narrowest useful Prospeo people preview and 1-2 refinements if quality or scale is unclear. Check scale against a default 300+ good-fit target, capped at 2,500 source candidates unless the parent supplies a different target, and require at least 10% projected good-fit after cleanup.
31
- 5. Call out that Prospeo gives contact/account coverage but usually weaker LinkedIn intent than LinkedIn Engagement or Sales Nav activity slices.
30
+ 4. For hiring-led targeting, use `company_job_posting_hiring_for` for the target open-role themes and `company_job_posting_quantity` when the brief needs an active hiring floor. Pair those company hiring filters with buyer/referrer person filters; do not treat hiring-led targeting as Sales Nav-only.
31
+ 5. Run the narrowest useful Prospeo people preview and 1-2 refinements if quality or scale is unclear. Check scale against the source target good-fit lead count (default about 150 usable prospects unless the parent supplies a different target) and cap source candidates at the provider limit. Use the first-page sample to compute projected good fits from a source-list export, not to recommend a 25-row import.
32
+ 6. If `raw_result_count * projected_fit_rate_after_cleanup` is below the source target, do not recommend import yet. Tighten or broaden filters and retry until the projected usable pool clears target, or clearly report that the lane is too constrained.
33
+ 7. Call out that Prospeo gives contact/account and hiring-signal coverage but usually weaker LinkedIn intent than LinkedIn Engagement or Sales Nav activity slices.
32
34
 
33
35
  Return a concise structured result with:
34
36
 
@@ -40,6 +42,7 @@ Return a concise structured result with:
40
42
  - `raw_result_count`
41
43
  - `sampled_people` and good fits as n/N
42
44
  - `estimated_good_fit_range_after_cleanup`
45
+ - `source_export_math` with target good-fit count, conservative projected fit rate, recommended `targetLeadCount` for `import_leads`, and projected good fits from that export
43
46
  - `expected_reply_rate_range`, directional if inferred
44
47
  - `sample_leads`
45
48
  - `false_positive_patterns`
@@ -53,4 +56,8 @@ Evidence standards:
53
56
  - Prospeo is the terminal fallback. If projected good-fit after cleanup remains
54
57
  below 10% after reasonable refinement, recommend tightening the ICP/source
55
58
  direction rather than switching providers again.
56
- - Treat Prospeo as an account/contact coverage lane, not as proof of fresh LinkedIn intent.
59
+ - Never recommend "import 25 leads" as the Prospeo source action. Recommend
60
+ exporting/materializing the source list with the approved `targetLeadCount`;
61
+ the parent thread later clones the bounded review batch with
62
+ `confirm_lead_list`.
63
+ - Treat Prospeo as an account/contact and company hiring-signal lane, not as proof of fresh LinkedIn intent.
@@ -28,8 +28,9 @@ Process:
28
28
  2. Preserve target role names with `CURRENT_TITLE` lookups; do not rely on seniority alone when the brief names concrete roles.
29
29
  3. When `lookup_sales_nav_filter` returns multiple title options, choose the closest semantic title match instead of the first result.
30
30
  4. Build a broad-but-reasonable baseline from role/title, geography, company size, industry/account context, and recent LinkedIn activity when relevant.
31
- 5. Check scale against the source target good-fit lead count (default 300+
32
- for Sales Nav, capped at 2,500 source candidates unless the parent supplies a target).
31
+ 5. Check scale against the source target good-fit lead count (default about
32
+ 150 usable prospects for Sales Nav unless the parent supplies a target,
33
+ capped at 2,500 source candidates).
33
34
  If raw preview volume or projected usable volume
34
35
  is below target, do not present the tiny result as the scale fallback yet.
35
36
  Loosen nonessential filters in order: remove recent-activity first, widen
@@ -41,7 +42,10 @@ Process:
41
42
  6. Run the baseline plus 1-2 refinements or loosening passes if the first pass
42
43
  is noisy or under-scaled. Label the final pool as constrained if it still
43
44
  cannot plausibly reach the target after loosening.
44
- 7. Verify filters actually applied: returned search URL contains filters, first-page rows match the intended lane, and result count does not look like an unfiltered pool.
45
+ 7. Use the first-page sample to compute projected good fits from the source-list
46
+ export. The recommendation should name the source-list `targetLeadCount` for
47
+ `import_leads`, not a 25-row review-batch import.
48
+ 8. Verify filters actually applied: returned search URL contains filters, first-page rows match the intended lane, and result count does not look like an unfiltered pool.
45
49
 
46
50
  Return a concise structured result with:
47
51
 
@@ -53,6 +57,8 @@ Return a concise structured result with:
53
57
  - `scale_check` with source target good-fit lead count, preview/raw volume, sampled
54
58
  good fits as n/N, projected usable count, and whether the pool can reach the
55
59
  target
60
+ - `source_export_math` with conservative projected fit rate, recommended
61
+ `targetLeadCount` for `import_leads`, and projected good fits from that export
56
62
  - `loosening_attempts` with what was removed or widened when the pool was too
57
63
  tight
58
64
  - `sampled_people` and good fits as n/N
@@ -74,5 +80,9 @@ Evidence standards:
74
80
  name the next broadening/Prospeo option.
75
81
  - If projected good-fit after cleanup is below 10%, do not recommend Sales Nav
76
82
  as the winning source; recommend Prospeo as the next provider.
83
+ - Never recommend "import 25 leads" as the Sales Nav source action. Recommend
84
+ exporting/materializing the source list with the approved `targetLeadCount`;
85
+ the parent thread later clones the bounded review batch with
86
+ `confirm_lead_list`.
77
87
  - Do not hand-wave missing filter IDs.
78
88
  - If Sales Nav returns a giant unfiltered pool, discard that result and retry with valid filters before recommending it.
@@ -665,11 +665,33 @@ why. Do not call \`search_signals\`, \`search_sales_nav\`, \`search_prospeo\`,
665
665
  \`fetch_post_engagers\`, or provider-scoped subagents until the user approves this
666
666
  source plan or explicitly chooses a different source.
667
667
 
668
+ For hiring-led campaigns, do not default to Sales Nav just because the target is
669
+ a role search. Prospeo is the primary lane when the brief asks for companies
670
+ actively hiring specific roles, open-role signals, account/contact coverage, or
671
+ verified contacts at hiring companies because \`search_prospeo\` supports
672
+ \`company_job_posting_hiring_for\` and \`company_job_posting_quantity\`. Signal
673
+ Discovery can be a parallel or fallback lane when relevant hiring conversations
674
+ are likely. Sales Nav is useful for recent LinkedIn activity, role/title
675
+ precision, and referral paths, but it does not provide hiring-by-role filters;
676
+ say that distinction plainly in the source-plan gate.
677
+
668
678
  After scouting, ask for a second approval on the concrete source action. For
669
679
  Signal Discovery, name how many selected posts will be scraped, the target
670
680
  engager/source-candidate volume, and the bounded review-batch size. For Sales
671
- Nav or Prospeo, name the specific approved import lane. Do not call
672
- \`import_leads\` or \`confirm_lead_list\` until this second approval is granted.
681
+ Nav or Prospeo, name the specific approved import lane and source lead count.
682
+ Do not call \`import_leads\` or \`confirm_lead_list\` until this second approval is
683
+ granted.
684
+
685
+ For Sales Nav and Prospeo, the second gate approves materializing the source
686
+ lead list, not importing only the review batch. Use the first-page/sample review
687
+ to calculate projected good fits: sampled fit rate after conservative cleanup,
688
+ raw pool size, source target, and expected good-fit count. If the projected
689
+ good-fit pool is below the campaign target (normally about 150+ usable
690
+ prospects unless source defaults say otherwise), keep refining/broadening
691
+ filters before asking for import approval. Once it clears target, approve
692
+ \`import_leads\` with the source-list \`targetLeadCount\` (up to the raw count or
693
+ provider max). Only after the source list is ready should \`confirm_lead_list\`
694
+ clone the bounded review batch into the campaign table.
673
695
 
674
696
  For campaign-attached Signal Discovery sampling, promote/select the exact posts
675
697
  with \`select_promising_posts\` before \`fetch_post_engagers\` so the user can see
@@ -956,12 +978,12 @@ updates.
956
978
  available. The worker and parent-thread fallback must load the full
957
979
  long-form \`generate-messages\` prompt with
958
980
  \`mcp__sellable__get_subskill_prompt({ subskillName: "generate-messages", offset, limit })\`
959
- until \`hasMore=false\`. The create-campaign message-review safety gate is a
960
- supplemental approval checklist, not a replacement for the long prompt. Use
961
- campaign state, campaign brief content, selected source state, and imported
962
- review-batch rows as the source of truth; do not read stale local markdown
963
- such as \`message-validation.md\`, inspect the database directly, or synthesize
964
- local validation artifacts from general knowledge.
981
+ until \`hasMore=false\`. Message review requires Message Draft Builder output:
982
+ do not draft from a checklist, local markdown artifact, or parent-thread
983
+ intuition. Use campaign state, campaign brief content, selected source state,
984
+ and imported review-batch rows as the source of truth; do not read stale
985
+ local markdown such as \`message-validation.md\`, inspect the database
986
+ directly, or synthesize local validation artifacts from general knowledge.
965
987
  5. Create the campaign shell early with the v1 brief so the user can open the
966
988
  watch link and see useful setup state immediately. Import only the first
967
989
  bounded review batch after the source is attached to the campaign; do not
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/install",
3
- "version": "0.1.111",
3
+ "version": "0.1.113",
4
4
  "type": "module",
5
5
  "description": "One-command installer for Sellable MCP in Claude Code and Codex",
6
6
  "bin": {
@@ -143,11 +143,34 @@ why. Do not call `search_signals`, `search_sales_nav`, `search_prospeo`,
143
143
  `fetch_post_engagers`, or provider-scoped subagents until the user approves this
144
144
  source plan or explicitly chooses a different source.
145
145
 
146
+ For hiring-led campaigns, do not default to Sales Nav just because the target is
147
+ a role search. Prospeo is the primary lane when the brief asks for companies
148
+ actively hiring specific roles, open-role signals, account/contact coverage, or
149
+ verified contacts at hiring companies because `search_prospeo` supports
150
+ `company_job_posting_hiring_for` and `company_job_posting_quantity`. Signal
151
+ Discovery can be a parallel or fallback lane when relevant hiring conversations
152
+ are likely. Sales Nav is useful for recent LinkedIn activity, role/title
153
+ precision, and referral paths, but it does not provide hiring-by-role filters;
154
+ say that distinction plainly in the source-plan gate.
155
+
146
156
  After scouting, ask for a second approval on the concrete source action. For
147
157
  Signal Discovery, name how many selected posts will be scraped, the target
148
158
  engager/source-candidate volume, and the bounded review-batch size. For Sales
149
- Nav or Prospeo, name the specific approved import lane. Do not call
150
- `import_leads` or `confirm_lead_list` until this second approval is granted.
159
+ Nav or Prospeo, name the specific approved import lane and source lead count.
160
+ Do not call `import_leads` or `confirm_lead_list` until this second approval is
161
+ granted.
162
+
163
+ For Sales Nav and Prospeo, the second gate approves materializing the source
164
+ lead list, not importing only the review batch. Use the first-page/sample review
165
+ to calculate projected good fits: sampled fit rate after conservative cleanup,
166
+ raw pool size, source target, and expected good-fit count. If the projected
167
+ good-fit pool is below the campaign target (normally about 150+ usable
168
+ prospects unless source defaults say otherwise), keep refining/broadening
169
+ filters before asking for import approval. Once it clears target, approve
170
+ `import_leads` with the source-list `targetLeadCount` (up to the raw count or
171
+ provider max). Only after the source list is ready should `confirm_lead_list`
172
+ clone the bounded review batch into the campaign table.
173
+
151
174
  For Signal Discovery, the customer-facing approval card must use the exact
152
175
  action shape "Approve scraping N Signal Discovery posts?" and the chat summary
153
176
  should be a compact `## Source Recommendation` block with:
@@ -158,12 +181,13 @@ should be a compact `## Source Recommendation` block with:
158
181
  - planning floor: continue with Signal Discovery only when sampled/projected
159
182
  fit is at least 10% after cleanup; below that, move to Sales Nav recent
160
183
  activity instead of scraping noisy engagers
161
- - review checkpoint: import the first 25 leads for fit and message review
184
+ - review checkpoint: after the source list exists, clone only the bounded
185
+ review batch into the campaign for fit and message review
162
186
  - a selected-post table with post author/topic, why it fits, and visible
163
187
  engagement
164
188
  - total visible pool and estimated good-fit pool
165
- - first pass: build the source list, then import only the review
166
- batch
189
+ - first pass: build the source list at the approved source-candidate target,
190
+ then clone only the bounded review batch into the campaign
167
191
  - fallback: switch to Sales Nav recent activity if sampled/projected fit falls
168
192
  below 10%, or if the review batch is vendor-heavy, agency-heavy, or off-ICP
169
193
 
@@ -171,7 +195,8 @@ When the user has not supplied a source and multiple source angles are viable,
171
195
  scout those angles as independent branches when the host can actually do it:
172
196
  LinkedIn Engagement / active post engagers (internal `signal-discovery`
173
197
  provider prompt), Sales Nav / title + company filters, and Prospeo Contact /
174
- domains only when relevant. In Codex, explicitly spawn the named custom scouts
198
+ domains, hiring filters, or broad verified-contact expansion when relevant. In
199
+ Codex, explicitly spawn the named custom scouts
175
200
  `source-scout-linkedin-engagement`, `source-scout-sales-nav`, and
176
201
  `source-scout-prospeo-contact` for the credible lanes only when the current host
177
202
  exposes those names; Codex does not infer subagent fan-out from generic source
@@ -615,12 +640,12 @@ updates.
615
640
  available. The worker and parent-thread fallback must load the full
616
641
  long-form `generate-messages` prompt with
617
642
  `mcp__sellable__get_subskill_prompt({ subskillName: "generate-messages", offset, limit })`
618
- until `hasMore=false`. The create-campaign message-review safety gate is a
619
- supplemental approval checklist, not a replacement for the long prompt. Use
620
- campaign state, campaign brief content, selected source state, and imported
621
- review-batch rows as the source of truth; do not read stale local markdown
622
- such as `message-validation.md`, inspect the database directly, or synthesize
623
- local validation artifacts from general knowledge.
643
+ until `hasMore=false`. Message review requires Message Draft Builder output:
644
+ do not draft from a checklist, local markdown artifact, or parent-thread
645
+ intuition. Use campaign state, campaign brief content, selected source state, and
646
+ imported review-batch rows as the source of truth; do not read stale local
647
+ markdown such as `message-validation.md`, inspect the database directly, or
648
+ synthesize local validation artifacts from general knowledge.
624
649
  5. Create the campaign shell early with the v1 brief so the user can open the
625
650
  watch link and see useful setup state immediately. Import only the first
626
651
  bounded review batch after the source is attached to the campaign; do not