@sellable/mcp 0.1.123 → 0.1.124
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.
|
@@ -50,6 +50,8 @@ currentStep: "signal-discovery" })` before sampling so the watched Signal
|
|
|
50
50
|
7. Compute capacity before recommending the source: target good-fit leads
|
|
51
51
|
(default 500 unless the parent supplies a target), reachable engagers,
|
|
52
52
|
sampled ICP-fit rate as `n/N` plus an easy percentage/range, expected usable
|
|
53
|
+
leads per 100 engagers before and after a conservative dedupe/cleanup
|
|
54
|
+
factor, average reachable engagers per right-content post, expected usable
|
|
53
55
|
leads per right-content post after dedupe/cleanup, and posts needed to hit
|
|
54
56
|
the target.
|
|
55
57
|
8. Select/promote enough right-content posts to plausibly hit the target. If the
|
|
@@ -65,8 +67,10 @@ Return a concise structured result with:
|
|
|
65
67
|
- `selected_posts` with URL/title, author/topic, age, engager count, sampled engagers, good fits as n/N, estimated usable prospects per post, use/discard
|
|
66
68
|
- `sample_leads`, if any
|
|
67
69
|
- `approval_math` with eligible posts, target good-fit leads, sampled engagers,
|
|
68
|
-
ICP-fit rate as `n/N` plus percentage/range,
|
|
69
|
-
|
|
70
|
+
ICP-fit rate as `n/N` plus percentage/range, good-fit prospects per 100
|
|
71
|
+
engagers, average reachable engagers per post, expected usable prospects per
|
|
72
|
+
post after cleanup, posts needed for target, selected post count, expected
|
|
73
|
+
usable lead range, and scale fallback
|
|
70
74
|
- `estimated_good_fit_range`
|
|
71
75
|
- `message_context_strength`, directional and source-specific
|
|
72
76
|
- `false_positive_patterns`
|
|
@@ -82,7 +86,9 @@ Evidence standards:
|
|
|
82
86
|
GTM/outbound/buyer pain, workflow, or role context that makes the campaign
|
|
83
87
|
relevant.
|
|
84
88
|
- Do not make the user infer capacity. Say, plainly, how many eligible posts
|
|
85
|
-
exist,
|
|
86
|
-
|
|
89
|
+
exist, how many sampled engagers looked in-ICP, how many good-fit prospects
|
|
90
|
+
that implies per 100 engagers, how many usable prospects one right-content
|
|
91
|
+
post should yield after cleanup, how many posts are needed for 500+ good-fit
|
|
92
|
+
leads, and which posts you would use.
|
|
87
93
|
- If `fetch_post_engagers` is unavailable or fails, report that explicitly and mark the estimate lower-confidence.
|
|
88
94
|
- Keep LinkedIn Engagement viable when selected posts can produce roughly 150+ ICP-fit warm prospects before final filtering, even if Sales Nav is more scalable.
|
|
@@ -26,8 +26,16 @@ Process:
|
|
|
26
26
|
2. Preserve target role names with `CURRENT_TITLE` lookups; do not rely on seniority alone when the brief names concrete roles.
|
|
27
27
|
3. When `lookup_sales_nav_filter` returns multiple title options, choose the closest semantic title match instead of the first result.
|
|
28
28
|
4. Build a broad-but-reasonable baseline from role/title, geography, company size, industry/account context, and recent LinkedIn activity when relevant.
|
|
29
|
-
5.
|
|
30
|
-
|
|
29
|
+
5. Check scale against the target good-fit lead count (default 500 unless the
|
|
30
|
+
parent supplies a target). If raw preview volume or projected usable volume
|
|
31
|
+
is below target, do not present the tiny result as the scale fallback yet.
|
|
32
|
+
Loosen nonessential filters in order: remove recent-activity first, widen
|
|
33
|
+
adjacent title variants, widen geography/company-size constraints, and only
|
|
34
|
+
keep hard ICP requirements from the brief.
|
|
35
|
+
6. Run the baseline plus 1-2 refinements or loosening passes if the first pass
|
|
36
|
+
is noisy or under-scaled. Label the final pool as constrained if it still
|
|
37
|
+
cannot plausibly reach the target after loosening.
|
|
38
|
+
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.
|
|
31
39
|
|
|
32
40
|
Return a concise structured result with:
|
|
33
41
|
|
|
@@ -36,6 +44,11 @@ Return a concise structured result with:
|
|
|
36
44
|
- `exact_filter_recipe`
|
|
37
45
|
- `lookup_ids_used`
|
|
38
46
|
- `raw_result_count`
|
|
47
|
+
- `scale_check` with target good-fit lead count, preview/raw volume, sampled
|
|
48
|
+
good fits as n/N, projected usable count, and whether the pool can reach the
|
|
49
|
+
target
|
|
50
|
+
- `loosening_attempts` with what was removed or widened when the pool was too
|
|
51
|
+
tight
|
|
39
52
|
- `sampled_people` and good fits as n/N
|
|
40
53
|
- `estimated_good_fit_range_after_cleanup`
|
|
41
54
|
- `expected_acceptance_rate_range`, directional if inferred
|
|
@@ -49,5 +62,9 @@ Evidence standards:
|
|
|
49
62
|
|
|
50
63
|
- Optimize for a useful prospect pool, not max volume at any cost.
|
|
51
64
|
- Bias toward `POSTED_ON_LINKEDIN` for reply-likelihood when the pool still has enough scale.
|
|
65
|
+
- Do not over-tighten fallback filters into a pool that cannot be meaningfully
|
|
66
|
+
larger than the warm-post path. If Sales Nav is offered for scale, it should
|
|
67
|
+
either project to the target good-fit count or clearly say it is too tight and
|
|
68
|
+
name the next broadening/Prospeo option.
|
|
52
69
|
- Do not hand-wave missing filter IDs.
|
|
53
70
|
- If Sales Nav returns a giant unfiltered pool, discard that result and retry with valid filters before recommending it.
|
package/package.json
CHANGED
|
@@ -826,7 +826,9 @@ Required behavior:
|
|
|
826
826
|
2. If Signals does not have enough recent, relevant, ICP-looking engagers,
|
|
827
827
|
switch to Sales Nav with recent activity when the target can be expressed
|
|
828
828
|
as title/persona/company filters. Run preview filters, inspect preview rows,
|
|
829
|
-
validate the filters applied, and estimate scalable-fit volume.
|
|
829
|
+
validate the filters applied, and estimate scalable-fit volume. If the
|
|
830
|
+
preview/projected usable pool is below the target good-fit count, loosen
|
|
831
|
+
nonessential filters before presenting Sales Nav as the scale fallback.
|
|
830
832
|
3. If recent-activity Sales Nav is too small or noisy, broaden to normal Sales
|
|
831
833
|
Nav title + company filters and call out the weaker activity context.
|
|
832
834
|
4. Use Prospeo Contact only when the campaign has a domain/account path, the
|
|
@@ -1025,8 +1027,9 @@ not a research memo. It must include only:
|
|
|
1025
1027
|
activity filters. For Signals, name the selected post set. For Prospeo, name
|
|
1026
1028
|
the account/domain and title recipe.
|
|
1027
1029
|
- `Math:` with these labels and values:
|
|
1028
|
-
`Eligible posts`, `Sample`, `ICP-fit`, `
|
|
1029
|
-
`
|
|
1030
|
+
`Eligible posts`, `Sample`, `ICP-fit`, `Good-fit / 100 engagers`,
|
|
1031
|
+
`Avg engagers/post`, `Good-fit / post`, `Target`, `Posts needed`,
|
|
1032
|
+
`Selected`, `Expected good-fit leads`, and `Scale option`.
|
|
1030
1033
|
- `Why this source:` with at most two bullets.
|
|
1031
1034
|
- `Watch link: {watchUrl}` only when the campaign shell exists and the host
|
|
1032
1035
|
needs a handoff link.
|
|
@@ -1036,14 +1039,20 @@ Do not include keyword-lane tables, LinkedIn-post-sampled tables, sample-lead
|
|
|
1036
1039
|
lists, or long tradeoff prose in the default approval packet. Keep those details
|
|
1037
1040
|
in `lead-review.md` or campaign/source decision state. The math block is the
|
|
1038
1041
|
bottom-line arithmetic that makes the recommendation obvious. For example:
|
|
1039
|
-
`Eligible posts:
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1042
|
+
`Eligible posts: 18 outbound + Claude posts. Sample: 31/125 ICP fits. ICP-fit:
|
|
1043
|
+
~25%, directional. Good-fit / 100 engagers: ~25 before cleanup, ~15-18 after
|
|
1044
|
+
dedupe/cleanup. Avg engagers/post: ~480 reachable. Good-fit / post: ~72-86
|
|
1045
|
+
usable. Target: 500 good-fit leads. Posts needed: about 6-7 right-content posts.
|
|
1046
|
+
Selected: 7 posts. Expected good-fit leads: ~500-600 after dedupe/cleanup. Scale
|
|
1047
|
+
option: Sales Nav can broaden to founder/GTM/RevOps filters if you want colder
|
|
1048
|
+
scale, but loses the engaged-with-this-content message hook.` If the selected
|
|
1049
|
+
posts only support the 15-row review batch or a smaller warm pilot, say that
|
|
1050
|
+
plainly and do not imply the lane can hit 500. For Sales Nav/Prospeo
|
|
1051
|
+
alternatives, include preview/raw volume, sampled usable rows as `n/N` plus
|
|
1052
|
+
percentage/range, estimated usable range, and the warmth or context tradeoff.
|
|
1053
|
+
If Sales Nav preview volume is too tight, broaden nonessential filters before
|
|
1054
|
+
using it as the scale option, or label it constrained and name the next fallback.
|
|
1055
|
+
Do not use percent-only fit rates or unsupported reply-rate claims.
|
|
1047
1056
|
|
|
1048
1057
|
The first sentence of the visible decision must make the actual choice clear:
|
|
1049
1058
|
`I recommend {primary source} using {exact filter/source recipe}. The runner-up
|
|
@@ -1091,12 +1100,14 @@ For Signals, default to a quick capacity test before final recommendation. Pick
|
|
|
1091
1100
|
a narrow first sample of fresh, high-density posts, and in campaign-attached
|
|
1092
1101
|
watch runs promote those posts with `select_promising_posts` before sampling so
|
|
1093
1102
|
the user sees which posts are being tested. Then sample engagers, show ICP-fit
|
|
1094
|
-
rate as `n/N` plus percentage/range,
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1103
|
+
rate as `n/N` plus percentage/range, convert that to good-fit prospects per 100
|
|
1104
|
+
engagers, estimate average reachable engagers per right-content post, apply a
|
|
1105
|
+
conservative dedupe/cleanup factor, calculate good-fit prospects per post, then
|
|
1106
|
+
calculate how many right-content posts are needed to reach the target good-fit
|
|
1107
|
+
lead count. Select/promote enough right-content posts if the lane can hit the
|
|
1108
|
+
target. If the first sample is good but volume is low, say how many more posts
|
|
1109
|
+
would be needed and offer the Sales Nav/Prospeo scale alternative instead of
|
|
1110
|
+
recommending an under-sized source as if it can produce 500+ leads.
|
|
1100
1111
|
|
|
1101
1112
|
Keep discarded paths and full sample rows in the campaign/source decision
|
|
1102
1113
|
context. In explicit debug/UAT runs they may also be copied into
|
|
@@ -525,7 +525,7 @@
|
|
|
525
525
|
"suppliedProfilesOrCsv": "supplied-list",
|
|
526
526
|
"explicitCompare": "compare-requested-sources"
|
|
527
527
|
},
|
|
528
|
-
"quickViabilityRule": "Run only enough of the current lane to decide whether it can supply relevant, reachable ICP-looking leads. For Signals, viability requires sampled ICP-fit rate
|
|
528
|
+
"quickViabilityRule": "Run only enough of the current lane to decide whether it can supply relevant, reachable ICP-looking leads. For Signals, viability requires sampled ICP-fit rate normalized to good-fit prospects per 100 engagers, average reachable engagers per right-content post, projected good-fit prospects per post after cleanup, and posts-needed math against the target good-fit lead count, not raw post count. Stop on the first viable source unless the user asked for comparison.",
|
|
529
529
|
"parallelAllowedOnlyWhen": [
|
|
530
530
|
"user explicitly requested source comparison",
|
|
531
531
|
"resuming already-started parallel scouts",
|
|
@@ -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: 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."
|
|
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, good-fit prospects per 100 engagers, average reachable engagers per right-content post, expected good-fit prospects per post after cleanup, 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, 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."
|
|
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, good-fit prospects per 100 engagers, average reachable engagers per right-content post, expected good-fit prospects per post after cleanup, target good-fit lead count, posts needed, selected posts, expected good-fit range, and scale fallback. For Sales Nav fallback, do not over-tighten filters into a tiny pool; if preview/projected usable volume is below the target, loosen nonessential filters before presenting Sales Nav as the scale option and label it constrained if it still cannot reach the target. 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",
|
|
@@ -720,6 +720,9 @@
|
|
|
720
720
|
"Eligible posts",
|
|
721
721
|
"Sample",
|
|
722
722
|
"ICP-fit",
|
|
723
|
+
"Good-fit / 100 engagers",
|
|
724
|
+
"Avg engagers/post",
|
|
725
|
+
"Good-fit / post",
|
|
723
726
|
"Target",
|
|
724
727
|
"Posts needed",
|
|
725
728
|
"Selected",
|
|
@@ -764,6 +767,10 @@
|
|
|
764
767
|
"reachable engagers count",
|
|
765
768
|
"sampled engagers count",
|
|
766
769
|
"sampled ICP fits as n/N plus percentage or range",
|
|
770
|
+
"good-fit prospects per 100 engagers",
|
|
771
|
+
"average reachable engagers per post",
|
|
772
|
+
"expected good-fit prospects per post after cleanup",
|
|
773
|
+
"dedupe or cleanup factor",
|
|
767
774
|
"target good-fit lead count",
|
|
768
775
|
"posts needed for target",
|
|
769
776
|
"selected posts count",
|
|
@@ -771,6 +778,7 @@
|
|
|
771
778
|
"scale alternative source",
|
|
772
779
|
"scale alternative raw or preview volume",
|
|
773
780
|
"scale alternative sampled usable rows as n/N plus percentage or range",
|
|
781
|
+
"Sales Nav broadening or loosening attempts when fallback volume is too tight",
|
|
774
782
|
"warmth or message-context tradeoff",
|
|
775
783
|
"what to choose if the user wants more volume"
|
|
776
784
|
],
|
|
@@ -794,7 +802,7 @@
|
|
|
794
802
|
"doNotCompressToSummaryOnly": false,
|
|
795
803
|
"doNotRenderArtifactLinksOnly": true,
|
|
796
804
|
"sourceRecommendationReadyWatchRule": "When the source recommendation decision card is ready in chat with counts and sample quality, and before asking for source approval, call update_campaign with leadSourceType `new`, leadSourceProvider set to the recommended primary provider, currentStep set to that provider lane (`sales-nav`, `signal-discovery`, or `prospeo`), and find-leads watchNarration. If the recommendation changed from the lane last sampled, switch the watched provider page to the recommended lane first so the user can inspect what they are approving. Use a headline like `Review the source in Codex`, body copy that says the browser is showing the evaluated source/results, and nextAction like `Approve in Codex`. Do not keep future-tense copy like `I'll show a source recommendation` after the decision is visible. Include a safety note that no leads import until the user approves the source.",
|
|
797
|
-
"chatRenderRule": "Show a compact rendered-Markdown decision card 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 only these sections: Lead source decision, Source recommendation, Math, Why this source, and the concrete approval question. The Math section must include labeled lines for Eligible posts, Sample, ICP-fit, Target, Posts needed, Selected, Expected good-fit leads, and Scale option. Show fit as n/N plus an easy percentage or range, never percent-only. Do not include keyword-lane tables, LinkedIn-post-sampled tables, sample-lead lists, or long tradeoff prose in the default approval packet; keep those details in lead-review.md or campaign/source decision state. Do not forecast connection acceptance rates, reply rates, meetings, pipeline, revenue, or ROI unless the user supplied verified benchmark data for this exact workspace/sender. For Signals, do not recommend from raw post count. Compute eligible right-content posts, reachable engagers, sampled ICP-fit rate, target good-fit lead count, posts needed, selected posts, expected good-fit range, and scale fallback. If the user wants more volume than the warm post-engagement estimate, explicitly say which Sales Nav or Prospeo alternative provides that volume and what message-context warmth is lost. If no engagers could be fetched, say that explicitly and lower confidence. Do not show plain filesystem paths unless links cannot be created."
|
|
805
|
+
"chatRenderRule": "Show a compact rendered-Markdown decision card 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 only these sections: Lead source decision, Source recommendation, Math, Why this source, and the concrete approval question. The Math section must include labeled lines for Eligible posts, Sample, ICP-fit, Good-fit / 100 engagers, Avg engagers/post, Good-fit / post, Target, Posts needed, Selected, Expected good-fit leads, and Scale option. Show fit as n/N plus an easy percentage or range, never percent-only. Do not include keyword-lane tables, LinkedIn-post-sampled tables, sample-lead lists, or long tradeoff prose in the default approval packet; keep those details in lead-review.md or campaign/source decision state. Do not forecast connection acceptance rates, reply rates, meetings, pipeline, revenue, or ROI unless the user supplied verified benchmark data for this exact workspace/sender. For Signals, do not recommend from raw post count. Compute eligible right-content posts, reachable engagers, sampled ICP-fit rate, good-fit prospects per 100 engagers, average reachable engagers per right-content post, expected good-fit prospects per post after cleanup, target good-fit lead count, posts needed, selected posts, expected good-fit range, and scale fallback. If the selected warm posts only support a review batch or smaller pilot, say they do not hit 500 instead of calling them scalable. If the user wants more volume than the warm post-engagement estimate, explicitly say which Sales Nav or Prospeo alternative provides that volume and what message-context warmth is lost; Sales Nav must be broadened/loosened before it is presented as the scale option if the initial filter pool is too tight. If no engagers could be fetched, say that explicitly and lower confidence. Do not show plain filesystem paths unless links cannot be created."
|
|
798
806
|
},
|
|
799
807
|
{
|
|
800
808
|
"action": "render_post_lead_parallel_progress",
|
|
@@ -816,7 +824,7 @@
|
|
|
816
824
|
{
|
|
817
825
|
"action": "ask_continue_revise_or_confirm_only_if_needed",
|
|
818
826
|
"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'.",
|
|
819
|
-
"approvalMathRule": "Immediately above the approval question, render the compact Math block: given this many eligible relevant posts, this many reachable engagers, this sampled ICP fit as n/N plus percentage/range, this target good-fit lead count, and this many posts needed, we expect this usable lead range from the selected posts; if the user wants more volume, name the Sales Nav or Prospeo alternative, its preview/sample math, and the colder/weaker-context tradeoff. Do not ask the approval question until this math is visible.",
|
|
827
|
+
"approvalMathRule": "Immediately above the approval question, render the compact Math block: given this many eligible relevant posts, this many reachable engagers, this sampled ICP fit as n/N plus percentage/range, this many good-fit prospects per 100 engagers, this average reachable engagers per post, this expected good-fit prospects per post after cleanup, this target good-fit lead count, and this many posts needed, we expect this usable lead range from the selected posts; if the user wants more volume, name the Sales Nav or Prospeo alternative, its preview/sample math, any Sales Nav loosening used to avoid an over-tight pool, and the colder/weaker-context tradeoff. Do not ask the approval question until this math is visible.",
|
|
820
828
|
"autoContinueWhen": {
|
|
821
829
|
"status": "confirmed",
|
|
822
830
|
"confidenceIn": [
|
|
@@ -89,6 +89,16 @@ You must estimate:
|
|
|
89
89
|
- how many sampled people matched the rough headline rubric
|
|
90
90
|
- `passRate`
|
|
91
91
|
- sampled pass rate used for extrapolation
|
|
92
|
+
- `goodFitPer100Engagers`
|
|
93
|
+
- normalized fit rate as good-fit prospects per 100 engagers, before and
|
|
94
|
+
after a conservative dedupe/cleanup factor
|
|
95
|
+
- `avgReachableEngagersPerPost`
|
|
96
|
+
- average reachable engagers per right-content post used for capacity math
|
|
97
|
+
- `goodFitProspectsPerPost`
|
|
98
|
+
- expected good-fit prospects per right-content post after dedupe/cleanup
|
|
99
|
+
- `postsNeededForTarget`
|
|
100
|
+
- number of right-content posts needed to reach the target good-fit lead
|
|
101
|
+
count, defaulting to 500 unless the campaign says otherwise
|
|
92
102
|
- `projectedRange`
|
|
93
103
|
- the conservative range implied by the observed sample
|
|
94
104
|
|
|
@@ -112,7 +122,7 @@ Use conservative logic:
|
|
|
112
122
|
- stale posts
|
|
113
123
|
- adjacent communities that are not actual buyers
|
|
114
124
|
4. Explain the pass-through briefly and explicitly:
|
|
115
|
-
- preferred: "`sampledCount`: 40, `passCount`: 9, `passRate`: ~22%, `recentStrongPostCount`: 15-25, `freshEnoughPostCount`: 8-12, `
|
|
125
|
+
- preferred: "`sampledCount`: 40, `passCount`: 9, `passRate`: ~22%, `goodFitPer100Engagers`: ~22 before cleanup / ~13-16 after cleanup, `avgReachableEngagersPerPost`: 240, `goodFitProspectsPerPost`: ~31-38, `postsNeededForTarget`: ~14-17, `recentStrongPostCount`: 15-25, `freshEnoughPostCount`: 8-12, `projectedRange`: 210-600"
|
|
116
126
|
- fallback: "I could not fetch engagers, so this is inferred from post and author quality only"
|
|
117
127
|
5. If the evidence is too weak, say so and return a low-confidence estimate instead of pretending precision.
|
|
118
128
|
6. Do not manually enumerate dozens of engagers in the final answer. Summarize the sample by `sampledCount`, `passCount`, `passRate`, `projectedRange`, and 3-6 representative examples.
|
|
@@ -368,6 +378,8 @@ recommendation, estimate source capacity from real sample math:
|
|
|
368
378
|
- eligible right-content posts by lane/content type
|
|
369
379
|
- reachable engagers from those posts
|
|
370
380
|
- sampled ICP-fit rate as `n/N` plus an easy percentage/range
|
|
381
|
+
- good-fit prospects per 100 engagers before and after conservative cleanup
|
|
382
|
+
- average reachable engagers per right-content post
|
|
371
383
|
- expected good-fit leads per selected post after dedupe/cleanup
|
|
372
384
|
- posts needed to reach the target
|
|
373
385
|
|