@sellable/mcp 0.1.153 → 0.1.155

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 (32) hide show
  1. package/agents/post-find-leads-filter-scout.md +6 -6
  2. package/agents/post-find-leads-message-scout.md +12 -11
  3. package/agents/source-scout-linkedin-engagement.md +3 -3
  4. package/agents/source-scout-prospeo-contact.md +3 -3
  5. package/agents/source-scout-sales-nav.md +3 -3
  6. package/dist/tools/cells.js +1 -1
  7. package/dist/tools/leads.d.ts +1 -0
  8. package/dist/tools/leads.js +51 -24
  9. package/dist/tools/navigation.js +2 -2
  10. package/dist/tools/prompts.js +7 -7
  11. package/dist/tools/readiness.js +2 -2
  12. package/dist/tools/rubrics.js +1 -1
  13. package/package.json +1 -1
  14. package/skills/create-campaign/SKILL.md +52 -21
  15. package/skills/create-campaign-v2/SKILL.md +48 -47
  16. package/skills/create-campaign-v2/SOUL.md +4 -4
  17. package/skills/create-campaign-v2/core/auto-execute.README.md +9 -9
  18. package/skills/create-campaign-v2/core/flow.v2.json +84 -19
  19. package/skills/create-campaign-v2/core/policy.md +1 -1
  20. package/skills/create-campaign-v2/references/approval-gate-framing.md +2 -2
  21. package/skills/create-campaign-v2/references/filter-leads.md +11 -11
  22. package/skills/create-campaign-v2/references/final-handoff-contract.md +4 -4
  23. package/skills/create-campaign-v2/references/sample-validation-loop.md +8 -8
  24. package/skills/create-campaign-v2/references/step-13-import-leads.md +9 -9
  25. package/skills/create-campaign-v2/references/step-15-re-cascade.md +2 -2
  26. package/skills/create-campaign-v2/references/watch-guide-narration.md +15 -15
  27. package/skills/create-campaign-v2-tail/SKILL.md +27 -27
  28. package/skills/create-rubric/SKILL.md +1 -1
  29. package/skills/find-leads/SKILL.md +2 -2
  30. package/skills/providers/prospeo.md +1 -1
  31. package/skills/providers/sales-nav.md +1 -1
  32. package/skills/providers/signal-discovery.md +7 -7
@@ -70,8 +70,10 @@ CampaignOffer state and the watch link are the customer-facing source of truth.
70
70
  Disk artifacts are optional debug/UAT diagnostics; normal customer runs should
71
71
  not create, link, or surface local draft files unless the user explicitly asks
72
72
  for them. Resume, gating, and handoff read campaign state first. The
73
- watchable campaign exists after the short brief; lead import is bounded to the
74
- first review batch. After that, the user chooses whether to use filters or skip.
73
+ watchable campaign exists after the short brief; source import copies the
74
+ confirmed list into the campaign, then an internal first campaign-table
75
+ execution slice configures filters and messages. After that, the user chooses
76
+ whether to use filters or skip.
75
77
  When filters are chosen, save rubrics, get filter approval, then wait for
76
78
  message-template approval before enrichment/filtering or Generate Message cells.
77
79
  Use Template is the default message path; AI Generated is only an explicit
@@ -159,15 +161,17 @@ precision, and referral paths, but it does not provide hiring-by-role filters;
159
161
  say that distinction plainly in the source-plan gate.
160
162
 
161
163
  After scouting, ask for a second approval on the concrete source action. For
162
- Signal Discovery, name how many selected posts will be scraped, the target
163
- engager/source-candidate volume, and the 15-row review/process sample size. For Sales
164
- Nav or Prospeo, name the specific approved import lane and source lead count.
164
+ Signal Discovery, name how many selected posts will be scraped and the
165
+ target engager/source-candidate volume. For Sales Nav or Prospeo, name the
166
+ specific approved import lane and source lead count. Keep the internal
167
+ 15-row campaign-table execution slice separate from source sampling.
165
168
 
166
169
  Do not call `import_leads` or `confirm_lead_list` until this second approval is
167
170
  granted.
168
171
 
169
172
  For Sales Nav and Prospeo, the second gate approves materializing the source
