@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.
Files changed (50) hide show
  1. package/README.md +22 -20
  2. package/agents/post-find-leads-filter-scout.md +2 -2
  3. package/agents/post-find-leads-message-scout.md +39 -23
  4. package/agents/registry.json +17 -17
  5. package/agents/source-scout-linkedin-engagement.md +2 -2
  6. package/agents/source-scout-prospeo-contact.md +3 -3
  7. package/agents/source-scout-sales-nav.md +3 -3
  8. package/dist/engage-memory.js +5 -0
  9. package/dist/identity-memory.js +4 -0
  10. package/dist/index-dev.js +0 -0
  11. package/dist/index.js +0 -0
  12. package/dist/tools/engage-memory.js +2 -2
  13. package/dist/tools/leads.js +7 -11
  14. package/dist/tools/prompts.js +10 -10
  15. package/package.json +1 -1
  16. package/skills/create-campaign/SKILL.md +43 -21
  17. package/skills/create-campaign/context/learnings.md +1 -1
  18. package/skills/create-campaign/references/brief-template.md +2 -2
  19. package/skills/create-campaign-brief/references/brief-template.md +2 -2
  20. package/skills/create-campaign-brief/references/draft-lifecycle.md +1 -1
  21. package/skills/create-campaign-brief/references/examples/briefs/gelee.md +2 -2
  22. package/skills/create-campaign-brief/references/examples/briefs/superpower.md +28 -41
  23. package/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md +9 -12
  24. package/skills/create-campaign-v2/SKILL.md +102 -105
  25. package/skills/create-campaign-v2/SOUL.md +28 -23
  26. package/skills/create-campaign-v2/core/flow.v2.json +1 -1
  27. package/skills/create-campaign-v2/references/ai-tells.md +10 -35
  28. package/skills/create-campaign-v2/references/approval-gate-framing.md +3 -3
  29. package/skills/create-campaign-v2/references/gold-standard-message-examples.md +16 -30
  30. package/skills/create-campaign-v2/references/gold-standard-message-patterns.md +1 -1
  31. package/skills/create-campaign-v2/references/step-13-import-leads.md +2 -2
  32. package/skills/create-campaign-v2/references/thomas-revision-filters.md +3 -12
  33. package/skills/create-campaign-v2/references/validation-criteria.md +5 -8
  34. package/skills/create-campaign-v2/references/watch-guide-narration.md +2 -2
  35. package/skills/create-campaign-v2-tail/SKILL.md +9 -9
  36. package/skills/create-campaign-v2-validation/SKILL.md +1 -1
  37. package/skills/create-post/SKILL.md +27 -27
  38. package/skills/engage/SKILL.md +12 -12
  39. package/skills/engage/core/README.md +14 -14
  40. package/skills/find-leads/SKILL.md +1 -1
  41. package/skills/generate-messages/SKILL.md +75 -175
  42. package/skills/interview/SKILL.md +24 -24
  43. package/skills/interview/references/legacy-linkedin-interview.md +12 -12
  44. package/skills/interview/references/reference-curation.md +4 -4
  45. package/skills/interview/references/voice-capture-method.md +1 -1
  46. package/skills/load-voice/SKILL.md +25 -21
  47. package/skills/providers/signal-discovery.md +2 -2
  48. package/skills/research/SKILL.md +1 -1
  49. package/skills/create-campaign-v2/references/gold-standard-runtime-message-pack.md +0 -252
  50. 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 handoff
