@sellable/mcp 0.1.88 → 0.1.90
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/dist/tools/leads.js
CHANGED
|
@@ -2350,7 +2350,7 @@ export async function selectPromisingPosts(input) {
|
|
|
2350
2350
|
selectedCount: selectionResult.selectedCount,
|
|
2351
2351
|
unselectedCount: selectionResult.unselectedCount,
|
|
2352
2352
|
criteriaCount: selectionResult.criteriaCount,
|
|
2353
|
-
message: `Selected ${selectionResult.selectedCount} posts with ${selectionResult.criteriaCount} ICP criteria (persisted).
|
|
2353
|
+
message: `Selected ${selectionResult.selectedCount} posts with ${selectionResult.criteriaCount} ICP criteria (persisted). Criteria are already saved to the campaign. If the user has already approved the lead-source decision for create-campaign-v2, call import_leads with provider: "signal-discovery", confirmed: true, and the approved bounded targetLeadCount. Otherwise ask the user to confirm before importing.`,
|
|
2354
2354
|
};
|
|
2355
2355
|
}
|
|
2356
2356
|
export async function setHeadlineICPCriteria(input) {
|
package/package.json
CHANGED
|
@@ -616,6 +616,12 @@ claims as setup proof options unless the user supplied verified benchmark data
|
|
|
616
616
|
for this exact workspace/sender. If such claims appear in research, label them
|
|
617
617
|
as unavailable/unsupported and use founder/operator credibility, product
|
|
618
618
|
capability, or verified customer proof instead.
|
|
619
|
+
This is a hard guardrail for both option labels and option descriptions: never
|
|
620
|
+
write setup proof option text with numeric outcome language such as `25% reply`,
|
|
621
|
+
`25%-reply`, `reply-rate`, `meeting-rate`, `pipeline`, `revenue`, or `ROI`
|
|
622
|
+
unless that exact benchmark is verified for this workspace/sender. If a profile
|
|
623
|
+
or case study contains that language, strip the number and convert the option to
|
|
624
|
+
non-quantified founder/operator credibility or product capability.
|
|
619
625
|
|
|
620
626
|
Ask the lead-source question as the last question in the first strategy
|
|
621
627
|
batch, after buyer, offer/ask, and proof/safety are understood. Frame supplied
|
|
@@ -218,6 +218,9 @@ campaignOfferId, confirmed: true })` -> `search_signals({ campaignOfferId,
|
|
|
218
218
|
selectionMode: "replace", selections, headlineICPCriteria })` ->
|
|
219
219
|
`import_leads({ campaignOfferId, provider: "signal-discovery",
|
|
220
220
|
targetLeadCount: importLimit })`.
|
|
221
|
+
Source approval is the explicit confirmation for this bounded review
|
|
222
|
+
batch; do not ask for a second yes/no gate between
|
|
223
|
+
`select_promising_posts` and `import_leads`.
|
|
221
224
|
- Sales Nav: `get_provider_prompt({ provider: "sales-nav", campaignOfferId,
|
|
222
225
|
confirmed: true })` -> rebuild/verify filter IDs -> `search_sales_nav({
|
|
223
226
|
campaignOfferId, filters, confirmed: true })` -> `import_leads({
|
|
@@ -364,8 +364,18 @@ set_headline_icp_criteria({
|
|
|
364
364
|
### import_leads
|
|
365
365
|
|
|
366
366
|
Start scraping and populate a lead list. **Only call after explicit user confirmation.**
|
|
367
|
-
|
|
368
|
-
|
|
367
|
+
For standalone Signal Discovery use, never call `import_leads` in the same turn
|
|
368
|
+
as `select_promising_posts`; ask a clear yes/no question and wait for the user
|
|
369
|
+
to say **yes**.
|
|
370
|
+
|
|
371
|
+
For `create-campaign-v2` after the user has already approved the lead-source
|
|
372
|
+
decision, that approval is the explicit confirmation for the bounded review
|
|
373
|
+
batch. In that tail flow, follow `create-campaign-v2-tail`: call
|
|
374
|
+
`select_promising_posts({ campaignOfferId, selectionMode: "replace",
|
|
375
|
+
selections, headlineICPCriteria })`, then call
|
|
376
|
+
`import_leads({ campaignOfferId, provider: "signal-discovery",
|
|
377
|
+
targetLeadCount })` for the approved review batch without asking for another
|
|
378
|
+
yes/no gate. Do not import more than the approved bounded batch.
|
|
369
379
|
|
|
370
380
|
```json
|
|
371
381
|
import_leads({
|
|
@@ -407,9 +417,15 @@ Then run post-confirm routing in this order:
|
|
|
407
417
|
- Recency (≤6 weeks = active LinkedIn users who will see outreach)
|
|
408
418
|
- **Include 3-5 headline filtering criteria**
|
|
409
419
|
4. If you are estimating whether Signals is viable before import, fetch engagers for 1-3 promising posts and compute a sampled headline pass rate before estimating reachable leads.
|
|
410
|
-
5.
|
|
411
|
-
|
|
412
|
-
|
|
420
|
+
5. Standalone Signal Discovery flow: ask for explicit confirmation to import
|
|
421
|
+
leads (e.g., "Does this look right? Should I import leads now?").
|
|
422
|
+
`create-campaign-v2` tail flow: if the user already approved the source
|
|
423
|
+
decision, that approval is the import confirmation for the bounded review
|
|
424
|
+
batch; do not ask again.
|
|
425
|
+
6. If confirmation exists, call `import_leads`. If not, refine
|
|
426
|
+
selections/criteria and ask again.
|
|
427
|
+
7. When the lead list finishes and the user confirms it looks good, call
|
|
428
|
+
`confirm_lead_list`.
|
|
413
429
|
</search_flow>
|
|
414
430
|
|
|
415
431
|
<selection_rules>
|
|
@@ -490,6 +506,8 @@ select_promising_posts({
|
|
|
490
506
|
1. Search signals (Round 1) → Get raw post data
|
|
491
507
|
2. (Optional) Search signals (Round 2) → More keywords, more posts
|
|
492
508
|
3. Select `selectionTarget` promising posts with headlineICPCriteria
|
|
493
|
-
4.
|
|
494
|
-
|
|
509
|
+
4. Standalone flow: ask the user to confirm before importing leads.
|
|
510
|
+
`create-campaign-v2` after source approval: continue without a second
|
|
511
|
+
import confirmation gate.
|
|
512
|
+
5. If confirmation exists, call `import_leads`
|
|
495
513
|
</correct_flow>
|