170
- lead list, not importing only the review batch. Use the first-page/sample review
173
+ lead list, not importing only the internal execution slice. Use the provider
174
+ first-page/source sample
171
175
  to calculate projected good fits: sampled fit rate after conservative cleanup,
172
176
  raw pool size, source target, and expected good-fit count. If the projected
173
177
  good-fit pool is below the campaign target, keep refining/broadening filters
@@ -175,7 +179,7 @@ granted.
175
179
  with a source-list `targetLeadCount` around 1,000 by default (provider cap is
176
180
  internal when the raw pool is larger). Only after the source list is ready
177
181
  should `confirm_lead_list({ reviewBatchLimit: 15 })` copy confirmed rows into
178
- the campaign table and return the first 15 review/process rows.
182
+ the campaign table and return the initial campaign-table execution slice rows.
179
183
 
180
184
  For Signal Discovery, the customer-facing approval card must use the exact
181
185
  action shape "Approve scraping N Signal Discovery posts?" and the chat summary
@@ -187,15 +191,16 @@ should be a compact `## Source Recommendation` block with:
187
191
  - planning floor: continue with Signal Discovery only when sampled/projected
188
192
  fit is at least 10% after cleanup; below that, move to Sales Nav recent
189
193
  activity instead of scraping noisy engagers
190
- - review checkpoint: after the source list exists, copy confirmed source rows
191
- into the campaign and process only the first 15 for fit and message review
194
+ - campaign setup checkpoint: after the source list exists, copy confirmed source rows
195
+ into the campaign and internally process the first execution slice for fit and message setup
192
196
  - a selected-post table with post author/topic, why it fits, and visible
193
197
  engagement
194
198
  - total visible pool and estimated good-fit pool
195
- - first pass: build the source list, copy all confirmed source rows into the
196
- campaign, then process only the first 15 rows before scaling
199
+ - first pass: build the source list and copy all confirmed source rows into the
200
+ campaign; the campaign table then internally processes its first execution
201
+ slice before scaling
197
202
  - fallback: switch to Sales Nav recent activity if sampled/projected fit falls
198
- below 10%, or if the review batch is vendor-heavy, agency-heavy, or off-ICP
203
+ below 10%, or if the source sample is vendor-heavy, agency-heavy, or off-ICP
199
204
 
200
205
  When the user has not supplied a source and multiple source angles are viable,
201
206
  scout those angles as independent branches when the host can actually do it:
@@ -288,7 +293,7 @@ After every `update_campaign({ campaignId, currentStep })`, use
288
293
  `get_campaign_navigation_state` when available as a compact orientation check:
289
294
  match the saved campaign state to the expected watch-link step, explain the
290
295
  current state in one sentence, and only then continue. Sender selection belongs
291
- at Settings after message approval and review-batch validation. After message
296
+ at Settings after message approval and campaign setup validation. After message
292
297
  validation, use Settings to help the user connect or select a LinkedIn sender.
293
298
  Explain Slack reply review before launch. After sender selection, attach the
294
299
  recommended sequence and move the watched UI to Send. Do not start the campaign
@@ -393,7 +398,7 @@ the brief. This is only the client-prospect/bootstrap identity for
393
398
  Do not call `mcp__sellable__list_senders`, `mcp__sellable__get_sender`, or
394
399
  surface connected/missing sender state during setup, brief, source, filter, or
395
400
  message review. Sender availability belongs only to the Settings/final launch
396
- handoff after message approval and the review-batch validation sample.
401
+ handoff after message approval and the campaign setup validation slice.
397
402
 
398
403
  If the invocation or user answer includes an existing `clientProspectId`, keep
399
404
  it as the preferred `create_campaign` identity input. If it includes a LinkedIn
@@ -458,6 +463,32 @@ required field is missing, the supplied inputs conflict, or the campaign focus i
458
463
  genuinely ambiguous. It is fine to include an explicit assumption line in the
459
464
  brief; the approval gate lets the user revise it.
460
465
 