25
- read campaign state first: `campaignId`, `watchUrl`, `campaignBrief`,
26
- `currentStep`, source/search association, `selectedLeadListId`,
27
- `workflowTableId`, `leadScoringRubrics`, `approvedMessageTemplate`,
28
- `senderIds`, `sequenceTemplate`, and running state. Local draft files are
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. Choose and approve the lead source.
42
- 7. Materialize the approved source list and confirm 15 campaign-table rows for
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 lead rubrics when filters are enabled, then ask approval while the
46
- app remains on Filter Rules.
47
- 10. Move to Filter Leads only after saved filters are approved.
48
- 11. Review and approve/revise the message template.
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 or handle before setup continues. Normalize
72
- `csreyes92`, `@csreyes92`, or `/in/csreyes92` to
73
- `https://www.linkedin.com/in/{handle}/`; otherwise ask again. Retain it as
74
- `senderLinkedinUrl` or resolve `clientProspectId` for `create_campaign`. Run one
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, show before the brief:
88
- "Accepted LinkedIn input: normalized to the required LinkedIn profile URL. Offer
89
- path: supplied current offer or Sellable's researched
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 the campaign from connected senders, or show
93
- a sender picker during setup. Sender availability belongs only
94
- to Settings after message approval and campaign setup validation.
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 to
102
- individual claims. Instead, start the brief with one short provenance line:
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 the approval question. If it was rendered
124
- immediately before `create_campaign`, do not render it again after the shell is
125
- created; append the one watch-link handoff, then ask approve/revise.
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
- - source approval or source revision
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, directly
159
- before brief approval. It must be a direct
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; never ask
193
- first or reuse that approval. This only authorizes where to look; it does not
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
- Do not surface blanket heuristics. Make the recommendation campaign-specific.
211
- If LinkedIn engagement is recommended, name exact post themes in plain language.
212
- Avoid chat terms "Signal Discovery", "lead-source scouting", "source scouting",
213
- "lane", "provider", "precision/scale tradeoff", "evidence quality", "pilot
214
- volume", "workflow pain", or "ICP". If public conversations look thin, recommend
215
- Sales Nav or Prospeo in plain words once. Only the approval question shown after
216
- that visible plan, or an explicit source choice after seeing it, satisfies this
217
- gate. Do not ask a second source-plan question or call `search_signals`,
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. Source scouting is
223
- sequential by default. Run `source-scout-linkedin-engagement`,
224
- `source-scout-sales-nav`, and `source-scout-prospeo-contact` in parallel only
225
- when the user explicitly requested source comparison, a prior lane failed, or
226
- the first viable lane is borderline and a cheap fallback check is needed.
227
- Use a 10% planning floor after conservative cleanup. If LinkedIn engagement
228
- falls below that floor, move to Sales Nav. If Sales Nav also falls below it,
229
- move to Prospeo. Prospeo is the terminal fallback;
230
- if it also falls below 10%, tighten the ICP/source direction instead of
231
- inventing another provider.
232
-
233
- After scouting, show a second approval gate for the concrete source action.
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 the source-action gate. First-page samples are
245
- source math: sampled fit, projected good-fit prospects, and whether the path
246
- clears the target. Once it clears, ask approval for a source list with
247
- `targetLeadCount` around 1,000 contacts by default. After that,
248
- `confirm_lead_list({ reviewBatchLimit: 15 })` copies
249
- confirmed source rows into the campaign table and returns the initial
250
- campaign-table execution slice row ids for filter and message setup.
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 source-action approval uses `## Source
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 concrete evidence: source path, filters or
269
- recipe, raw volume, sample size, sampled fits as n/N plus percentage/range,
270
- estimated usable prospects, cleanup risk, runner-up, and what will happen after
271
- approval. For Sales Nav/Prospeo it must also show source export math:
272
- `rawResultCount`, `sampledFitRate`, conservative projected fit rate,
273
- `targetLeadCount` for the source list, and projected good-fit count from that
274
- export. If projected good-fit count is below target, the recommendation is to
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
- ## Post-Lead Workstreams
265
+ ## Prospect Setup Workstreams
283
266
 
284
- After `confirm_lead_list` copies a non-empty confirmed source into the campaign
285
- and records the compact review batch, ask the filter-choice question
286
- immediately. Do not call
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 post-lead workers before that question. The only customer-facing work
289
- before the question should be a short campaign setup summary and the choice:
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 post-lead registry/reference needed for
294
- filtering and start the Lead Fit Builder. Also start the Message Draft Builder
295
- from the same campaign/table basis once filter-choice is known. If filters are
296
- skipped, move the watched app to Messages and run Message Draft Builder there.
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. Do not
305
- queue enrichment/filtering/Generate Message cells until message approval. Tell
306
- the user the Message Draft Builder is preparing the template in the background.
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
- Lead Fit Builder persists production rubrics with `save_rubrics` when filters
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 the background Message Draft Builder
313
- whenever the host exposes it. It must load:
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. If the host cannot
320
- launch the agent, the parent fallback must run the same full prompt from live
321
- campaign state. Do not render message
322
- review until `messageDraftRecommendation` proves current campaign/table basis.
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 source approval before
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
- Source selection is sequential by default. Start with the first recommended
280
- place to look from `flow.v2.json`; for the current campaign shape that is
281
- usually LinkedIn engagement. Only try the next fallback after the current place
282
- is not viable, the user asks for a comparison, or the first place is borderline
283
- and needs a second source to avoid a bad recommendation. The fallback order must
284
- stay plain in customer copy: first check people talking on LinkedIn, then people
285
- with the right titles who recently posted on LinkedIn, then people with the
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 source work is sequential,
301
- keep the output numeric but do not claim the source scout was parallel or
302
- surface install status to the customer.
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 post-lead work, call `get_post_find_leads_scout_registry` after
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 `post-find-leads-message-scout` /
309
- message generation from the same campaign/table basis. If the user chooses
310
- filters, also start `post-find-leads-filter-scout`, move the browser to Filter
311
- Rules, save rubrics, then ask for filter approval. After approval, keep the
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 post-lead work when parallel work actually started. If the
320
- host cannot or should not launch background branches, say the real sequence:
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. Do not ask whether an unseen revision is
360
- better. Save to the campaign only after `approve-message`.
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