@sellable/mcp 0.1.151 → 0.1.152
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 +4 -3
- package/agents/post-find-leads-filter-scout.md +5 -4
- package/agents/post-find-leads-message-scout.md +15 -14
- package/agents/source-scout-linkedin-engagement.md +6 -5
- package/agents/source-scout-prospeo-contact.md +4 -4
- package/agents/source-scout-sales-nav.md +4 -4
- package/dist/index-dev.js +0 -0
- package/dist/index.js +0 -0
- package/dist/tools/cells.js +1 -1
- package/dist/tools/leads.d.ts +36 -3
- package/dist/tools/leads.js +83 -71
- package/dist/tools/prompts.js +9 -9
- package/dist/tools/registry.d.ts +17 -0
- package/dist/tools/rubrics.js +23 -20
- package/package.json +1 -1
- package/skills/create-campaign/SKILL.md +59 -56
- package/skills/create-campaign-v2/SKILL.md +43 -42
- package/skills/create-campaign-v2/SOUL.md +16 -13
- package/skills/create-campaign-v2/core/auto-execute.README.md +16 -17
- package/skills/create-campaign-v2/core/auto-execute.yaml +8 -7
- package/skills/create-campaign-v2/core/flow.v2.json +81 -149
- package/skills/create-campaign-v2/core/policy.md +13 -12
- package/skills/create-campaign-v2/references/approval-gate-framing.md +4 -3
- package/skills/create-campaign-v2/references/filter-leads.md +5 -4
- package/skills/create-campaign-v2/references/lead-validation-preview.md +2 -2
- package/skills/create-campaign-v2/references/sample-validation-loop.md +32 -27
- package/skills/create-campaign-v2/references/step-13-import-leads.md +29 -28
- package/skills/create-campaign-v2/references/watch-guide-narration.md +27 -28
- package/skills/create-campaign-v2-tail/SKILL.md +44 -44
- package/skills/create-rubric/SKILL.md +5 -5
- package/skills/find-leads/SKILL.md +2 -2
- package/skills/generate-messages/SKILL.md +2 -1
- package/skills/providers/prospeo.md +3 -3
- package/skills/providers/sales-nav.md +7 -7
- package/skills/providers/signal-discovery.md +11 -11
|
@@ -14,10 +14,11 @@
|
|
|
14
14
|
version: 1
|
|
15
15
|
|
|
16
16
|
import:
|
|
17
|
-
# Initial review
|
|
18
|
-
#
|
|
19
|
-
#
|
|
20
|
-
|
|
17
|
+
# Initial review/process sample used after the confirmed source list is copied
|
|
18
|
+
# into the campaign. Enrichment must never exceed this cap before the message
|
|
19
|
+
# template is approved and the sample proves at least one passing generated
|
|
20
|
+
# message.
|
|
21
|
+
importLimit: 15
|
|
21
22
|
# Provider is inherited from the campaign-attached source association created
|
|
22
23
|
# during find-leads. Step 13 may re-run provider preflight in memory, but it
|
|
23
24
|
# does not choose a new source.
|
|
@@ -27,11 +28,11 @@ sample:
|
|
|
27
28
|
# Rows pulled from the imported cohort for the validation loop. In v2 this
|
|
28
29
|
# equals the review-batch cap so the user sees a focused first test batch
|
|
29
30
|
# without spending credits on hundreds of rows.
|
|
30
|
-
sampleSize:
|
|
31
|
+
sampleSize: 15
|
|
31
32
|
# Projected first-batch passing count required to proceed to sample
|
|
32
33
|
# messaging. This is not approval to scale the full source list.
|
|
33
34
|
# projectedPass = round(passInSample / sampleSize * importLimit).
|
|
34
|
-
minProjectedPass:
|
|
35
|
+
minProjectedPass: 1
|
|
35
36
|
# Hard cap on revision loops before escalating to the user. On a stale
|
|
36
37
|
# resume the counter does NOT reset — the 3-round cap holds across
|
|
37
38
|
# sessions.
|
|
@@ -106,7 +107,7 @@ handoff:
|
|
|
106
107
|
# Orientation surfaced in Step 16 ("awaiting-user-greenlight") along with
|
|
107
108
|
# the watch link. Keep this short and user-facing.
|
|
108
109
|
orientation: >-
|
|
109
|
-
Review the first
|
|
110
|
+
Review the first generated passing message. If it looks good,
|
|
110
111
|
attach a sender in Settings, accept the recommended sequence, and start
|
|
111
112
|
the campaign without spending credits on more leads first.
|
|
112
113
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": "v2.1-compact",
|
|
3
3
|
"workflow": "create-campaign-v2",
|
|
4
|
-
"principle": "CampaignOffer state and
|
|
5
|
-
"normalCustomerPath": "Use campaign state, MCP
|
|
4
|
+
"principle": "CampaignOffer state and watch link are canonical. Create the watched shell, approve source, materialize and confirm the source list, process the first 15 review rows, save rubrics for approval, approve the message template, then run the bounded filter/message cascade before Settings, sequence, and explicit start.",
|
|
5
|
+
"normalCustomerPath": "Use campaign state, MCP responses, and concise watchNarration. Do not create, read, link, or surface local draft files.",
|
|
6
6
|
"legacyCompatibility": {
|
|
7
7
|
"validationSubskill": "create-campaign-v2-validation",
|
|
8
8
|
"tailSubskill": "create-campaign-v2-tail",
|
|
@@ -63,9 +63,7 @@
|
|
|
63
63
|
"references/lead-validation-preview.md",
|
|
64
64
|
"references/step-13-import-leads.md"
|
|
65
65
|
],
|
|
66
|
-
"filter": [
|
|
67
|
-
"references/filter-leads.md"
|
|
68
|
-
],
|
|
66
|
+
"filter": ["references/filter-leads.md"],
|
|
69
67
|
"message": [],
|
|
70
68
|
"tail": [
|
|
71
69
|
"references/sample-validation-loop.md",
|
|
@@ -76,7 +74,7 @@
|
|
|
76
74
|
"safetyBoundaries": [
|
|
77
75
|
"Do not call list_senders before Settings after message approval.",
|
|
78
76
|
"Do not import leads until the source decision is approved.",
|
|
79
|
-
"Do not queue cells until
|
|
77
|
+
"Do not queue cells until confirmed source rows exist in the campaign and the message/filter gates are satisfied.",
|
|
80
78
|
"Do not call start_campaign until the user explicitly confirms launch.",
|
|
81
79
|
"Do not use local files as durable state in normal customer runs."
|
|
82
80
|
],
|
|
@@ -174,10 +172,7 @@
|
|
|
174
172
|
"currentStep": "create-offer",
|
|
175
173
|
"watchNarration.stage": "brief"
|
|
176
174
|
},
|
|
177
|
-
"capture": [
|
|
178
|
-
"campaignId",
|
|
179
|
-
"watchUrl"
|
|
180
|
-
],
|
|
175
|
+
"capture": ["campaignId", "watchUrl"],
|
|
181
176
|
"canonicalStateWrites": [
|
|
182
177
|
"campaignId",
|
|
183
178
|
"watchUrl",
|
|
@@ -218,11 +213,7 @@
|
|
|
218
213
|
"queue_cells",
|
|
219
214
|
"start_campaign"
|
|
220
215
|
],
|
|
221
|
-
"waitFor": [
|
|
222
|
-
"campaign_shell_created",
|
|
223
|
-
"brief_ready",
|
|
224
|
-
"confirm_with_user"
|
|
225
|
-
],
|
|
216
|
+
"waitFor": ["campaign_shell_created", "brief_ready", "confirm_with_user"],
|
|
226
217
|
"transitions": {
|
|
227
218
|
"campaign_shell_created": "brief-review",
|
|
228
219
|
"brief_ready": "brief-review",
|
|
@@ -240,11 +231,7 @@
|
|
|
240
231
|
{
|
|
241
232
|
"action": "ask_brief_choice",
|
|
242
233
|
"uses": "request_user_input",
|
|
243
|
-
"choices": [
|
|
244
|
-
"Approve brief",
|
|
245
|
-
"Revise brief",
|
|
246
|
-
"Pause here"
|
|
247
|
-
]
|
|
234
|
+
"choices": ["Approve brief", "Revise brief", "Pause here"]
|
|
248
235
|
}
|
|
249
236
|
],
|
|
250
237
|
"requiredCampaignState": [
|
|
@@ -266,11 +253,7 @@
|
|
|
266
253
|
"queue_cells",
|
|
267
254
|
"start_campaign"
|
|
268
255
|
],
|
|
269
|
-
"waitFor": [
|
|
270
|
-
"user_brief_confirmed",
|
|
271
|
-
"revise_brief",
|
|
272
|
-
"auto_continue"
|
|
273
|
-
],
|
|
256
|
+
"waitFor": ["user_brief_confirmed", "revise_brief", "auto_continue"],
|
|
274
257
|
"transitions": {
|
|
275
258
|
"user_brief_confirmed": "find-leads",
|
|
276
259
|
"revise_brief": "brief-interview",
|
|
@@ -300,7 +283,7 @@
|
|
|
300
283
|
"fallback lane if the first lane is weak",
|
|
301
284
|
"what approval authorizes"
|
|
302
285
|
],
|
|
303
|
-
"approvalAuthorizes": "source scouting/search only; no
|
|
286
|
+
"approvalAuthorizes": "source scouting/search only; no import/send"
|
|
304
287
|
},
|
|
305
288
|
"defaultWhenSourceUnspecified": [
|
|
306
289
|
"signal-discovery",
|
|
@@ -341,6 +324,8 @@
|
|
|
341
324
|
{
|
|
342
325
|
"action": "show_pre_scout_source_recommendation",
|
|
343
326
|
"uses": "request_user_input",
|
|
327
|
+
"oneShot": true,
|
|
328
|
+
"skipIf": "approved or leadSourceProvider",
|
|
344
329
|
"requiredBeforeTools": [
|
|
345
330
|
"get_provider_prompt",
|
|
346
331
|
"search_signals",
|
|
@@ -406,11 +391,7 @@
|
|
|
406
391
|
"stopOnFirstViableUnlessComparisonRequested": true
|
|
407
392
|
}
|
|
408
393
|
],
|
|
409
|
-
"requiredCampaignState": [
|
|
410
|
-
"campaignId",
|
|
411
|
-
"campaignBrief",
|
|
412
|
-
"currentStep"
|
|
413
|
-
],
|
|
394
|
+
"requiredCampaignState": ["campaignId", "campaignBrief", "currentStep"],
|
|
414
395
|
"allowedTools": [
|
|
415
396
|
"get_source_scout_registry",
|
|
416
397
|
"get_provider_prompt",
|
|
@@ -438,11 +419,7 @@
|
|
|
438
419
|
"queue_cells",
|
|
439
420
|
"start_campaign"
|
|
440
421
|
],
|
|
441
|
-
"waitFor": [
|
|
442
|
-
"lead_review_ready",
|
|
443
|
-
"revise_brief",
|
|
444
|
-
"confirm_with_user"
|
|
445
|
-
],
|
|
422
|
+
"waitFor": ["lead_review_ready", "revise_brief", "confirm_with_user"],
|
|
446
423
|
"transitions": {
|
|
447
424
|
"lead_review_ready": "lead-review",
|
|
448
425
|
"revise_brief": "brief-interview",
|
|
@@ -458,9 +435,9 @@
|
|
|
458
435
|
"requiredInlineFields": [
|
|
459
436
|
"primary source and exact filters/recipe",
|
|
460
437
|
"specific source action awaiting approval",
|
|
461
|
-
"for Signal Discovery: Source Recommendation
|
|
438
|
+
"for Signal Discovery: compact Source Recommendation with target, raw-engager math, selected-post table, review checkpoint, estimated fit, and fallback",
|
|
462
439
|
"for Signal Discovery: selected post count and target engager/source-candidate volume",
|
|
463
|
-
"
|
|
440
|
+
"15-row review/process sample size",
|
|
464
441
|
"runner-up and why it lost",
|
|
465
442
|
"raw volume",
|
|
466
443
|
"sampled people",
|
|
@@ -475,14 +452,14 @@
|
|
|
475
452
|
"uses": "request_user_input",
|
|
476
453
|
"choices": [
|
|
477
454
|
"Approve scraping N Signal Discovery posts",
|
|
478
|
-
"Run the approved source import
|
|
455
|
+
"Run the approved source import",
|
|
479
456
|
"Revise source",
|
|
480
457
|
"Pause here"
|
|
481
458
|
],
|
|
482
459
|
"approvalChoiceLabelsByProvider": {
|
|
483
460
|
"signal-discovery": "Approve scraping {selectedPostCount} Signal Discovery posts?",
|
|
484
|
-
"sales-nav": "Import the approved Sales Nav
|
|
485
|
-
"prospeo": "Import the approved Prospeo
|
|
461
|
+
"sales-nav": "Import the approved Sales Nav source list",
|
|
462
|
+
"prospeo": "Import the approved Prospeo source list"
|
|
486
463
|
},
|
|
487
464
|
"postApprovalContract": {
|
|
488
465
|
"singleUseApproval": true,
|
|
@@ -491,8 +468,8 @@
|
|
|
491
468
|
"show_source_decision_card",
|
|
492
469
|
"ask_source_review_choice"
|
|
493
470
|
],
|
|
494
|
-
"requiredNextActionAfterApproval": "
|
|
495
|
-
"signalDiscoveryNextTool": "import_leads({
|
|
471
|
+
"requiredNextActionAfterApproval": "ack once; call import_leads immediately",
|
|
472
|
+
"signalDiscoveryNextTool": "import_leads({ provider: \"signal-discovery\", targetEngagerCount, maxPostsToScrape, confirmed: true })"
|
|
496
473
|
}
|
|
497
474
|
}
|
|
498
475
|
],
|
|
@@ -530,7 +507,7 @@
|
|
|
530
507
|
},
|
|
531
508
|
{
|
|
532
509
|
"id": "auto-execute-leads",
|
|
533
|
-
"label": "
|
|
510
|
+
"label": "Materialize confirmed source list",
|
|
534
511
|
"currentStepValue": "auto-execute-leads",
|
|
535
512
|
"reference": "references/step-13-import-leads.md",
|
|
536
513
|
"onEnter": [
|
|
@@ -546,10 +523,11 @@
|
|
|
546
523
|
"requiredFields": [
|
|
547
524
|
"campaignOfferId",
|
|
548
525
|
"selected source/list",
|
|
549
|
-
"
|
|
526
|
+
"sourceListTarget or targetEngagerCount"
|
|
550
527
|
],
|
|
551
528
|
"requiredValues": {
|
|
552
|
-
"
|
|
529
|
+
"salesNavProspeoDefaultSourceListTarget": 1000,
|
|
530
|
+
"signalDiscoveryDefaultEngagerTarget": 1500
|
|
553
531
|
},
|
|
554
532
|
"modeAddHandshake": {
|
|
555
533
|
"firstCallReturns": "needsModeSelection when adding to an existing campaign-attached list",
|
|
@@ -567,10 +545,10 @@
|
|
|
567
545
|
"selectedLeadListId",
|
|
568
546
|
"reviewBatchLimit"
|
|
569
547
|
],
|
|
570
|
-
"
|
|
571
|
-
"
|
|
572
|
-
|
|
573
|
-
]
|
|
548
|
+
"requiredValues": {
|
|
549
|
+
"reviewBatchLimit": 15
|
|
550
|
+
},
|
|
551
|
+
"capture": ["workflowTableId", "reviewBatchRowIds"]
|
|
574
552
|
},
|
|
575
553
|
{
|
|
576
554
|
"tool": "wait_for_campaign_table_ready"
|
|
@@ -581,9 +559,7 @@
|
|
|
581
559
|
"tableId": "{workflowTableId}",
|
|
582
560
|
"limit": 15
|
|
583
561
|
},
|
|
584
|
-
"capture": [
|
|
585
|
-
"reviewBatchRowHash"
|
|
586
|
-
]
|
|
562
|
+
"capture": ["reviewBatchRowHash"]
|
|
587
563
|
},
|
|
588
564
|
{
|
|
589
565
|
"action": "summarize_review_batch_and_advance_to_filter_choice",
|
|
@@ -618,9 +594,9 @@
|
|
|
618
594
|
"bulk_enrich_with_prospeo",
|
|
619
595
|
"save_rubrics"
|
|
620
596
|
],
|
|
621
|
-
"waitFor": "
|
|
597
|
+
"waitFor": "source_list_confirmed_and_review_sample_ready",
|
|
622
598
|
"transitions": {
|
|
623
|
-
"
|
|
599
|
+
"source_list_confirmed_and_review_sample_ready": "filter-choice",
|
|
624
600
|
"escalation_triggered": "escalation"
|
|
625
601
|
}
|
|
626
602
|
},
|
|
@@ -639,11 +615,7 @@
|
|
|
639
615
|
{
|
|
640
616
|
"action": "ask_filter_choice",
|
|
641
617
|
"uses": "request_user_input",
|
|
642
|
-
"choices": [
|
|
643
|
-
"Use filters",
|
|
644
|
-
"Skip filters",
|
|
645
|
-
"Revise source"
|
|
646
|
-
]
|
|
618
|
+
"choices": ["Use filters", "Skip filters", "Revise source"]
|
|
647
619
|
}
|
|
648
620
|
],
|
|
649
621
|
"hardRules": [
|
|
@@ -679,11 +651,7 @@
|
|
|
679
651
|
"start_campaign",
|
|
680
652
|
"generate_messages"
|
|
681
653
|
],
|
|
682
|
-
"waitFor": [
|
|
683
|
-
"filters_enabled",
|
|
684
|
-
"filters_skipped",
|
|
685
|
-
"revise_leads"
|
|
686
|
-
],
|
|
654
|
+
"waitFor": ["filters_enabled", "filters_skipped", "revise_leads"],
|
|
687
655
|
"transitions": {
|
|
688
656
|
"filters_enabled": "post-lead-workstreams",
|
|
689
657
|
"filters_skipped": "message-generation",
|
|
@@ -749,16 +717,19 @@
|
|
|
749
717
|
"action": "save_filter_rubrics_to_campaign",
|
|
750
718
|
"tool": "save_rubrics",
|
|
751
719
|
"when": "filters_enabled and rubrics are production-shaped",
|
|
752
|
-
"requiredFields": [
|
|
753
|
-
"campaignOfferId",
|
|
754
|
-
"leadScoringRubrics"
|
|
755
|
-
],
|
|
720
|
+
"requiredFields": ["campaignOfferId", "leadScoringRubrics"],
|
|
756
721
|
"writesCampaignState": "leadScoringRubrics",
|
|
757
722
|
"requiredSideEffects": {
|
|
758
723
|
"enableICPFilters": true,
|
|
759
|
-
"currentStep": "
|
|
760
|
-
"watchNarration.headline": "Filter rules saved"
|
|
724
|
+
"currentStep": "create-icp-rubric",
|
|
725
|
+
"watchNarration.headline": "Filter rules saved for review"
|
|
761
726
|
}
|
|
727
|
+
},
|
|
728
|
+
{
|
|
729
|
+
"action": "ask_filter_rubric_review_choice",
|
|
730
|
+
"uses": "request_user_input",
|
|
731
|
+
"choices": ["Approve filters", "Revise filters", "Pause"],
|
|
732
|
+
"purpose": "let the user read saved rubrics before Filter Leads or enrichment"
|
|
762
733
|
}
|
|
763
734
|
],
|
|
764
735
|
"requiredCampaignState": [
|
|
@@ -792,13 +763,14 @@
|
|
|
792
763
|
"generate_messages"
|
|
793
764
|
],
|
|
794
765
|
"waitFor": [
|
|
795
|
-
"
|
|
766
|
+
"filter_rubrics_approved",
|
|
796
767
|
"revise_leads",
|
|
797
768
|
"revise_rubric",
|
|
798
769
|
"revise_messaging"
|
|
799
770
|
],
|
|
800
771
|
"hardRules": [
|
|
801
|
-
"
|
|
772
|
+
"after_save_rubrics_currentStep_must_stay_create-icp-rubric_until_filter_approval",
|
|
773
|
+
"filter_approval_required_before_apply-icp-rubric_or_queue_cells",
|
|
802
774
|
"do_not_move_browser_to_messages_until_filter_leads_step_is_current_or_filters_are_explicitly_skipped",
|
|
803
775
|
"no_post_lead_worker_or_deep_prompt_before_filter_choice",
|
|
804
776
|
"lead_fit_builder_starts_only_after_filters_enabled",
|
|
@@ -806,7 +778,7 @@
|
|
|
806
778
|
"msg_draft_no_cells"
|
|
807
779
|
],
|
|
808
780
|
"transitions": {
|
|
809
|
-
"
|
|
781
|
+
"filter_rubrics_approved": "message-generation",
|
|
810
782
|
"revise_leads": "find-leads",
|
|
811
783
|
"revise_rubric": "filter-rubric",
|
|
812
784
|
"revise_messaging": "message-generation",
|
|
@@ -826,22 +798,21 @@
|
|
|
826
798
|
},
|
|
827
799
|
{
|
|
828
800
|
"tool": "save_rubrics",
|
|
829
|
-
"requiredFields": [
|
|
830
|
-
"campaignOfferId",
|
|
831
|
-
"leadScoringRubrics"
|
|
832
|
-
],
|
|
801
|
+
"requiredFields": ["campaignOfferId", "leadScoringRubrics"],
|
|
833
802
|
"writesCampaignState": "leadScoringRubrics",
|
|
834
803
|
"requiredSideEffects": {
|
|
835
804
|
"enableICPFilters": true,
|
|
836
|
-
"currentStep": "
|
|
837
|
-
"watchNarration.headline": "Filter rules saved"
|
|
805
|
+
"currentStep": "create-icp-rubric",
|
|
806
|
+
"watchNarration.headline": "Filter rules saved for review"
|
|
838
807
|
}
|
|
808
|
+
},
|
|
809
|
+
{
|
|
810
|
+
"action": "ask_filter_rubric_review_choice",
|
|
811
|
+
"uses": "request_user_input",
|
|
812
|
+
"choices": ["Approve filters", "Revise filters", "Pause"]
|
|
839
813
|
}
|
|
840
814
|
],
|
|
841
|
-
"requiredCampaignState": [
|
|
842
|
-
"campaignId",
|
|
843
|
-
"workflowTableId"
|
|
844
|
-
],
|
|
815
|
+
"requiredCampaignState": ["campaignId", "workflowTableId"],
|
|
845
816
|
"allowedTools": [
|
|
846
817
|
"get_subskill_asset",
|
|
847
818
|
"save_rubrics",
|
|
@@ -859,13 +830,13 @@
|
|
|
859
830
|
"check_rubric"
|
|
860
831
|
],
|
|
861
832
|
"waitFor": [
|
|
862
|
-
"
|
|
833
|
+
"filter_rubrics_approved",
|
|
863
834
|
"revise_leads",
|
|
864
835
|
"confirm_with_user",
|
|
865
836
|
"auto_continue"
|
|
866
837
|
],
|
|
867
838
|
"transitions": {
|
|
868
|
-
"
|
|
839
|
+
"filter_rubrics_approved": "message-generation",
|
|
869
840
|
"revise_leads": "find-leads",
|
|
870
841
|
"confirm_with_user": "message-generation",
|
|
871
842
|
"auto_continue": "message-generation"
|
|
@@ -879,7 +850,7 @@
|
|
|
879
850
|
"action": "set_message_review_visible_step_by_filter_choice",
|
|
880
851
|
"tool": "update_campaign",
|
|
881
852
|
"branchRules": [
|
|
882
|
-
"yes: currentStep=apply-icp-rubric; wait on Filter Leads",
|
|
853
|
+
"yes after filter approval: currentStep=apply-icp-rubric; wait on Filter Leads",
|
|
883
854
|
"no: currentStep=messages; message review"
|
|
884
855
|
],
|
|
885
856
|
"watchNarration.stage": "fit-message"
|
|
@@ -910,9 +881,9 @@
|
|
|
910
881
|
"request_user_input"
|
|
911
882
|
],
|
|
912
883
|
"toolRules": [
|
|
913
|
-
"
|
|
914
|
-
"
|
|
915
|
-
"
|
|
884
|
+
"Run post-find-leads-message-scout when available; otherwise parent fallback must load get_subskill_prompt({ subskillName: \"generate-messages\" }) from live state.",
|
|
885
|
+
"brief.md, lead-review.md, and lead-sample.json are optional debug context only.",
|
|
886
|
+
"messageDraftRecommendation returns templateRecommendation, tokenFillRules, renderedSample, concerns, status, basisToken, outputAt, outputHash, and error/retry detail.",
|
|
916
887
|
"If campaign/source/table/review-batch basis does not match, classify the output stale or blocked."
|
|
917
888
|
],
|
|
918
889
|
"doNotAllow": [
|
|
@@ -976,10 +947,7 @@
|
|
|
976
947
|
{
|
|
977
948
|
"action": "ask_message_review_choice",
|
|
978
949
|
"uses": "request_user_input",
|
|
979
|
-
"choices": [
|
|
980
|
-
"approve-message",
|
|
981
|
-
"revise-messaging"
|
|
982
|
-
]
|
|
950
|
+
"choices": ["approve-message", "revise-messaging"]
|
|
983
951
|
},
|
|
984
952
|
{
|
|
985
953
|
"action": "sync_approved_message_set_to_campaign_brief",
|
|
@@ -1004,9 +972,7 @@
|
|
|
1004
972
|
"request_user_input",
|
|
1005
973
|
"update_campaign_brief",
|
|
1006
974
|
"update_campaign",
|
|
1007
|
-
"get_rows_minimal"
|
|
1008
|
-
"queue_cells",
|
|
1009
|
-
"wait_for_rubric_results"
|
|
975
|
+
"get_rows_minimal"
|
|
1010
976
|
],
|
|
1011
977
|
"doNotAllow": [
|
|
1012
978
|
"create_campaign",
|
|
@@ -1016,10 +982,7 @@
|
|
|
1016
982
|
"confirm_lead_list",
|
|
1017
983
|
"start_campaign"
|
|
1018
984
|
],
|
|
1019
|
-
"waitFor": [
|
|
1020
|
-
"message_approved",
|
|
1021
|
-
"revise_messaging"
|
|
1022
|
-
],
|
|
985
|
+
"waitFor": ["message_approved", "revise_messaging"],
|
|
1023
986
|
"transitions": {
|
|
1024
987
|
"message_approved": "validate-sample",
|
|
1025
988
|
"revise_messaging": "message-generation"
|
|
@@ -1027,10 +990,10 @@
|
|
|
1027
990
|
},
|
|
1028
991
|
{
|
|
1029
992
|
"id": "validate-sample",
|
|
1030
|
-
"label": "Validate
|
|
993
|
+
"label": "Validate first review/process sample",
|
|
1031
994
|
"currentStepValue": "apply-icp-rubric",
|
|
1032
995
|
"reference": "references/sample-validation-loop.md",
|
|
1033
|
-
"visibleStepRule": "
|
|
996
|
+
"visibleStepRule": "Filter Leads is reached only after saved-filter approval. On approve-message, save the template, refresh apply-icp-rubric narration, then queue bounded Enrich Prospect cells.",
|
|
1034
997
|
"onEnter": [
|
|
1035
998
|
{
|
|
1036
999
|
"tool": "update_campaign",
|
|
@@ -1043,13 +1006,13 @@
|
|
|
1043
1006
|
},
|
|
1044
1007
|
{
|
|
1045
1008
|
"tool": "queue_cells",
|
|
1046
|
-
"purpose": "queue ICP/enrichment cells for the
|
|
1009
|
+
"purpose": "queue ICP/enrichment cells for the first 15 review/process rows only",
|
|
1047
1010
|
"requiredFields": [
|
|
1048
1011
|
"workflowTableId",
|
|
1049
1012
|
"reviewBatchRowIds",
|
|
1050
1013
|
"cellTypes"
|
|
1051
1014
|
],
|
|
1052
|
-
"targetCountSource": "reviewBatchRowIds.length"
|
|
1015
|
+
"targetCountSource": "reviewBatchRowIds.length (default 15)"
|
|
1053
1016
|
},
|
|
1054
1017
|
{
|
|
1055
1018
|
"tool": "wait_for_campaign_table_ready",
|
|
@@ -1085,7 +1048,8 @@
|
|
|
1085
1048
|
"requiredCampaignState": [
|
|
1086
1049
|
"campaignId",
|
|
1087
1050
|
"workflowTableId",
|
|
1088
|
-
"approvedMessageTemplate"
|
|
1051
|
+
"approvedMessageTemplate",
|
|
1052
|
+
"filterRubricsApproved when enableICPFilters=true"
|
|
1089
1053
|
],
|
|
1090
1054
|
"allowedTools": [
|
|
1091
1055
|
"get_subskill_asset",
|
|
@@ -1111,10 +1075,7 @@
|
|
|
1111
1075
|
"timeout_never_repeats_without_customer_handoff",
|
|
1112
1076
|
"timeout_or_underfloor_sample_never_advances_to_settings"
|
|
1113
1077
|
],
|
|
1114
|
-
"waitFor": [
|
|
1115
|
-
"sample_validated",
|
|
1116
|
-
"sample_revision_required"
|
|
1117
|
-
],
|
|
1078
|
+
"waitFor": ["sample_validated", "sample_revision_required"],
|
|
1118
1079
|
"transitions": {
|
|
1119
1080
|
"sample_validated": "auto-execute-messaging",
|
|
1120
1081
|
"sample_revision_required": "lead-review",
|
|
@@ -1229,10 +1190,7 @@
|
|
|
1229
1190
|
"opus_reserved_for_highest_value_subset",
|
|
1230
1191
|
"proposed_token_never_persisted_in_rewrite"
|
|
1231
1192
|
],
|
|
1232
|
-
"waitFor": [
|
|
1233
|
-
"generated_messages_approved",
|
|
1234
|
-
"sample_revision_required"
|
|
1235
|
-
],
|
|
1193
|
+
"waitFor": ["generated_messages_approved", "sample_revision_required"],
|
|
1236
1194
|
"transitions": {
|
|
1237
1195
|
"generated_messages_approved": "awaiting-user-greenlight",
|
|
1238
1196
|
"revise_filters": "filter-rubric",
|
|
@@ -1287,9 +1245,7 @@
|
|
|
1287
1245
|
"tool": "update_campaign",
|
|
1288
1246
|
"when": "user selected an available connected sender",
|
|
1289
1247
|
"requiredValues": {
|
|
1290
|
-
"senderIds": [
|
|
1291
|
-
"{selectedSenderId}"
|
|
1292
|
-
],
|
|
1248
|
+
"senderIds": ["{selectedSenderId}"],
|
|
1293
1249
|
"currentStep": "sequence",
|
|
1294
1250
|
"watchNarration.stage": "review-ready"
|
|
1295
1251
|
},
|
|
@@ -1309,11 +1265,7 @@
|
|
|
1309
1265
|
"action": "ask_final_launch_greenlight",
|
|
1310
1266
|
"uses": "request_user_input",
|
|
1311
1267
|
"singleChoice": true,
|
|
1312
|
-
"choices": [
|
|
1313
|
-
"Start campaign",
|
|
1314
|
-
"Review campaign first",
|
|
1315
|
-
"Pause here"
|
|
1316
|
-
],
|
|
1268
|
+
"choices": ["Start campaign", "Review campaign first", "Pause here"],
|
|
1317
1269
|
"onUserStart": "claude-greenlight"
|
|
1318
1270
|
}
|
|
1319
1271
|
],
|
|
@@ -1326,10 +1278,7 @@
|
|
|
1326
1278
|
"AskUserQuestion",
|
|
1327
1279
|
"request_user_input"
|
|
1328
1280
|
],
|
|
1329
|
-
"doNotAllow": [
|
|
1330
|
-
"start_campaign",
|
|
1331
|
-
"import_leads"
|
|
1332
|
-
],
|
|
1281
|
+
"doNotAllow": ["start_campaign", "import_leads"],
|
|
1333
1282
|
"autoStart": false,
|
|
1334
1283
|
"watchRequired": true,
|
|
1335
1284
|
"waitFor": [
|
|
@@ -1369,9 +1318,7 @@
|
|
|
1369
1318
|
},
|
|
1370
1319
|
{
|
|
1371
1320
|
"tool": "start_campaign",
|
|
1372
|
-
"requiredFields": [
|
|
1373
|
-
"campaignId"
|
|
1374
|
-
],
|
|
1321
|
+
"requiredFields": ["campaignId"],
|
|
1375
1322
|
"persistsCurrentStep": "running",
|
|
1376
1323
|
"watchNarrationRule": "After start_campaign succeeds, the running state must say the final greenlight was accepted, the campaign is now live/running, and the user can watch progress from the campaign."
|
|
1377
1324
|
}
|
|
@@ -1401,28 +1348,16 @@
|
|
|
1401
1348
|
"action": "surface_campaign_live_confirmation"
|
|
1402
1349
|
}
|
|
1403
1350
|
],
|
|
1404
|
-
"allowedTools": [
|
|
1405
|
-
|
|
1406
|
-
"AskUserQuestion",
|
|
1407
|
-
"request_user_input"
|
|
1408
|
-
],
|
|
1409
|
-
"doNotAllow": [
|
|
1410
|
-
"start_campaign"
|
|
1411
|
-
],
|
|
1351
|
+
"allowedTools": ["get_campaign", "AskUserQuestion", "request_user_input"],
|
|
1352
|
+
"doNotAllow": ["start_campaign"],
|
|
1412
1353
|
"terminal": true
|
|
1413
1354
|
},
|
|
1414
1355
|
{
|
|
1415
1356
|
"id": "escalation",
|
|
1416
1357
|
"label": "Escalation",
|
|
1417
1358
|
"reference": "references/escalation-ladder.md",
|
|
1418
|
-
"allowedTools": [
|
|
1419
|
-
|
|
1420
|
-
"request_user_input"
|
|
1421
|
-
],
|
|
1422
|
-
"doNotAllow": [
|
|
1423
|
-
"start_campaign",
|
|
1424
|
-
"import_leads"
|
|
1425
|
-
],
|
|
1359
|
+
"allowedTools": ["AskUserQuestion", "request_user_input"],
|
|
1360
|
+
"doNotAllow": ["start_campaign", "import_leads"],
|
|
1426
1361
|
"transitions": {
|
|
1427
1362
|
"revise_brief": "brief-interview",
|
|
1428
1363
|
"revise_leads": "find-leads",
|
|
@@ -1434,10 +1369,7 @@
|
|
|
1434
1369
|
{
|
|
1435
1370
|
"id": "abort",
|
|
1436
1371
|
"label": "Abort",
|
|
1437
|
-
"allowedTools": [
|
|
1438
|
-
"AskUserQuestion",
|
|
1439
|
-
"request_user_input"
|
|
1440
|
-
],
|
|
1372
|
+
"allowedTools": ["AskUserQuestion", "request_user_input"],
|
|
1441
1373
|
"terminal": true
|
|
1442
1374
|
}
|
|
1443
1375
|
]
|
|
@@ -36,10 +36,11 @@ mutation gates:
|
|
|
36
36
|
plan or explicitly chooses a source.
|
|
37
37
|
- Do not call `import_leads` or `confirm_lead_list` until the concrete source
|
|
38
38
|
action is approved.
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
- Copy the confirmed source list into the campaign, but process only the first
|
|
40
|
+
review/process sample before message approval.
|
|
41
|
+
- Do not call `queue_cells` for enrichment/filtering until filters are approved
|
|
42
|
+
when enabled and the default Use Template path has an approved message
|
|
43
|
+
template/token rule set.
|
|
43
44
|
- Do not attach a sequence or call `start_campaign` until the user explicitly
|
|
44
45
|
chooses to launch.
|
|
45
46
|
|
|
@@ -50,13 +51,13 @@ Customer roleplay critique is advisory only. It cannot approve a campaign.
|
|
|
50
51
|
Do not run a downstream stage until the matching live state exists:
|
|
51
52
|
|
|
52
53
|
- campaign shell exists before a watch link is shown as active
|
|
53
|
-
- selected source/list state exists before
|
|
54
|
-
- `workflowTableId` and non-empty
|
|
54
|
+
- selected source/list state exists before copying source rows into the campaign
|
|
55
|
+
- `workflowTableId` and non-empty review/process sample rows exist before filter
|
|
55
56
|
and message branches run
|
|
56
|
-
- `leadScoringRubrics` are saved
|
|
57
|
+
- `leadScoringRubrics` are saved and approved before Filter Leads when filters
|
|
57
58
|
are enabled
|
|
58
|
-
- approved message template/token rules are written to campaign brief before
|
|
59
|
-
queueing
|
|
59
|
+
- approved message template/token rules are written to the campaign brief before
|
|
60
|
+
queueing enrichment, ICP scoring, or Generate Message cells
|
|
60
61
|
|
|
61
62
|
## 5) Revision Routing
|
|
62
63
|
|
|
@@ -70,9 +71,9 @@ Revision choices route back to the exact upstream stage:
|
|
|
70
71
|
|
|
71
72
|
## 6) Post-Message Tail
|
|
72
73
|
|
|
73
|
-
After message approval, queue only the
|
|
74
|
-
the watched app through enrichment, ICP filtering, and approved-template
|
|
75
|
-
|
|
74
|
+
After message approval, queue only the first review/process sample cells needed to move
|
|
75
|
+
the watched app through enrichment, ICP filtering, and approved-template message
|
|
76
|
+
generation. Keep the tail observable through watch narration.
|
|
76
77
|
|
|
77
78
|
The tail stops at `awaiting-user-greenlight`. Never call `start_campaign`
|
|
78
79
|
inside the autonomous tail.
|
|
@@ -14,9 +14,10 @@ packet.
|
|
|
14
14
|
## Purpose
|
|
15
15
|
|
|
16
16
|
The approval gate used to be the place where the user authorized
|
|
17
|
-
spend/send-adjacent mutation. It is now compatibility-only. New runs
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
spend/send-adjacent mutation. It is now compatibility-only. New runs copy the
|
|
18
|
+
confirmed source list into the campaign after source approval, use the first
|
|
19
|
+
review/process sample for post-import review, save rubrics and the approved
|
|
20
|
+
message template, and only then queue the cascade.
|
|
20
21
|
|
|
21
22
|
If `campaign-shell.json` exists, a draft `CampaignOffer` row already exists but
|
|
22
23
|
must remain non-sendable. If no shell exists, no campaign row exists until the
|