466
+ ### YOLO Mode
467
+
468
+ If the invocation or any later user message explicitly asks for "yolo mode",
469
+ "YOLO", `--yolo`, `mode=yolo`, "autopilot", "use best guesses", "answer for
470
+ me", "use best estimates", or "just run it", enable YOLO mode for the rest of
471
+ the run. Treat YOLO as `interactionMode: "autonomous"` plus an intake policy:
472
+
473
+ - If campaign identity is missing, ask only for the LinkedIn profile or company
474
+ website in normal chat; do not ask buyer, offer, proof, source, or filter setup
475
+ questions before that.
476
+ - Treat any freeform directions already provided, or added later by the user, as
477
+ operator directions for the rest of the run. If directions conflict, the newest
478
+ user direction wins.
479
+ - After the lightweight identity/company lookup, infer the buyer segment,
480
+ offer/CTA, proof to use or avoid, first lead source, filter choice, and message
481
+ direction with best estimates from public/company context plus operator
482
+ directions. State the important assumptions in the brief and watch narration.
483
+ - Do not use structured setup questions in YOLO mode. For pre-launch approval
484
+ gates, choose the recommended path yourself when confidence is sufficient, show
485
+ the assumed choice briefly, and continue.
486
+ - Pause only when no reasonable estimate exists, a tool requires missing
487
+ credentials/data, the source/message quality floor fails, or the next action
488
+ would start the live campaign.
489
+ - Never call `start_campaign` from YOLO mode without explicit user launch
490
+ confirmation. Do not invent proof; mark proof gaps and use safer claims.
491
+
461
492
  Before the identity gate, use this customer-facing shape:
462
493
 
