@sellable/mcp 0.1.148 → 0.1.150
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/README.md +8 -4
- package/agents/source-scout-prospeo-contact.md +12 -5
- package/agents/source-scout-sales-nav.md +13 -3
- package/dist/index-dev.js +0 -0
- package/dist/index.js +0 -0
- package/dist/tools/leads.d.ts +5 -1
- package/dist/tools/leads.js +192 -16
- package/dist/tools/prompts.js +3 -3
- package/dist/tools/readiness.js +18 -1
- package/dist/tools/registry.d.ts +2 -1
- package/dist/tools/rows.d.ts +1 -0
- package/dist/tools/rows.js +2 -0
- package/dist/tools/rubrics.js +2 -0
- package/package.json +1 -1
- package/skills/create-campaign/SKILL.md +51 -23
- package/skills/create-campaign/core/providers/apollo.json +4 -2
- package/skills/create-campaign/core/providers/prospeo.json +3 -2
- package/skills/create-campaign/references/provider-selection-strategy.md +66 -25
- package/skills/create-campaign-v2/SKILL.md +56 -21
- package/skills/create-campaign-v2/SOUL.md +11 -7
- package/skills/create-campaign-v2/core/flow.v2.json +54 -33
- package/skills/create-campaign-v2/references/step-13-import-leads.md +15 -7
- package/skills/create-campaign-v2/references/watch-guide-narration.md +11 -9
- package/skills/providers/apollo.md +8 -1
- package/skills/providers/prospeo.md +11 -1
- package/skills/providers/sales-nav.md +1 -1
- package/skills/providers/signal-discovery.md +3 -0
|
@@ -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
|
|
150
|
-
`import_leads` or `confirm_lead_list` until this second approval is
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
@@ -193,16 +218,16 @@ that we are pulling sample engagers from these posts to confirm the ICP is
|
|
|
193
218
|
actually engaging and the source is viable.
|
|
194
219
|
|
|
195
220
|
After the bounded review batch exists, use the same registry pattern for
|
|
196
|
-
post-lead work
|
|
197
|
-
`
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
with MCP tools/assets.
|
|
221
|
+
post-lead work, but do not load that registry or any deep filter/message prompt
|
|
222
|
+
before the filter-choice question. After `confirm_lead_list`, ask add filters
|
|
223
|
+
vs skip filters immediately. Once the user answers, launch the message scout
|
|
224
|
+
from the same campaign/table basis. If the user chooses filters, also launch the
|
|
225
|
+
filter-leads scout, move to Filter Rules, save rubrics, then keep the browser on
|
|
226
|
+
Filter Leads while the message recommendation is reviewed. If the user skips
|
|
227
|
+
filters, move to Messages/message review. Workflow cell execution still waits
|
|
228
|
+
for filter and template approval. AI Generated is an explicit opt-out from the
|
|
229
|
+
template path. If the post-lead agents are absent, the main thread still
|
|
230
|
+
orchestrates the same branches from the compact context with MCP tools/assets.
|
|
206
231
|
|
|
207
232
|
Use rendered Markdown for user review surfaces, not fenced code blocks. Keep
|
|
208
233
|
lines short, use indexed section labels and bullets, and translate internal
|
|
@@ -631,13 +656,16 @@ updates.
|
|
|
631
656
|
call `mcp__sellable__update_campaign({ campaignId, enableICPFilters: true, currentStep: "create-icp-rubric", watchNarration })`
|
|
632
657
|
so the watched app moves to Filter Rules while rubrics are drafted/saved.
|
|
633
658
|
After rubrics save, move the watched app to `apply-icp-rubric` / Filter
|
|
634
|
-
Leads and say the fit rules are saved;
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
659
|
+
Leads and say the fit rules are saved; the background message scout is
|
|
660
|
+
preparing the message recommendation and approval comes next while the
|
|
661
|
+
browser stays on Filter Leads. If filters are skipped, move the watched app to
|
|
662
|
+
Messages/message review and wait for message approval there. After approval,
|
|
663
|
+
save the template to the campaign brief, then queue the bounded review-batch
|
|
664
|
+
`enrichCellId` cells to kick off enrichment/filtering. Move to Messages only
|
|
665
|
+
after at least one review row passes and Generate Message cells are running or
|
|
666
|
+
ready.
|
|
667
|
+
Product Generate Message cells must not run before that template/token
|
|
668
|
+
approval.
|
|
641
669
|
Do not ask the user to approve the brief before shell creation unless they
|
|
642
670
|
explicitly requested a no-write draft; the shell itself is the review surface.
|
|
643
671
|
6. The main thread owns watch navigation. Call
|
|
@@ -21,10 +21,12 @@
|
|
|
21
21
|
"priority": 3,
|
|
22
22
|
"useWhen": [
|
|
23
23
|
"You need technology stack targeting",
|
|
24
|
-
"You need bulk domain list targeting",
|
|
25
24
|
"You need high volume and can accept lower reply rates"
|
|
26
25
|
],
|
|
27
|
-
"avoidWhen": [
|
|
26
|
+
"avoidWhen": [
|
|
27
|
+
"The user supplied a company-domain list; use Prospeo domainFilterId first",
|
|
28
|
+
"High reply rate and LinkedIn activity are the top priority"
|
|
29
|
+
],
|
|
28
30
|
"reason": "Best for scale and firmographic/technographic filters, but lower LinkedIn activity by default.",
|
|
29
31
|
"prose": "Since you need to find **{icp}**, I'd recommend **Apollo**.\n\nHere's why:\n- Apollo has technology filters that other sources don't\n- We can find people at companies using {techStack}\n- Heads up: reply rates will be lower since not all leads are active on LinkedIn\n\nShould I search Apollo for {techStack} users?"
|
|
30
32
|
},
|
|
@@ -21,11 +21,12 @@
|
|
|
21
21
|
"priority": 2,
|
|
22
22
|
"useWhen": [
|
|
23
23
|
"You want Prospeo filters or domain-based search",
|
|
24
|
+
"You need companies hiring for specific roles using job-posting filters",
|
|
24
25
|
"You need high deliverability from Prospeo"
|
|
25
26
|
],
|
|
26
27
|
"avoidWhen": ["You need LinkedIn activity filters"],
|
|
27
|
-
"reason": "Strong for Prospeo-specific filters and domain lists.",
|
|
28
|
-
"prose": "Since you're targeting **{icp}**, I'd recommend **Prospeo**.\n\nHere's why:\n- Prospeo
|
|
28
|
+
"reason": "Strong for hiring-led search, Prospeo-specific filters, verified contacts, and domain lists.",
|
|
29
|
+
"prose": "Since you're targeting **{icp}**, I'd recommend **Prospeo**.\n\nHere's why:\n- Prospeo can filter for companies hiring specific roles with job-posting filters\n- We can pair those company hiring signals with buyer/referrer titles\n- Good for verified-contact coverage when Sales Nav cannot filter by hiring role\n\nShould I search Prospeo for {icp}?"
|
|
29
30
|
},
|
|
30
31
|
"askOption": {
|
|
31
32
|
"label": "Prospeo",
|
|
@@ -53,7 +53,29 @@ Activity Filters (use one or both):
|
|
|
53
53
|
|
|
54
54
|
Sales Nav works without these filters too -- just expect lower reply rates.
|
|
55
55
|
|
|
56
|
-
### 3.
|
|
56
|
+
### 3. Prospeo (HIRING / ACCOUNT / VERIFIED-CONTACT EXPANSION)
|
|
57
|
+
|
|
58
|
+
Prospeo is the main lane when the user's direction points to database filters
|
|
59
|
+
that LinkedIn sources do not expose.
|
|
60
|
+
|
|
61
|
+
USE WHEN:
|
|
62
|
+
|
|
63
|
+
- Hiring-led targeting: companies actively hiring specific roles
|
|
64
|
+
- Named-account or domain-list targeting
|
|
65
|
+
- Broad persona expansion where verified contact coverage matters
|
|
66
|
+
- You need `company_job_posting_hiring_for`,
|
|
67
|
+
`company_job_posting_quantity`, funding, headcount, or domain filters
|
|
68
|
+
|
|
69
|
+
SKIP WHEN:
|
|
70
|
+
|
|
71
|
+
- The campaign is mainly about fresh LinkedIn activity or engagement warmth
|
|
72
|
+
- Signal Discovery can clearly produce enough ICP-fit engagers
|
|
73
|
+
|
|
74
|
+
WHY: Prospeo is the only current provider with company job-posting filters by
|
|
75
|
+
role. Sales Nav is stronger for recent LinkedIn activity, but not for
|
|
76
|
+
hiring-by-role filtering.
|
|
77
|
+
|
|
78
|
+
### 4. Apollo (LAST RESORT FOR VOLUME)
|
|
57
79
|
|
|
58
80
|
Large database but leads may not be active on LinkedIn.
|
|
59
81
|
|
|
@@ -74,25 +96,30 @@ Is your ICP LinkedIn-active (founders, sales, marketing, GTM, engineers)?
|
|
|
74
96
|
NO -> Sales Navigator + POSTED_ON_LINKEDIN (4x reply rates)
|
|
75
97
|
NO -> Sales Navigator (with or without POSTED_ON_LINKEDIN)
|
|
76
98
|
|
|
99
|
+
Need hiring-by-role filters? -> Prospeo (has company job-posting filters)
|
|
77
100
|
Need tech stack targeting? -> Apollo (has technology filters)
|
|
78
|
-
Have specific company names? -> Sales Navigator or
|
|
101
|
+
Have specific company names/domains? -> Sales Navigator for small lists or Prospeo with domainFilterId
|
|
79
102
|
```
|
|
80
103
|
|
|
81
104
|
## ICP-to-Provider Quick Reference
|
|
82
105
|
|
|
83
|
-
| ICP Type | Recommended | Why
|
|
84
|
-
| ------------------------- | ---------------- |
|
|
85
|
-
| Founders, CEOs | Signal Discovery | Highly active on LinkedIn, lots of founder content
|
|
86
|
-
| Sales/GTM leaders | Signal Discovery | Very active, tons of sales content
|
|
87
|
-
| Marketing leaders | Signal Discovery | Active, lots of marketing content
|
|
88
|
-
| Engineers/DevOps | Signal Discovery | Active on tech discussions, open source
|
|
89
|
-
| Enterprise CTOs | Sales Navigator | Less public engagement, use POSTED_ON_LINKEDIN
|
|
90
|
-
| Procurement/Ops | Sales Navigator | Rarely engage publicly
|
|
91
|
-
| Few specific companies | Sales Navigator | Use CURRENT_COMPANY filter (lookup each company)
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
|
|
95
|
-
|
|
106
|
+
| ICP Type | Recommended | Why |
|
|
107
|
+
| ------------------------- | ---------------- | -------------------------------------------------- |
|
|
108
|
+
| Founders, CEOs | Signal Discovery | Highly active on LinkedIn, lots of founder content |
|
|
109
|
+
| Sales/GTM leaders | Signal Discovery | Very active, tons of sales content |
|
|
110
|
+
| Marketing leaders | Signal Discovery | Active, lots of marketing content |
|
|
111
|
+
| Engineers/DevOps | Signal Discovery | Active on tech discussions, open source |
|
|
112
|
+
| Enterprise CTOs | Sales Navigator | Less public engagement, use POSTED_ON_LINKEDIN |
|
|
113
|
+
| Procurement/Ops | Sales Navigator | Rarely engage publicly |
|
|
114
|
+
| Few specific companies | Sales Navigator | Use CURRENT_COMPANY filter (lookup each company) |
|
|
115
|
+
| Hiring-led targeting | Prospeo | Has company job-posting filters by role |
|
|
116
|
+
| Company domain list (ABM) | Prospeo | Uses `domainFilterId` for domain targeting |
|
|
117
|
+
| Tech stack users | Apollo | Has technology filters |
|
|
118
|
+
|
|
119
|
+
**Default:** Try Signal Discovery first only when there is no stronger source
|
|
120
|
+
direction and the ICP is plausibly active in public LinkedIn conversations. Fall
|
|
121
|
+
back to Sales Navigator if ICP is too niche. Use Prospeo first when the ask is
|
|
122
|
+
hiring-led, account/domain-led, or broad verified-contact expansion.
|
|
96
123
|
|
|
97
124
|
## ABM / Account-Based Targeting
|
|
98
125
|
|
|
@@ -103,10 +130,10 @@ When user has a list of target companies:
|
|
|
103
130
|
- Requires looking up each company individually
|
|
104
131
|
- Can combine with POSTED_ON_LINKEDIN for active users
|
|
105
132
|
|
|
106
|
-
- **Many companies (domain list):** Use
|
|
107
|
-
- Supports
|
|
108
|
-
- Example:
|
|
109
|
-
- Trade-off: No POSTED_ON_LINKEDIN equivalent, so
|
|
133
|
+
- **Many companies (domain list):** Use Prospeo with `domainFilterId`
|
|
134
|
+
- Supports large domain filters through `load_csv_domains` or `save_domain_filters`
|
|
135
|
+
- Example: create a domain filter for `stripe.com`, `notion.so`, and `figma.com`, then pass `domainFilterId` into `search_prospeo`
|
|
136
|
+
- Trade-off: No POSTED_ON_LINKEDIN equivalent, so LinkedIn activity warmth may be lower
|
|
110
137
|
|
|
111
138
|
## Recommendation Templates
|
|
112
139
|
|
|
@@ -141,6 +168,19 @@ Here's why:
|
|
|
141
168
|
Should I search for active {icp} on Sales Navigator?
|
|
142
169
|
```
|
|
143
170
|
|
|
171
|
+
**Prospeo (hiring-led ICP):**
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
Since this campaign depends on companies actively hiring for **{roleThemes}**, I'd recommend **Prospeo** first.
|
|
175
|
+
|
|
176
|
+
Here's why:
|
|
177
|
+
- Prospeo can filter companies by open-role themes using job-posting filters
|
|
178
|
+
- We can pair those hiring signals with founder, GTM, recruiting, or revenue-owner contacts
|
|
179
|
+
- Sales Nav is useful for LinkedIn activity and referrals, but it cannot filter companies by hiring role
|
|
180
|
+
|
|
181
|
+
Should I search Prospeo for companies hiring {roleThemes} and the right hiring-owner contacts?
|
|
182
|
+
```
|
|
183
|
+
|
|
144
184
|
**Apollo (tech stack targeting):**
|
|
145
185
|
|
|
146
186
|
```
|
|
@@ -154,17 +194,17 @@ Here's why:
|
|
|
154
194
|
Should I search Apollo for {techStack} users?
|
|
155
195
|
```
|
|
156
196
|
|
|
157
|
-
**
|
|
197
|
+
**Prospeo ABM (company domains):**
|
|
158
198
|
|
|
159
199
|
```
|
|
160
|
-
Since you have a **list of target
|
|
200
|
+
Since you have a **list of target company domains**, I'd recommend **Prospeo** with a domain filter.
|
|
161
201
|
|
|
162
202
|
Here's why:
|
|
163
|
-
-
|
|
203
|
+
- Prospeo is the campaign-default path for supplied company-domain lists
|
|
204
|
+
- We'll create a `domainFilterId` from the CSV or pasted domains before searching
|
|
164
205
|
- We can find decision-makers at your exact target accounts
|
|
165
|
-
- Just share the domains (e.g., stripe.com, notion.so) and I'll find your ICP at those companies
|
|
166
206
|
|
|
167
|
-
Note:
|
|
207
|
+
Note: LinkedIn activity warmth may be lower than Signal Discovery or Sales Nav with POSTED_ON_LINKEDIN, so we should inspect the first review batch before scaling.
|
|
168
208
|
|
|
169
209
|
Can you share your target company domains?
|
|
170
210
|
```
|
|
@@ -179,7 +219,8 @@ Do not hardcode provider options. Build them from the framework:
|
|
|
179
219
|
- If user already has some other list shape that does not fit those CSV paths -> proceed with provider selection
|
|
180
220
|
- If the user specifies a provider or research plan -> treat that as a hard override
|
|
181
221
|
- Else if `providerPreference` override exists -> recommend that provider
|
|
182
|
-
- Else use the decision hierarchy above
|
|
222
|
+
- Else use the decision hierarchy above only when there is no stronger source
|
|
223
|
+
direction (Signal Discovery -> Sales Nav -> Prospeo -> Apollo)
|
|
183
224
|
2. Build options from `providerOrder` and `framework.providers[providerId].askOption`
|
|
184
225
|
3. Mark the recommended option by appending " (Recommended)" if needed
|
|
185
226
|
|
|
@@ -126,6 +126,16 @@ Default source order when the user has not supplied a source:
|
|
|
126
126
|
3. broader Sales Nav role/title filters
|
|
127
127
|
4. Prospeo account/contact expansion
|
|
128
128
|
|
|
129
|
+
Use that order only when the brief has no stronger sourcing constraint. If the
|
|
130
|
+
campaign is hiring-led, asks for companies actively hiring specific roles, asks
|
|
131
|
+
for open-role/job-posting signals, or needs verified contacts at companies with
|
|
132
|
+
those hiring signals, start with Prospeo. Prospeo supports
|
|
133
|
+
`company_job_posting_hiring_for` and `company_job_posting_quantity`; Sales Nav
|
|
134
|
+
does not provide hiring-by-role filters. For those campaigns, Signal Discovery
|
|
135
|
+
can be a conversation-signal check if relevant hiring posts are likely, and
|
|
136
|
+
Sales Nav is a LinkedIn activity/referral fallback rather than the main hiring
|
|
137
|
+
filter.
|
|
138
|
+
|
|
129
139
|
Before any provider prompt, search, source scout, or signal-discovery call,
|
|
130
140
|
show a short source-plan gate and ask for approval. This first approval
|
|
131
141
|
authorizes source scouting/search only. The gate must say, in plain language:
|
|
@@ -162,14 +172,30 @@ the target engager/source-candidate volume, the bounded campaign review-batch
|
|
|
162
172
|
size, the cleanup risk, and the fallback if the selected posts look wrong. The
|
|
163
173
|
approval label must describe the action with the count, such as "Approve
|
|
164
174
|
scraping 3 Signal Discovery posts?" For Sales Nav or Prospeo, the label should
|
|
165
|
-
name the specific search/import lane. Do not call
|
|
166
|
-
`confirm_lead_list` until this second source-action approval
|
|
175
|
+
name the specific search/import lane and source lead count. Do not call
|
|
176
|
+
`import_leads` or `confirm_lead_list` until this second source-action approval
|
|
177
|
+
is granted.
|
|
178
|
+
|
|
179
|
+
For Sales Nav and Prospeo, do not ask to import only the 25-row review batch at
|
|
180
|
+
the source-action gate. First-page samples are for source math: compute sampled
|
|
181
|
+
fit after conservative cleanup, project how many good-fit prospects the raw
|
|
182
|
+
pool can yield, and keep refining filters while the projected good-fit pool is
|
|
183
|
+
below the campaign target (normally about 150+ usable prospects unless the
|
|
184
|
+
campaign/source defaults say otherwise). Once the lane clears the target, ask
|
|
185
|
+
approval to materialize the source list with
|
|
186
|
+
`targetLeadCount = min(rawResultCount, providerMax, ceil(targetGoodFitLeads /
|
|
187
|
+
projectedFitRateAfterCleanup))`. After that source list is ready,
|
|
188
|
+
`confirm_lead_list` imports only the bounded review batch into the campaign
|
|
189
|
+
table for fit and message review.
|
|
190
|
+
|
|
167
191
|
After the user approves this concrete source-action gate, do not show the
|
|
168
192
|
Source Recommendation again and do not ask another source approval question.
|
|
169
193
|
Acknowledge once, then call `import_leads` immediately with the approved source
|
|
170
|
-
math. For
|
|
171
|
-
|
|
172
|
-
|
|
194
|
+
math. For Sales Nav/Prospeo, pass `targetLeadCount` as the approved source-list
|
|
195
|
+
export count, not the review-batch size. For Signal Discovery, pass
|
|
196
|
+
`provider: "signal-discovery"`, `targetEngagerCount`, `maxPostsToScrape`, and
|
|
197
|
+
`confirmed: true`; the tool owns moving the watch UI to source-list progress
|
|
198
|
+
after a lead-list/job id exists.
|
|
173
199
|
|
|
174
200
|
For Signal Discovery, use this compact source-action approval shape after
|
|
175
201
|
selected posts exist:
|
|
@@ -182,7 +208,7 @@ Use Signal Discovery first.
|
|
|
182
208
|
**Good-fit target:** ~150 prospects after cleanup, enrichment, and filters<br>
|
|
183
209
|
**Source-candidate plan:** scrape ~1,000 raw engagers using a conservative 15% fit-rate assumption<br>
|
|
184
210
|
**Planning floor:** continue only when sampled/projected fit is at least 10% after cleanup; below that, switch to Sales Nav recent activity<br>
|
|
185
|
-
**Review checkpoint:**
|
|
211
|
+
**Review checkpoint:** after the source list exists, clone only the bounded review batch into the campaign for fit and message review<br>
|
|
186
212
|
|
|
187
213
|
### Selected posts
|
|
188
214
|
|
|
@@ -203,8 +229,9 @@ This gives enough volume to work toward ~150 good-fit prospects, while
|
|
|
203
229
|
keeping the source tied to people already engaging with Claude Code outbound /
|
|
204
230
|
AI-native sales workflows.
|
|
205
231
|
|
|
206
|
-
**First pass:** build the source list
|
|
207
|
-
batch so we can inspect
|
|
232
|
+
**First pass:** build the source list at the approved source-candidate target,
|
|
233
|
+
then clone only the bounded review batch into the campaign so we can inspect
|
|
234
|
+
fit and messages before sending.
|
|
208
235
|
|
|
209
236
|
**Fallback:** if sampled/projected fit falls below 10%, or if the review batch
|
|
210
237
|
is too vendor-heavy, agency-heavy, or off-ICP, switch to Sales Nav recent
|
|
@@ -214,7 +241,11 @@ activity.
|
|
|
214
241
|
A source recommendation must show concrete evidence: source lane, filters or
|
|
215
242
|
recipe, raw volume, sample size, sampled fits as n/N plus percentage/range,
|
|
216
243
|
estimated usable prospects, cleanup risk, runner-up, and what approval
|
|
217
|
-
authorizes.
|
|
244
|
+
authorizes. For Sales Nav/Prospeo it must also show source export math:
|
|
245
|
+
`rawResultCount`, `sampledFitRate`, conservative projected fit rate,
|
|
246
|
+
`targetLeadCount` for the source list, and projected good-fit count from that
|
|
247
|
+
export. If projected good-fit count is below target, the recommendation is to
|
|
248
|
+
refine or broaden filters, not to import a 25-row batch.
|
|
218
249
|
|
|
219
250
|
Supplied profile CSVs, company/domain CSVs, pasted domains, and existing
|
|
220
251
|
Sellable lead lists are supported, but keep provider mechanics out of the first
|
|
@@ -223,24 +254,28 @@ customer-facing source-choice labels.
|
|
|
223
254
|
## Post-Lead Workstreams
|
|
224
255
|
|
|
225
256
|
After `confirm_lead_list` imports a non-empty bounded review batch and
|
|
226
|
-
`get_rows_minimal({ tableId: workflowTableId })` proves rows exist,
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
the
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
Builder
|
|
236
|
-
|
|
257
|
+
`get_rows_minimal({ tableId: workflowTableId })` proves rows exist, ask the
|
|
258
|
+
filter-choice question immediately. Do not call
|
|
259
|
+
`get_post_find_leads_scout_registry`, load filter/message subskill prompts, or
|
|
260
|
+
spawn post-lead workers before that question. The only customer-facing work
|
|
261
|
+
before the question should be a short review-batch summary and the choice:
|
|
262
|
+
add filters, skip filters, or revise source.
|
|
263
|
+
|
|
264
|
+
If the user chooses filters, then load the post-lead registry/reference needed
|
|
265
|
+
for filtering and start the Lead Fit Builder. Also start the Message Draft
|
|
266
|
+
Builder in the background from the same campaign/table basis as soon as the
|
|
267
|
+
filter-choice answer is known. If the user skips filters, move the watched app to
|
|
268
|
+
Messages and run the Message Draft Builder there. Debug markdown/json artifacts
|
|
269
|
+
are optional only.
|
|
237
270
|
|
|
238
271
|
When the user chooses filters, immediately call
|
|
239
272
|
`update_campaign({ campaignId, enableICPFilters: true, currentStep: "create-icp-rubric", watchNarration })`
|
|
240
273
|
before rubric thinking or branch work. The watched app should move to Filter
|
|
241
274
|
Rules quickly. After `save_rubrics`, the watched app should move to
|
|
242
275
|
`apply-icp-rubric` / Filter Leads so the user can see the saved filters are
|
|
243
|
-
ready
|
|
276
|
+
ready and wait there for the background message agent. Tell the user explicitly
|
|
277
|
+
that a message agent is drafting the first-message template while enrichment,
|
|
278
|
+
filtering, and Generate Message cells remain blocked.
|
|
244
279
|
|
|
245
280
|
Lead Fit Builder persists production rubrics with `save_rubrics` when filters
|
|
246
281
|
are enabled. It must not require `brief.md`, `lead-review.md`, or
|
|
@@ -274,14 +274,18 @@ keep the output numeric but do not claim the source scout was parallel or
|
|
|
274
274
|
surface install status to the customer.
|
|
275
275
|
|
|
276
276
|
For post-lead work, call `get_post_find_leads_scout_registry` after
|
|
277
|
+
the user chooses filters, not before the filter-choice question. After
|
|
277
278
|
`confirm_lead_list` imports a non-empty bounded review batch and
|
|
278
|
-
`get_rows_minimal` proves rows exist
|
|
279
|
-
immediately
|
|
280
|
-
|
|
281
|
-
filters
|
|
282
|
-
|
|
283
|
-
is
|
|
284
|
-
message
|
|
279
|
+
`get_rows_minimal` proves rows exist, ask add-filters vs skip-filters
|
|
280
|
+
immediately. Once the user answers, start `post-find-leads-message-scout` /
|
|
281
|
+
message generation from the same campaign/table basis. If the user chooses
|
|
282
|
+
filters, also start `post-find-leads-filter-scout`, move the browser to Filter
|
|
283
|
+
Rules, save rubrics, then keep the browser on Filter Leads while the message
|
|
284
|
+
recommendation is reviewed. If the user skips filters, move the browser to
|
|
285
|
+
Messages/message review. The join gate is live branch readiness: saved rubrics
|
|
286
|
+
or a resolved skip-filter choice, plus a message recommendation grounded in the
|
|
287
|
+
same campaign/table basis. Enrichment, filtering, and product Generate Message
|
|
288
|
+
cells still wait for template approval.
|
|
285
289
|
|
|
286
290
|
Only promise parallel post-lead work when parallel work actually started. If the
|
|
287
291
|
host cannot or should not launch background branches, say the real sequence:
|