@sellable/mcp 0.1.205 → 0.1.207
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 +22 -20
- package/agents/post-find-leads-filter-scout.md +2 -2
- package/agents/post-find-leads-message-scout.md +39 -23
- package/agents/registry.json +17 -17
- package/agents/source-scout-linkedin-engagement.md +2 -2
- package/agents/source-scout-prospeo-contact.md +3 -3
- package/agents/source-scout-sales-nav.md +3 -3
- package/dist/engage-memory.js +5 -0
- package/dist/identity-memory.js +4 -0
- package/dist/index-dev.js +0 -0
- package/dist/index.js +0 -0
- package/dist/tools/engage-memory.js +2 -2
- package/dist/tools/leads.js +7 -11
- package/dist/tools/prompts.js +10 -10
- package/package.json +1 -1
- package/skills/create-campaign/SKILL.md +43 -21
- package/skills/create-campaign/context/learnings.md +1 -1
- package/skills/create-campaign/references/brief-template.md +2 -2
- package/skills/create-campaign-brief/references/brief-template.md +2 -2
- package/skills/create-campaign-brief/references/draft-lifecycle.md +1 -1
- package/skills/create-campaign-brief/references/examples/briefs/gelee.md +2 -2
- package/skills/create-campaign-brief/references/examples/briefs/superpower.md +28 -41
- package/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md +9 -12
- package/skills/create-campaign-v2/SKILL.md +102 -105
- package/skills/create-campaign-v2/SOUL.md +28 -23
- package/skills/create-campaign-v2/core/flow.v2.json +1 -1
- package/skills/create-campaign-v2/references/ai-tells.md +10 -35
- package/skills/create-campaign-v2/references/approval-gate-framing.md +3 -3
- package/skills/create-campaign-v2/references/gold-standard-message-examples.md +16 -30
- package/skills/create-campaign-v2/references/gold-standard-message-patterns.md +1 -1
- package/skills/create-campaign-v2/references/step-13-import-leads.md +2 -2
- package/skills/create-campaign-v2/references/thomas-revision-filters.md +3 -12
- package/skills/create-campaign-v2/references/validation-criteria.md +5 -8
- package/skills/create-campaign-v2/references/watch-guide-narration.md +2 -2
- package/skills/create-campaign-v2-tail/SKILL.md +9 -9
- package/skills/create-campaign-v2-validation/SKILL.md +1 -1
- package/skills/create-post/SKILL.md +27 -27
- package/skills/engage/SKILL.md +12 -12
- package/skills/engage/core/README.md +14 -14
- package/skills/find-leads/SKILL.md +1 -1
- package/skills/generate-messages/SKILL.md +75 -175
- package/skills/interview/SKILL.md +24 -24
- package/skills/interview/references/legacy-linkedin-interview.md +12 -12
- package/skills/interview/references/reference-curation.md +4 -4
- package/skills/interview/references/voice-capture-method.md +1 -1
- package/skills/load-voice/SKILL.md +25 -21
- package/skills/providers/signal-discovery.md +2 -2
- package/skills/research/SKILL.md +1 -1
- package/skills/create-campaign-v2/references/gold-standard-runtime-message-pack.md +0 -252
- package/skills/research/config.json +0 -9
|
@@ -21,34 +21,26 @@ validate-sample tool:
|
|
|
21
21
|
get_subskill_prompt({ subskillName: "create-campaign-v2-tail" })
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
CampaignOffer state and the watch link are canonical. Resume, gating, and
|
|
25
|
-
read campaign state first: `campaignId`, `watchUrl`, `campaignBrief`,
|
|
26
|
-
`currentStep`, source/search
|
|
27
|
-
`
|
|
28
|
-
`
|
|
29
|
-
debug-only; do not create, link, or surface them in normal runs.
|
|
24
|
+
CampaignOffer state and the watch link are canonical. Resume, gating, and
|
|
25
|
+
handoff read campaign state first: `campaignId`, `watchUrl`, `campaignBrief`,
|
|
26
|
+
`currentStep`, source/search IDs, `selectedLeadListId`, `workflowTableId`,
|
|
27
|
+
`leadScoringRubrics`, `approvedMessageTemplate`, `senderIds`,
|
|
28
|
+
`sequenceTemplate`, and running state. Local draft files are debug-only.
|
|
30
29
|
|
|
31
30
|
## Normal Flow
|
|
32
31
|
|
|
33
|
-
There is no normal approval-packet.
|
|
34
|
-
Legacy commit-gate/atomic-mint is only in create-campaign-v2-validation.
|
|
35
|
-
|
|
36
32
|
1. Bootstrap and tell the user the active Sellable workspace.
|
|
37
33
|
2. Resolve the client/company before strategy questions.
|
|
38
34
|
3. Research the client/company and current offer enough to draft a concrete brief.
|
|
39
35
|
4. Create the watchable campaign shell with `create_campaign` and the v1 brief.
|
|
40
36
|
5. Surface the direct watch link once before brief approval.
|
|
41
|
-
6.
|
|
42
|
-
7. Materialize the
|
|
43
|
-
filter/message setup; do not present that as source sampling.
|
|
37
|
+
6. Approve the Find Buyers Plan, then approve Start Import.
|
|
38
|
+
7. Materialize the source list and confirm 15 campaign-table rows for setup.
|
|
44
39
|
8. Ask whether to use filters or skip them.
|
|
45
|
-
9. Persist
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
12. Sync the approved template into the brief, then queue bounded filtering.
|
|
50
|
-
13. After one row passes with a generated message, review it, then hand off to
|
|
51
|
-
Settings, sender, sequence, and launch.
|
|
40
|
+
9. Persist rubrics, approve saved criteria, then move to Filter Leads.
|
|
41
|
+
10. Review and approve/revise the message template.
|
|
42
|
+
11. Sync the approved template into the brief, then queue bounded filtering.
|
|
43
|
+
12. After one generated pass, review it, then hand off to Settings and launch.
|
|
52
44
|
|
|
53
45
|
## Identity-First Campaign Setup
|
|
54
46
|
|
|
@@ -68,12 +60,10 @@ messages, and wait for final launch approval.
|
|
|
68
60
|
What's your LinkedIn profile URL or handle?
|
|
69
61
|
```
|
|
70
62
|
|
|
71
|
-
Require a LinkedIn profile URL
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
`
|
|
75
|
-
lightweight profile lookup before strategy questions, then invite
|
|
76
|
-
corrections.
|
|
63
|
+
Require a LinkedIn profile URL/handle before setup continues. Normalize
|
|
64
|
+
handles like `@csreyes92` to `https://www.linkedin.com/in/{handle}/`; otherwise
|
|
65
|
+
ask again. Retain it as `senderLinkedinUrl` or resolve `clientProspectId` for
|
|
66
|
+
`create_campaign`. Run one lightweight profile lookup before strategy questions.
|
|
77
67
|
|
|
78
68
|
Restore the full setup intake before the brief. Ask bounded choices for:
|
|
79
69
|
|
|
@@ -84,22 +74,21 @@ Restore the full setup intake before the brief. Ask bounded choices for:
|
|
|
84
74
|
- prospect source: "How should we find prospects?" with "Find prospects for me",
|
|
85
75
|
"Use a CSV of LinkedIn profiles", and "Use a CSV of company domains"
|
|
86
76
|
|
|
87
|
-
If setup choices were supplied and questions skipped,
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
recommendation; you can replace it with your current offer."
|
|
77
|
+
If setup choices were supplied and questions skipped, state before the brief
|
|
78
|
+
that the LinkedIn input was normalized and the offer path came from supplied or
|
|
79
|
+
researched direction.
|
|
91
80
|
|
|
92
|
-
Do not call `list_senders`, infer
|
|
93
|
-
|
|
94
|
-
|
|
81
|
+
Do not call `list_senders`, infer from connected senders, or show a sender
|
|
82
|
+
picker during setup. Sender availability belongs only to Settings after message
|
|
83
|
+
approval and campaign setup validation.
|
|
95
84
|
|
|
96
85
|
Use `research-sender`, call `complete_sender_research` before shell creation,
|
|
97
86
|
and carry proof gaps into the brief.
|
|
98
87
|
|
|
99
88
|
## Brief Provenance
|
|
100
89
|
|
|
101
|
-
When rendering the first brief, do not add bracketed inline source tags
|
|
102
|
-
|
|
90
|
+
When rendering the first brief, do not add bracketed inline source tags. Start
|
|
91
|
+
with one short provenance line:
|
|
103
92
|
|
|
104
93
|
```text
|
|
105
94
|
This brief is based on Sellable's research and your answers.
|
|
@@ -120,9 +109,9 @@ keep it as non-final bullets and say: "This is not the message yet; I will write
|
|
|
120
109
|
real examples after we find and filter leads."
|
|
121
110
|
|
|
122
111
|
Keep brief approval positive: no "does not approve..." list. The first brief
|
|
123
|
-
must be visible exactly once before
|
|
124
|
-
|
|
125
|
-
|
|
112
|
+
must be visible exactly once before approval. If rendered before
|
|
113
|
+
`create_campaign`, do not render it again after shell creation; append the one
|
|
114
|
+
watch-link handoff, then ask approve/revise.
|
|
126
115
|
|
|
127
116
|
## YOLO Mode
|
|
128
117
|
|
|
@@ -143,7 +132,7 @@ Use the host-native structured question gate (`request_user_input` or
|
|
|
143
132
|
AskUserQuestion) only for bounded choices:
|
|
144
133
|
|
|
145
134
|
- target, offer, credibility, and prospect-source setup choices after research
|
|
146
|
-
-
|
|
135
|
+
- Find Buyers Plan, Start Import, or source revision
|
|
147
136
|
- use filters vs skip filters
|
|
148
137
|
- approve message vs revise message
|
|
149
138
|
- sender/sequence/launch choices at Settings
|
|
@@ -155,8 +144,8 @@ when a bounded choice needs an escape hatch.
|
|
|
155
144
|
## Watch Link And Narration
|
|
156
145
|
|
|
157
146
|
Create the shell before lead import so the user can watch. When
|
|
158
|
-
`create_campaign` returns `watchUrl`, print that exact value once
|
|
159
|
-
|
|
147
|
+
`create_campaign` returns `watchUrl`, print that exact value once before brief
|
|
148
|
+
approval. It must be a direct
|
|
160
149
|
`/campaign-builder/{campaignId}?mode={claude|codex}` URL with `workspaceId` and
|
|
161
150
|
`token`; never derive, shorten, reconstruct, or print a bare campaign URL. If
|
|
162
151
|
missing/broken, recover with `create_campaign({ campaignId })` or `get_campaign`
|
|
@@ -189,9 +178,8 @@ when not hiring-led. For hiring-by-role signals, start with Prospeo because
|
|
|
189
178
|
|
|
190
179
|
Before any provider prompt/search/scout call, move the watched campaign to
|
|
191
180
|
source selection, show `## Find Buyers Plan`, then open `request_user_input`
|
|
192
|
-
without repeating the URL. The plan must appear before the question
|
|
193
|
-
|
|
194
|
-
add anyone yet. Write:
|
|
181
|
+
without repeating the URL. The plan must appear before the question and only
|
|
182
|
+
authorizes where to look; it does not add anyone yet. Write:
|
|
195
183
|
|
|
196
184
|
- the buyer groups or places we could check
|
|
197
185
|
- the best place to start
|
|
@@ -207,30 +195,29 @@ scouting", or "not importing leads" in customer-facing copy.
|
|
|
207
195
|
Terms: buyers=market; people to check=raw reactions/comments; prospects=likely
|
|
208
196
|
after fit; leads=rows.
|
|
209
197
|
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
"
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
`search_sales_nav`, `search_prospeo`, `fetch_post_engagers`, or provider
|
|
219
|
-
subagents until approved.
|
|
198
|
+
Make the recommendation campaign-specific. If LinkedIn engagement is
|
|
199
|
+
recommended, name exact post themes in plain language. Avoid chat terms "Signal
|
|
200
|
+
Discovery", "lead-source scouting", "source scouting", "lane", "provider",
|
|
201
|
+
"precision/scale tradeoff", "evidence quality", "pilot volume", "workflow
|
|
202
|
+
pain", or "ICP". Only the approval question after that visible plan, or an
|
|
203
|
+
explicit post-plan source choice, satisfies this gate. Do not ask a second
|
|
204
|
+
source-plan question or call `search_signals`, `search_sales_nav`,
|
|
205
|
+
`search_prospeo`, `fetch_post_engagers`, or provider subagents until approved.
|
|
220
206
|
Only then persist `leadSourceType`, `leadSourceProvider`, and provider `currentStep`.
|
|
221
207
|
|
|
222
|
-
Call `get_source_scout_registry` before source scouting.
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
208
|
+
Call `get_source_scout_registry` before source scouting. After Find Buyers Plan
|
|
209
|
+
approval, source scouting is agent-first. Launch the approved returned source
|
|
210
|
+
scout; YOLO/autonomous mode counts as permission. For LinkedIn posts, launch
|
|
211
|
+
`source-scout-linkedin-engagement` even as a single lane; use Sales Nav/Prospeo
|
|
212
|
+
scouts for those lanes. Use multiple scouts only for comparison/fallback. If a
|
|
213
|
+
named scout is unavailable, use a generic `gpt-5.5` high background agent.
|
|
214
|
+
Parent source MCP calls require impossible agent launch or approved inline
|
|
215
|
+
fallback. Each scout loads its own provider prompt.
|
|
216
|
+
Use a 10% planning floor after cleanup. If LinkedIn engagement falls below it,
|
|
217
|
+
move to Sales Nav, then Prospeo. If Prospeo also falls below 10%, tighten the
|
|
218
|
+
ICP/source direction instead of inventing another provider.
|
|
219
|
+
|
|
220
|
+
After scouting, show a second approval gate for Start Import.
|
|
234
221
|
For LinkedIn engagement (`signal-discovery` internally), use plain language:
|
|
235
222
|
selected posts, people we can check, likely prospects, what the first
|
|
236
223
|
review will inspect, cleanup risk, and fallback. Label the approval like
|
|
@@ -241,16 +228,14 @@ Prospeo, name the specific search/import path and source lead count. Do not call
|
|
|
241
228
|
`import_leads` or `confirm_lead_list` until this gate is approved.
|
|
242
229
|
|
|
243
230
|
For Sales Nav and Prospeo, do not ask to import only the internal 15-row
|
|
244
|
-
campaign-table execution slice at
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
`
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
After the user approves this concrete source-action gate, do not show the
|
|
253
|
-
Source Recommendation again or ask another source approval question.
|
|
231
|
+
campaign-table execution slice at Start Import. First-page samples are source
|
|
232
|
+
math. Once the path clears, ask approval for a source list with
|
|
233
|
+
`targetLeadCount` around 1,000 contacts by default. Then
|
|
234
|
+
`confirm_lead_list({ reviewBatchLimit: 15 })` copies rows into the campaign
|
|
235
|
+
table and returns execution-slice row ids for filter/message setup.
|
|
236
|
+
|
|
237
|
+
After the user approves this Start Import gate, do not show the
|
|
238
|
+
Source Recommendation again or ask another Start Import question.
|
|
254
239
|
Acknowledge once, then call `import_leads` immediately with the approved source
|
|
255
240
|
math. For Sales Nav/Prospeo, pass `targetLeadCount` as the approved source-list
|
|
256
241
|
export count, not the campaign execution-slice size. For Signal Discovery, pass
|
|
@@ -261,39 +246,37 @@ After `import_leads`, poll `wait_for_lead_list_ready` until ready, failed, or
|
|
|
261
246
|
cancelled. Rows appearing is not enough for `confirm_lead_list`; use
|
|
262
247
|
`allowPartialSourceList: true` only when the user explicitly asks to continue early.
|
|
263
248
|
|
|
264
|
-
For LinkedIn engagement, the
|
|
249
|
+
For LinkedIn engagement, the Start Import approval uses `## Source
|
|
265
250
|
Recommendation`, plain language, selected posts, people to check, likely
|
|
266
251
|
prospects, cleanup risk, fallback, and the first 15-lead review.
|
|
267
252
|
|
|
268
|
-
A source recommendation must show
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
refine or broaden filters, not to run the internal campaign-table execution slice
|
|
276
|
-
as if it were source sampling.
|
|
253
|
+
A source recommendation must show source path, filters/recipe, raw volume,
|
|
254
|
+
sample size, sampled fits as n/N plus percentage/range, estimated usable
|
|
255
|
+
prospects, cleanup risk, runner-up, and post-approval action. Sales
|
|
256
|
+
Nav/Prospeo also show `rawResultCount`, `sampledFitRate`, conservative
|
|
257
|
+
projected fit rate, `targetLeadCount` for the source list, and projected
|
|
258
|
+
good-fit count from that export. If below target, refine/broaden filters, not
|
|
259
|
+
run the internal campaign-table execution slice as if it were source sampling.
|
|
277
260
|
|
|
278
261
|
Supplied profile CSVs, company/domain CSVs, pasted domains, and existing
|
|
279
262
|
Sellable lead lists are supported, but keep provider mechanics out of the first
|
|
280
263
|
customer-facing source-choice labels.
|
|
281
264
|
|
|
282
|
-
##
|
|
265
|
+
## Prospect Setup Workstreams
|
|
283
266
|
|
|
284
|
-
After `confirm_lead_list` copies a non-empty
|
|
285
|
-
|
|
286
|
-
|
|
267
|
+
After `confirm_lead_list` copies a non-empty source into the campaign and
|
|
268
|
+
records the compact review batch, ask the filter-choice question immediately.
|
|
269
|
+
Do not call
|
|
287
270
|
`get_post_find_leads_scout_registry`, load filter/message subskill prompts, or
|
|
288
|
-
spawn
|
|
289
|
-
before the question should be a short
|
|
271
|
+
spawn Prospect Filters / Message Drafting before that question. The only
|
|
272
|
+
customer-facing work before the question should be a short setup summary and the choice:
|
|
290
273
|
add filters, skip filters, or revise source. Do not include another watch link
|
|
291
274
|
in this summary; the existing app view updates through campaign state.
|
|
292
275
|
|
|
293
|
-
If the user chooses filters, load the
|
|
294
|
-
filtering and start
|
|
295
|
-
|
|
296
|
-
|
|
276
|
+
If the user chooses filters, load the prospect-setup registry/reference needed
|
|
277
|
+
for filtering and start Prospect Filters. Also start Message Drafting from the
|
|
278
|
+
same campaign/table basis once filter-choice is known. If filters are skipped,
|
|
279
|
+
move the watched app to Messages and run Message Drafting there.
|
|
297
280
|
Debug markdown/json artifacts are optional only.
|
|
298
281
|
|
|
299
282
|
When the user chooses filters, immediately call
|
|
@@ -301,25 +284,39 @@ When the user chooses filters, immediately call
|
|
|
301
284
|
before rubric thinking or branch work. After `save_rubrics`, keep Filter Rules
|
|
302
285
|
visible so the user can approve saved criteria. Only after approval should
|
|
303
286
|
`update_campaign` move to `apply-icp-rubric` / Filter Leads and show
|
|
304
|
-
`Filters saved + waiting for message approval` until the template is approved.
|
|
305
|
-
queue enrichment/filtering/Generate Message cells until message
|
|
306
|
-
the user
|
|
287
|
+
`Filters saved + waiting for message approval` until the template is approved.
|
|
288
|
+
Do not queue enrichment/filtering/Generate Message cells until message
|
|
289
|
+
approval. Tell the user Message Drafting is preparing the template in the
|
|
290
|
+
background.
|
|
307
291
|
|
|
308
|
-
|
|
292
|
+
Prospect Filters persists production rubrics with `save_rubrics` when filters
|
|
309
293
|
are enabled. It must not require `brief.md`, `lead-review.md`, or
|
|
310
294
|
`lead-sample.json`.
|
|
311
295
|
|
|
312
|
-
Run `post-find-leads-message-scout` as
|
|
313
|
-
|
|
296
|
+
Run compatibility agent `post-find-leads-message-scout` as Message Drafting
|
|
297
|
+
when allowed. Keep the long prompt and refs there.
|
|
298
|
+
|
|
299
|
+
Codex: YOLO counts as campaign bg-agent permission. If no permission, ask once
|
|
300
|
+
after filter choice. Use generic `gpt-5.5` / `xhigh` if needed. Never draft in
|
|
301
|
+
parent silently.
|
|
302
|
+
|
|
303
|
+
If the user critiques or edits the template before `approve-message`, route the
|
|
304
|
+
feedback back to Message Drafting with current `messageDraftRecommendation`,
|
|
305
|
+
basis token, campaign/table basis, and latest user text. Do not rewrite copy in
|
|
306
|
+
the parent or call `update_campaign_brief`. Message Drafting must load/use
|
|
307
|
+
`generate-messages` and return a revised `messageDraftRecommendation`; parent
|
|
308
|
+
renders it and asks approval.
|
|
309
|
+
|
|
310
|
+
Load:
|
|
314
311
|
|
|
315
312
|
```text
|
|
316
313
|
get_subskill_prompt({ subskillName: "generate-messages" })
|
|
317
314
|
```
|
|
318
315
|
|
|
319
|
-
Do not use any alternate or examples-only message prompt.
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
316
|
+
Do not use any alternate or examples-only message prompt. Do not render message
|
|
317
|
+
review until `messageDraftRecommendation` proves current campaign/table basis
|
|
318
|
+
and shows whether it came from a background branch or an explicitly approved
|
|
319
|
+
inline fallback.
|
|
323
320
|
|
|
324
321
|
## Hard Gates
|
|
325
322
|
|
|
@@ -256,8 +256,7 @@ Customer-facing source-plan copy must avoid "lane", "provider",
|
|
|
256
256
|
"pilot volume", "workflow pain", and "ICP". Use "buyers" for the target market,
|
|
257
257
|
"people to check" for raw reactions/comments, "prospects" after fit looks
|
|
258
258
|
usable, and "leads" for campaign rows. Second, after the source evidence exists, show
|
|
259
|
-
counts, samples, fit math, cleanup risk, and ask for
|
|
260
|
-
import.
|
|
259
|
+
counts, samples, fit math, cleanup risk, and ask for Start Import approval.
|
|
261
260
|
|
|
262
261
|
For LinkedIn engagement, the second gate is not "approve source" in the abstract.
|
|
263
262
|
It is a concrete scrape approval: show a compact `## Source Recommendation`
|
|
@@ -276,15 +275,13 @@ gate; tell the customer what happens next instead.
|
|
|
276
275
|
|
|
277
276
|
## Parallelism + Naming
|
|
278
277
|
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
right titles from a broader LinkedIn search, then a broader company and contact
|
|
287
|
-
search.
|
|
278
|
+
After the Find Buyers Plan is approved, source selection is agent-first. Launch
|
|
279
|
+
the approved named source scout when exposed; YOLO/autonomous mode counts as
|
|
280
|
+
permission. A single LinkedIn-post lane still uses
|
|
281
|
+
`source-scout-linkedin-engagement`, not parent `search_signals`. Only try a
|
|
282
|
+
fallback after the current place fails, the user asks for comparison, or the
|
|
283
|
+
first place is borderline. Keep fallback copy plain: people talking on LinkedIn,
|
|
284
|
+
recent LinkedIn titles, broader LinkedIn titles, then company/contact search.
|
|
288
285
|
Use a 10% planning floor after conservative cleanup. If LinkedIn engagement falls
|
|
289
286
|
below that floor, move to Sales Nav. If Sales Nav falls below that floor after
|
|
290
287
|
reasonable refinement, move to Prospeo. Prospeo is the terminal fallback; if it
|
|
@@ -297,18 +294,21 @@ returned canonical `name` values. In Codex or Claude Code, launch multiple named
|
|
|
297
294
|
source scouts in the same turn only when the user explicitly requested source
|
|
298
295
|
comparison, a prior lane failed, or the active flow marks the first lane as
|
|
299
296
|
borderline. The parent thread should not fetch every provider prompt first; each
|
|
300
|
-
scout loads only its matching provider prompt. If
|
|
301
|
-
|
|
302
|
-
|
|
297
|
+
scout loads only its matching provider prompt. If the named scout is unavailable,
|
|
298
|
+
use a generic `gpt-5.5` high background agent when possible. Parent source MCP
|
|
299
|
+
calls are allowed only when agent launch is impossible or the user approves
|
|
300
|
+
inline fallback. If inline, keep output numeric, do not claim a scout ran, and
|
|
301
|
+
do not surface install status.
|
|
303
302
|
|
|
304
|
-
For
|
|
303
|
+
For prospect setup work, call `get_post_find_leads_scout_registry` after
|
|
305
304
|
the user chooses filters, not before the filter-choice question. After
|
|
306
305
|
`confirm_lead_list` copies source rows and records the first review/process
|
|
307
306
|
sample, ask add-filters vs skip-filters
|
|
308
|
-
immediately. Once the user answers, start
|
|
309
|
-
message
|
|
310
|
-
filters, also start
|
|
311
|
-
|
|
307
|
+
immediately. Once the user answers, start Message Drafting via
|
|
308
|
+
`post-find-leads-message-scout` from the same campaign/table basis. If the user
|
|
309
|
+
chooses filters, also start Prospect Filters via
|
|
310
|
+
`post-find-leads-filter-scout`, move the browser to Filter Rules, save rubrics,
|
|
311
|
+
then ask for filter approval. After approval, keep the
|
|
312
312
|
browser on Filter Leads and show `Filters saved + waiting for message approval`
|
|
313
313
|
while the message recommendation is reviewed. If the user skips filters, move
|
|
314
314
|
the browser to Messages/message review. The join gate is saved-filter approval or
|
|
@@ -316,8 +316,11 @@ a resolved skip-filter choice, plus a message recommendation grounded in the sam
|
|
|
316
316
|
campaign/table basis. Enrichment, filtering, and Generate Message cells wait for
|
|
317
317
|
template approval on the Use Template path.
|
|
318
318
|
|
|
319
|
-
Only promise parallel
|
|
320
|
-
host cannot or should not launch background branches,
|
|
319
|
+
Only promise parallel prospect setup work when parallel work actually started. If the
|
|
320
|
+
host cannot or should not launch background branches, do not silently move the
|
|
321
|
+
long message prompt into the parent thread. In Codex, ask once for permission to
|
|
322
|
+
use background Message Drafting. If the user declines or asks to continue
|
|
323
|
+
without background agents, say the real sequence:
|
|
321
324
|
|
|
322
325
|
```text
|
|
323
326
|
I’ll tighten the filter first, then run message generation from the same sample.
|
|
@@ -356,8 +359,10 @@ language. The YOLO option approves the brief, continues with best guesses, and
|
|
|
356
359
|
still stops before final launch.
|
|
357
360
|
|
|
358
361
|
At message review, if the user asks for edits, write the revised template and
|
|
359
|
-
examples before asking approval again.
|
|
360
|
-
|
|
362
|
+
examples before asking approval again. Route the feedback back to Message
|
|
363
|
+
Drafting with the current recommendation and basis; do not rewrite in the
|
|
364
|
+
parent and do not call `update_campaign_brief`. Do not ask whether an unseen
|
|
365
|
+
revision is better. Save to the campaign only after `approve-message`.
|
|
361
366
|
During message generation or revision, do not call `request_user_input` or
|
|
362
367
|
`AskUserQuestion`; render the revised copy first, then enter message review.
|
|
363
368
|
|