463
494
  ```text
@@ -651,13 +682,13 @@ updates.
651
682
  until `hasMore=false`. Message review requires Message Draft Builder output:
652
683
  do not draft from a checklist, local markdown artifact, or parent-thread
653
684
  intuition. Use campaign state, campaign brief content, selected source state, and
654
- first review/process sample rows as the source of truth; do not read stale local
685
+ initial campaign-table execution slice rows as the source of truth; do not read stale local
655
686
  markdown such as `message-validation.md`, inspect the database directly, or
656
687
  synthesize local validation artifacts from general knowledge.
657
688
  5. Create the campaign shell early with the v1 brief so the user can open the
658
689
  watch link and see useful setup state immediately. Materialize the approved
659
- source list, copy confirmed rows into the campaign, and process only the
660
- first 15 review rows after the source is attached to the campaign; do not
690
+ source list, copy confirmed rows into the campaign, and internally process the
691
+ first campaign-table execution slice after the source is attached to the campaign; do not
661
692
  queue workflow cells, attach a sequence, or start until saved filters and the
662
693
  message template/token rules are approved. When filters are chosen, immediately
663
694
  call `mcp__sellable__update_campaign({ campaignId, enableICPFilters: true, currentStep: "create-icp-rubric", watchNarration })`
@@ -665,7 +696,7 @@ updates.
665
696
  After rubrics save, keep Filter Rules visible for approval; after approval,
666
697
  move to Filter Leads and wait there for the background message recommendation.
667
698
  If filters are skipped, move to Messages/message review. Queue the bounded
668
- review-batch `enrichCellId` cells only after message approval. Move to
699
+ campaign-table execution-slice `enrichCellId` cells only after message approval. Move to
669
700
  Messages only after at least one review row passes and one generated message
670
701
  is ready.
671
702
  Do not ask the user to approve the brief before shell creation unless they
@@ -674,14 +705,14 @@ updates.
674
705
  `mcp__sellable__update_campaign({ campaignId, currentStep })` before major
675
706
  visible work so the user can watch progress in the app: `create-offer` for
676
707
  the brief, `pick-provider` or the selected provider step while sourcing,
677
- `filter-choice` after the review batch, `create-icp-rubric` as soon
708
+ `filter-choice` after source rows are copied into the campaign table, `create-icp-rubric` as soon
678
709
  as filters are chosen and while saved filters await approval,
679
710
  `apply-icp-rubric` after filter approval and message approval while bounded
680
711
  enrichment/filter scoring runs, `validate-sample` only as a recovery/legacy
681
712
  observation state,
682
- `auto-execute-messaging` after at least one row passes and review-batch
713
+ `auto-execute-messaging` after at least one row passes and initial campaign-row
683
714
  messages are being generated or reviewed, `awaiting-user-greenlight` only
684
- after generated review-batch messages are approved, `settings` for sender
715
+ after generated campaign-row messages are approved, `settings` for sender
685
716
  selection, `sequence` after sender attach, and `send` once the recommended
686
717
  sequence is attached. Do not advance the step backward.
687
718
  7. Keep `selectedLeadListId` as the source list and `workflowTableId` as the
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: create-campaign-v2
3
- description: Execute the compact JSON-gated shell-first campaign flow: resolve campaign identity, create a watchable CampaignOffer shell with the brief, attach and approve the source, copy the confirmed source list into the campaign, process the first 15 review rows, persist rubrics and approved message template, validate the first passing generated message, then hand off to Settings, sequence, and start.
3
+ description: Execute the compact JSON-gated shell-first campaign flow: resolve campaign identity, create a watchable CampaignOffer shell with the brief, attach and approve the source, copy the confirmed source list into the campaign, internally process the first campaign-table execution slice, persist rubrics and approved message template, validate the first passing generated message, then hand off to Settings, sequence, and start.
4
4
  visibility: internal
5
5
  ---
6
6
 
@@ -40,8 +40,10 @@ for debug output.
40
40
  4. Create the watchable campaign shell with `create_campaign` and the v1 brief.
41
41
  5. Surface the direct watch link.
42
42
  6. Choose and approve the lead source.
43
- 7. Materialize the approved source list, confirm/copy it into the campaign, and
44
- use only the first 15 rows as the initial review/process sample.
43
+ 7. Materialize the approved source list and confirm/copy it into the campaign.
44
+ Internally use the first 15 imported campaign-table rows as the initial
45
+ execution slice for filter/message setup; do not present that as source
46
+ sampling.
45
47
  8. Ask whether to use filters or skip them.
46
48
  9. Persist lead rubrics when filters are enabled, then ask approval while the
47
49
  app remains on Filter Rules.
@@ -74,13 +76,25 @@ offers are plausible, ask one campaign-focus choice before buyer/offer/proof.
74
76
 
75
77
  Do not call `list_senders`, do not infer the campaign from connected senders,
76
78
  and do not show a sender picker during setup. Sender availability belongs only
77
- to Settings after message approval and review-batch validation.
79
+ to Settings after message approval and campaign setup validation.
78
80
 
79
81
  Use `research-sender` for concise identity/proof research and call
80
82
  `complete_sender_research` before shell creation. If WebSearch is unavailable,
81
83
  use the available Sellable profile/company/post tools and carry explicit proof
82
84
  gaps into the brief.
83
85
 
86
+ ## YOLO Mode
87
+
88
+ Enable YOLO mode when the user asks for yolo/autopilot, passes `--yolo` or
89
+ `mode=yolo`, or says to use best guesses/estimates and answer for them. Ask only
90
+ for the LinkedIn profile or company website if identity is missing. After the
91
+ identity lookup, infer buyer, offer/CTA, proof, source, filters, and message
92
+ direction from company evidence plus user directions; newest directions win.
93
+ Set `interactionMode: "autonomous"` once `campaignId` exists. Auto-select
94
+ pre-launch choices when confidence is sufficient, but show the assumed choice
95
+ briefly. Pause for missing credentials/data, failed quality floors, or final
96
+ launch. Never call `start_campaign` without explicit launch confirmation.
97
+
84
98
  ## Structured Questions
85
99
 
86
100
  Use the host-native structured question gate (`request_user_input` or
@@ -166,33 +180,27 @@ reasonable refinement, move to Prospeo. Prospeo is the terminal fallback; if it
166
180
  also falls below 10%, tighten the ICP/source direction instead of inventing
167
181
  another provider.
168
182
 
169
- After scouting, show a second approval gate for the concrete source action. For
170
- Signal Discovery, this gate must say how many selected posts will be scraped,
171
- the target engager/source-candidate volume, the bounded campaign review-batch
172
- size, the cleanup risk, and the fallback if the selected posts look wrong. The
173
- approval label must describe the action with the count, such as "Approve
174
- scraping 3 Signal Discovery posts?" For Sales Nav or Prospeo, the label should
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 15-row review sample 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. Once the lane clears the target, ask
184
- approval to materialize the source list with
185
- `targetLeadCount` around 1,000 source contacts by default (use the provider cap
186
- internally when the raw pool is larger). After that source list is ready,
187
- `confirm_lead_list({ reviewBatchLimit: 15 })` copies confirmed source rows into
188
- the campaign table and returns the first 15 review/process row ids for fit and
189
- message review.
183
+ After scouting, show a second approval gate for the concrete source action.
184
+ For Signal Discovery, state selected-post count, target engager/source-candidate
185
+ volume, internal campaign-table execution-slice size, cleanup risk, and fallback;
186
+ label the approval like "Approve scraping 3 Signal Discovery posts?" For Sales
187
+ Nav or Prospeo, name the specific search/import lane and source lead count. Do
188
+ not call `import_leads` or `confirm_lead_list` until this gate is approved.
189
+
190
+ For Sales Nav and Prospeo, do not ask to import only the internal 15-row
191
+ campaign-table execution slice at the source-action gate. First-page samples are
192
+ source math: sampled fit after cleanup, projected good-fit prospects, and
193
+ whether the lane clears the campaign target. Once it clears, ask approval to
194
+ materialize the source list with `targetLeadCount` around 1,000 source contacts
195
+ by default. After that, `confirm_lead_list({ reviewBatchLimit: 15 })` copies
196
+ confirmed source rows into the campaign table and returns the initial
197
+ campaign-table execution slice row ids for filter and message setup.
190
198
 
191
199
  After the user approves this concrete source-action gate, do not show the
192
200
  Source Recommendation again and do not ask another source approval question.
193
201
  Acknowledge once, then call `import_leads` immediately with the approved source
194
202
  math. For Sales Nav/Prospeo, pass `targetLeadCount` as the approved source-list
195
- export count, not the review-batch size. For Signal Discovery, pass
203
+ export count, not the campaign execution-slice size. For Signal Discovery, pass
196
204
  `provider: "signal-discovery"`, `targetEngagerCount`, `maxPostsToScrape`, and
197
205
  `confirmed: true`; the tool owns moving the watch UI to source-list progress
198
206
  after a lead-list/job id exists.
@@ -209,32 +217,24 @@ Use Signal Discovery first.
209
217
  **Working assumption:** ~20% of raw post engagers become good-fit prospects<br>
210
218
  **Engagers needed:** ~1,500 raw engagers<br>
211
219
  **Planning floor:** continue only when sampled/projected fit is at least 10% after cleanup; below that, switch to Sales Nav recent activity<br>
212
- **Review checkpoint:** after the source list exists, copy the entire confirmed source list into the campaign and process only the first 15 rows for fit and message review<br>
220
+ **Campaign setup checkpoint:** after the source list exists, copy the entire confirmed source list into the campaign and internally process only the first execution slice for filter and message setup<br>
213
221
 
214
222
  ### Selected posts
215
223
 
216
- | Post | Why it fits | Visible engagement |
217
- | ---------------- | ----------------------------------------------- | -----------------: |
218
- | Dylan Power | Claude outbound system | ~1,571 |
219
- | Fivos Aresti | Replacing Clay outbound with Claude Code | ~734 |
220
- | Divyanshi Sharma | LinkedIn lead-gen system built with Claude Code | ~508 |
224
+ Show author/topic, why it fits, and visible engagement.
221
225
 
222
- **Total visible pool:** ~2,813 engagers<br>
223
- **Estimated good-fit pool at 20%:** ~560 prospects before dedupe/risk cleanup
226
+ **Total visible pool:** ~2,800 engagers<br>
227
+ **Estimated good-fit pool at 20%:** ~560 prospects before cleanup
224
228
 
225
229
  ### Recommendation
226
230
 
227
231
  Approve scraping these 3 posts.
228
232
 
229
- This gives enough volume to target ~300 good-fit prospects after cleanup, while
230
- keeping the source tied to people already engaging with Claude Code outbound /
231
- AI-native sales workflows.
232
-
233
- **First pass:** build the source list, copy all confirmed source rows into the
234
- campaign, then process only the first 15 rows so we can inspect quality before
235
- scaling.
233
+ **First pass:** build the source list and copy all confirmed source rows into
234
+ the campaign. The campaign table then internally processes its first execution
235
+ slice so filters and generated copy are configured before scaling.
236
236
 
237
- **Fallback:** if sampled/projected fit falls below 10%, or if the review batch
237
+ **Fallback:** if sampled/projected fit falls below 10%, or if the source sample
238
238
  is too vendor-heavy, agency-heavy, or off-ICP, switch to Sales Nav recent
239
239
  activity.
240
240
  ```
