@sellable/mcp 0.1.63 → 0.1.65
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
|
@@ -758,17 +758,55 @@ user-facing lead review. The visible response must include:
|
|
|
758
758
|
|
|
759
759
|
- `Lead source decision`
|
|
760
760
|
- `Recommendation`
|
|
761
|
+
- `Primary source and filters` with the concrete source recipe the agent would
|
|
762
|
+
use if approved. For Sales Nav, name the actual role/title, company-size,
|
|
763
|
+
geography, industry/account, and activity filters. For Signals, name the
|
|
764
|
+
selected post set. For Prospeo, name the account/domain and title recipe.
|
|
765
|
+
- `Runner-up sources` with the second-best choice and why it lost. Make the
|
|
766
|
+
tradeoff explicit, e.g. Sales Nav = clearer scale and fit control, Signals =
|
|
767
|
+
warmer but smaller/noisier, Prospeo = broader account coverage but weaker
|
|
768
|
+
LinkedIn intent.
|
|
761
769
|
- `Why it won`
|
|
762
770
|
- `Quick numbers` as bullet points, with one provider/source angle per bullet.
|
|
763
771
|
Each bullet must include raw volume, sampled fit rate as `n/N`, estimated
|
|
764
772
|
good-fit range after cleanup, and expected reply-rate range when available.
|
|
773
|
+
- If Signals was searched or considered, `Signal keyword lanes` as a compact
|
|
774
|
+
table with keyword lane, timeframe, posts found, and finalist posts reviewed.
|
|
775
|
+
- If Signals was searched or considered, `LinkedIn posts sampled` as a compact
|
|
776
|
+
table with one row per selected or finalist post: post URL/title,
|
|
777
|
+
author/topic, age, engagers, sampled engagers, good fits as `n/N`, estimated
|
|
778
|
+
usable prospects per post, and use/discard decision.
|
|
765
779
|
- `Sample leads` with 3-5 representative `Name — Title, Company` rows
|
|
766
780
|
- `Tradeoff`
|
|
767
781
|
- `Open artifact: lead-review.md`
|
|
768
782
|
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
783
|
+
The first sentence of the visible decision must make the actual choice clear:
|
|
784
|
+
`I recommend {primary source} using {exact filter/source recipe}. The runner-up
|
|
785
|
+
is {source} because {reason}.` Do not make the user infer the decision from
|
|
786
|
+
numbers alone.
|
|
787
|
+
|
|
788
|
+
If you ask for lead-source approval, the question and choices must name the
|
|
789
|
+
source decision. Prefer `Approve Sales Nav with founder/CEO filters, or use
|
|
790
|
+
warmer Signals posts instead?` over `Approve this lead source?`. Option labels
|
|
791
|
+
must be concrete, such as `Approve Sales Nav filters`, `Use warmer Signals
|
|
792
|
+
posts`, `Try Prospeo/account search`, and `Revise source`.
|
|
793
|
+
|
|
794
|
+
Do not skip or discard Signals based only on raw post count or vibes. If
|
|
795
|
+
Signals was considered, show the post-level math in chat first so the user can
|
|
796
|
+
see which LinkedIn posts would be scraped, how many engagers each has, how many
|
|
797
|
+
sampled engagers looked like good fits, and roughly how many usable prospects
|
|
798
|
+
each post can produce. If no engagers could be fetched, say that explicitly and
|
|
799
|
+
lower confidence instead of presenting a precise estimate.
|
|
800
|
+
|
|
801
|
+
For Signals, default to sampling a few promising posts first rather than trying
|
|
802
|
+
to prove the entire source can scale before the user sees evidence. Pick 3-5
|
|
803
|
+
fresh, high-density posts when available, sample engagers, show fit rate, then
|
|
804
|
+
state how many additional posts could be added/scraped if that first sample is
|
|
805
|
+
good but volume is low.
|
|
806
|
+
|
|
807
|
+
Keep discarded paths, full sample rows, and `lead-sample.json` details in
|
|
808
|
+
artifacts. Do not show raw filesystem paths unless links cannot be created or
|
|
809
|
+
the user asks.
|
|
772
810
|
|
|
773
811
|
For supplied profile CSVs and existing lead lists, `lead-review.md` must not
|
|
774
812
|
describe a generic TAM estimate or pretend the rows came from Sales Nav/Prospeo
|
|
@@ -387,8 +387,12 @@
|
|
|
387
387
|
"renderInlineSections": [
|
|
388
388
|
"## Lead source decision",
|
|
389
389
|
"Recommendation",
|
|
390
|
+
"Primary source and filters",
|
|
391
|
+
"Runner-up sources",
|
|
390
392
|
"Why it won",
|
|
391
393
|
"Quick numbers",
|
|
394
|
+
"Signal keyword lanes",
|
|
395
|
+
"LinkedIn posts sampled",
|
|
392
396
|
"Sample leads",
|
|
393
397
|
"Tradeoff"
|
|
394
398
|
],
|
|
@@ -417,12 +421,31 @@
|
|
|
417
421
|
"expected reply-rate range",
|
|
418
422
|
"confidence note"
|
|
419
423
|
],
|
|
424
|
+
"sourceDecisionRequiredFields": [
|
|
425
|
+
"primary source",
|
|
426
|
+
"exact Sales Nav filters or source recipe",
|
|
427
|
+
"runner-up source",
|
|
428
|
+
"why runner-up lost",
|
|
429
|
+
"what approval means"
|
|
430
|
+
],
|
|
431
|
+
"signalsInlineTableRequiredFields": [
|
|
432
|
+
"keyword lane",
|
|
433
|
+
"timeframe",
|
|
434
|
+
"posts found",
|
|
435
|
+
"finalist posts reviewed",
|
|
436
|
+
"post URL or title",
|
|
437
|
+
"engagers or engagement count",
|
|
438
|
+
"sampled engagers",
|
|
439
|
+
"good fits as n/N",
|
|
440
|
+
"estimated usable prospects per post",
|
|
441
|
+
"use or discard decision"
|
|
442
|
+
],
|
|
420
443
|
"forbidPercentOnlyFitRates": true,
|
|
421
444
|
"requiredArtifactLinks": ["lead-review.md"],
|
|
422
445
|
"artifactLinkTiming": "before_next_step_or_revision_question",
|
|
423
446
|
"doNotCompressToSummaryOnly": false,
|
|
424
447
|
"doNotRenderArtifactLinksOnly": true,
|
|
425
|
-
"chatRenderRule": "Show a slim rendered-Markdown decision summary only, never a fenced code block. Use indexed sections and short bullets: recommendation, why it won, Quick numbers with one provider/source angle per bullet, raw volume, sampled fit rate as n/N, estimated good-fit range after cleanup, expected reply rate range, 3-5 representative sample leads, and one tradeoff.
|
|
448
|
+
"chatRenderRule": "Show a slim rendered-Markdown decision summary only, never a fenced code block. The first sentence must make the decision explicit: 'I recommend {primary source} using {exact filter/source recipe}. The runner-up is {source} because {reason}.' Use indexed sections and short bullets: recommendation, Primary source and filters, Runner-up sources, why it won, Quick numbers with one provider/source angle per bullet, raw volume, sampled fit rate as n/N, estimated good-fit range after cleanup, expected reply rate range, 3-5 representative sample leads, and one tradeoff. If Signals was searched or considered, include two compact inline Markdown tables before the recommendation is treated as final: Signal keyword lanes with keyword lane, timeframe, posts found, and finalist posts reviewed; and LinkedIn posts sampled with post URL/title, author/topic, age, engagers, sampled engagers, good fits as n/N, estimated usable prospects per post, and use/discard decision. Default to selecting a few promising Signals posts for the first sample instead of trying to prove full Signals scale up front; if the sample is good but volume is low, say how many more posts to add/scrape next. Do not skip or discard Signals based only on raw post count or vibes; show the post-level math first, or explicitly say no engagers could be fetched and lower confidence. Keep discarded paths, full sample rows, and lead-sample.json details in lead-review.md. Do not show plain filesystem paths unless links cannot be created."
|
|
426
449
|
},
|
|
427
450
|
{
|
|
428
451
|
"action": "render_post_lead_parallel_progress",
|
|
@@ -438,6 +461,7 @@
|
|
|
438
461
|
},
|
|
439
462
|
{
|
|
440
463
|
"action": "ask_continue_revise_or_confirm_only_if_needed",
|
|
464
|
+
"approvalQuestionRule": "If asking the user, the question and options must name the concrete decision. Prefer: 'Approve Sales Nav with {filters}, or use warmer Signals instead?' over 'Approve this lead source?' Option labels must name the source choice, such as 'Approve Sales Nav filters', 'Use warmer Signals posts', 'Try Prospeo/account search', and 'Revise source'.",
|
|
441
465
|
"autoContinueWhen": {
|
|
442
466
|
"status": "confirmed",
|
|
443
467
|
"confidenceIn": ["high", "medium"],
|
|
@@ -88,6 +88,12 @@ Use a compact markdown report with these sections:
|
|
|
88
88
|
|
|
89
89
|
- Best Path: {provider or provider sequence}
|
|
90
90
|
- Why It Won: {volume + reply-likelihood + fit rationale}
|
|
91
|
+
- Primary Source and Filters: {exact source recipe; include Sales Nav
|
|
92
|
+
role/title, company-size, geography, industry/account, and activity filters
|
|
93
|
+
when Sales Nav wins}
|
|
94
|
+
- Runner-Up Sources: {second-best source and why it lost}
|
|
95
|
+
- Approval Meaning: approving this source means {what will be sampled/imported
|
|
96
|
+
next}
|
|
91
97
|
|
|
92
98
|
## Expected LinkedIn Funnel
|
|
93
99
|
|
|
@@ -97,6 +103,28 @@ Use a compact markdown report with these sections:
|
|
|
97
103
|
- Likely Reply Rate: {range}
|
|
98
104
|
- Estimate Basis: sample-backed | historical | founder-supplied | directional
|
|
99
105
|
|
|
106
|
+
## Signal Keyword Lanes
|
|
107
|
+
|
|
108
|
+
Include this section whenever Signals was searched or considered. This table is
|
|
109
|
+
what lets the user see which keyword lanes produced enough fresh post inventory.
|
|
110
|
+
|
|
111
|
+
| Keyword lane | Timeframe | Posts found | Finalist posts reviewed |
|
|
112
|
+
| ------------ | --------- | ----------- | ----------------------- |
|
|
113
|
+
| ... | ... | ... | ... |
|
|
114
|
+
|
|
115
|
+
## LinkedIn Posts Sampled
|
|
116
|
+
|
|
117
|
+
Include this section whenever Signals was searched or considered. Do not skip or
|
|
118
|
+
discard Signals based only on raw post count or vibes; show the post-level math
|
|
119
|
+
first. This table is the evidence for how many posts to scrape, including
|
|
120
|
+
estimated usable prospects per post. Default to sampling a few promising posts
|
|
121
|
+
first, then state how many more similar posts to add/scrape if the fit rate is
|
|
122
|
+
good but volume is low.
|
|
123
|
+
|
|
124
|
+
| Post | Author / topic | Age | Engagers | Sampled engagers | Good fits | Estimated usable prospects per post | Use / discard |
|
|
125
|
+
| ---- | -------------- | --- | -------- | ---------------- | --------- | ----------------------------------- | ------------- |
|
|
126
|
+
| ... | ... | ... | ... | ... | x/y | ... | ... |
|
|
127
|
+
|
|
100
128
|
## Pros
|
|
101
129
|
|
|
102
130
|
- ...
|
|
@@ -267,10 +267,12 @@ Use first when the value is in conversation opportunity, competitor engagers, co
|
|
|
267
267
|
- Favor ICP-fit conversation density over raw post volume.
|
|
268
268
|
- Capture counts, false-positive patterns, and notable examples.
|
|
269
269
|
- If Signals is materially in the running, do not stop at post-level quality alone.
|
|
270
|
-
- Pick
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
270
|
+
- Pick a few promising posts by default so the user can see real post-level
|
|
271
|
+
evidence. Start with 3-5 fresh, high-density posts when available; if only
|
|
272
|
+
1-2 genuinely strong posts exist, sample those and say the lane needs more
|
|
273
|
+
inventory. If the sampled pass rate is good but the projected pool is below
|
|
274
|
+
target, recommend adding/scraping more similar posts as the expansion lever
|
|
275
|
+
before discarding Signals.
|
|
274
276
|
- 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`.
|
|
275
277
|
- Use headline and display-name cues only for the spot-check sample; do not enrich people during this phase.
|
|
276
278
|
- Base `estimatedReachableLeads` on the sampled engager pass rate, not only on a guessed discount from post themes.
|
|
@@ -284,6 +286,14 @@ Use first when the value is in conversation opportunity, competitor engagers, co
|
|
|
284
286
|
strategy: Signals = warmer, smaller, higher reply upside; Sales Nav/Prospeo =
|
|
285
287
|
more scalable, usually colder or less signal-rich. Recommend the source you
|
|
286
288
|
believe is better, but keep the viable alternate as a real option.
|
|
289
|
+
- When Signals was searched or considered, do not recommend skipping or
|
|
290
|
+
discarding it until the user can see the post-level math. Show a compact
|
|
291
|
+
LinkedIn posts table with the keyword lane, selected/finalist post URL or
|
|
292
|
+
title, post age, engager count, sampled engagers, good fits as `n/N`,
|
|
293
|
+
estimated usable prospects per post, and use/discard decision. This table is
|
|
294
|
+
the evidence for how many posts to scrape; raw post count alone is not enough.
|
|
295
|
+
If the first few posts look good but do not produce enough volume, say how
|
|
296
|
+
many more posts to add/scrape next instead of treating the lane as failed.
|
|
287
297
|
- If you cannot fetch engagers in the current runtime, say the estimate is inferred and lower confidence.
|
|
288
298
|
- 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.
|
|
289
299
|
|