@@ -246,7 +246,8 @@ authorizes. For Sales Nav/Prospeo it must also show source export math:
246
246
  `rawResultCount`, `sampledFitRate`, conservative projected fit rate,
247
247
  `targetLeadCount` for the source list, and projected good-fit count from that
248
248
  export. If projected good-fit count is below target, the recommendation is to
249
- refine or broaden filters, not to run a 15-row review sample.
249
+ refine or broaden filters, not to run the internal campaign-table execution slice
250
+ as if it were source sampling.
250
251
 
251
252
  Supplied profile CSVs, company/domain CSVs, pasted domains, and existing
252
253
  Sellable lead lists are supported, but keep provider mechanics out of the first
@@ -259,7 +260,7 @@ After `confirm_lead_list` copies a non-empty confirmed source into the campaign
259
260
  filter-choice question immediately. Do not call
260
261
  `get_post_find_leads_scout_registry`, load filter/message subskill prompts, or
261
262
  spawn post-lead workers before that question. The only customer-facing work
262
- before the question should be a short review-batch summary and the choice:
263
+ before the question should be a short campaign setup summary and the choice:
263
264
  add filters, skip filters, or revise source.
264
265
 
265
266
  If the user chooses filters, then load the post-lead registry/reference needed
@@ -293,7 +294,7 @@ get_subskill_prompt({ subskillName: "generate-messages", offset, limit }) until
293
294
  No shortcut message instructions are valid. If the host cannot launch the
294
295
  agent, the parent fallback must run the same full prompt from live campaign
295
296
  state before drafting. Do not render message review until
296
- `messageDraftRecommendation` proves current campaign/table/review-batch
297
+ `messageDraftRecommendation` proves current campaign/table/execution-slice
297
298
  `generate-messages` basis.
298
299
 
299
300
  ## Hard Gates
@@ -302,7 +303,7 @@ state before drafting. Do not render message review until
302
303
  - Do not call `import_leads` or `confirm_lead_list` until the lead source is
303
304
  approved.
304
305
  - Do not queue enrichment, ICP scoring, filtering, or product Generate Message
305
- cells until the review batch exists and the required message/filter approvals
306
+ cells until the campaign-table execution slice exists and the required message/filter approvals
306
307
  are complete.
307
308
  - Do not call `check_rubric`; persist production rubrics with `save_rubrics`.
308
309
  - Do not call `start_campaign` until the user explicitly confirms launch after
@@ -318,6 +319,6 @@ Load references only when needed:
318
319
  - `references/lead-validation-preview.md` for legacy/debug preview shapes.
319
320
  - `references/filter-leads.md` for rubric design and `save_rubrics` rules.
320
321
  - `references/step-13-import-leads.md` before source copy.
321
- - `references/sample-validation-loop.md` before review-batch validation.
322
+ - `references/sample-validation-loop.md` before campaign setup validation.
322
323
  - `references/final-handoff-contract.md` for Settings, sender, sequence, and
323
324
  start.
@@ -52,8 +52,8 @@ turn anchored to that:
52
52
  4. Ask for brief approval before any lead import or sending-adjacent work.
53
53
  5. Find likely responders and approve the source.
54
54
  6. Copy the confirmed source list into the campaign and use the first 15 rows as
55
- the review/process sample.
56
- 7. Filter for fit and draft the reusable message template from the same sample.
55
+ the internal campaign-table execution slice for setup.
56
+ 7. Filter for fit and draft the reusable message template from the same slice.
57
57
  8. Queue the bounded fit cascade from saved rubrics/run conditions only after the
58
58
  message template is approved.
59
59
  9. Use Settings for sender selection, sequence attach, and final launch handoff.
@@ -83,7 +83,7 @@ example, like `omit the noticed... line` or `use "operators"`. Missing data
83
83
  should never produce robotic or creepy copy.
84
84
 
85
85
  Approved token guidance is part of the campaign, not just the review. After the
86
- first review/process sample exists and message generation has a selected
86
+ initial campaign-table execution slice exists and message generation has a selected
87
87
  template, the campaign brief should carry forward the token fill rules and examples before any
88
88
  workflow-table cascade is queued: good fills, good omits, bad fills, fallback
89
89
  rules, and why the bad fills are blocked.
@@ -243,7 +243,7 @@ For Signal Discovery, the second gate is not "approve source" in the abstract.
243
243
  It is a concrete scrape approval: show a compact `## Source Recommendation`
244
244
  with the ~150 good-fit prospect goal, 15% raw-engager assumption, selected-post
245
245
  table, total visible pool, estimated good-fit pool, 10% planning floor,
246
- first-pass review batch, and fallback. The approval question should be "Approve
246
+ first-pass campaign setup, and fallback. The approval question should be "Approve
247
247
  scraping N Signal Discovery posts?"
248
248
 
249
249
  That scrape approval is single-use. Once the user approves it, do not replay
@@ -20,7 +20,7 @@ into the campaign).
20
20
 
21
21
  ### `import`
22
22
 
23
- - **`importLimit`** — Review/process sample size used after Step 13 copies the
23
+ - **`importLimit`** — Internal execution-slice size used after Step 13 copies the
24
24
  confirmed source rows into the campaign. The tail MUST NOT exceed this cap
25
25
  before the message template is approved and at least one generated passing
26
26
  message is reviewed.
@@ -31,18 +31,18 @@ into the campaign).
31
31
 
32
32
  ### `sample`
33
33
 
34
- - **`sampleSize`** — How many rows the validation loop pulls from the first
35
- review/process sample. In v2 this matches the process cap (default 15), so the
34
+ - **`sampleSize`** — How many rows the validation loop pulls from the initial
35
+ campaign-table execution slice. In v2 this matches the process cap (default 15), so the
36
36
  user sees enough real rows to judge the campaign without spending credits on
37
37
  hundreds more.
38
38
  - **`minProjectedPass`** — Passing-message floor required before handoff.
39
- The default requires one passing example from the 15-row review sample.
39
+ The default requires one passing example from the 15-row internal slice.
40
40
  Math:
41
41
  ```text
42
42
  projectedPass = round(passInSample / sampleSize * importLimit)
43
43
  ```
44
44
  With defaults (sampleSize=15, importLimit=15), `projectedPass` equals the
45
- actual review sample pass count. One passing row is exactly at the floor.
45
+ actual initial-slice pass count. One passing row is exactly at the floor.
46
46
  - **`maxRevisionRounds`** — Hard cap before escalating to the user. A
47
47
  revision round is one full sample pass that triggered brief revision
48
48
  and retried. On stale resume the counter does NOT reset.
@@ -50,7 +50,7 @@ into the campaign).
50
50
  ### `messaging`
51
51
 
52
52
  - **`tokenContract`** — `strict` rejects unresolved/unsupported tokens
53
- before handing the review batch to the user. `relaxed` logs warnings but
53
+ before handing generated copy to the user. `relaxed` logs warnings but
54
54
  proceeds.
55
55
  Default `strict` because live campaign state shouldn't ship messages
56
56
  with unresolved templating.
@@ -125,9 +125,9 @@ into the campaign).
125
125
  After 3-5 real campaigns complete the tail, review the threshold-trip
126
126
  logs and adjust:
127
127
 
128
- - `importLimit` higher only if users consistently ask for larger review
129
- batches and credit spend is acceptable.
130
- - `sampleSize` higher if a 15-row review sample is not enough to judge
128
+ - `importLimit` higher only if users consistently ask for larger initial
129
+ setup slices and credit spend is acceptable.
130
+ - `sampleSize` higher if a 15-row internal slice is not enough to judge
131
131
  quality for a specific market.
132
132
  - `minProjectedPass` lower only if fewer than 3 passing examples is still
133
133
  enough for a confident user decision.