@sellable/mcp 0.1.127 → 0.1.129
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/agents/post-find-leads-message-scout.md +77 -134
- package/agents/registry.json +11 -4
- package/dist/tools/cells.js +1 -1
- package/dist/tools/prompts.d.ts +6 -2
- package/dist/tools/prompts.js +14 -6
- package/package.json +1 -1
- package/skills/create-campaign/SKILL.md +34 -23
- package/skills/create-campaign-v2/SKILL.md +144 -88
- package/skills/create-campaign-v2/SOUL.md +18 -25
- package/skills/create-campaign-v2/core/flow.v2.json +323 -82
- package/skills/create-campaign-v2/references/watch-guide-narration.md +27 -10
- package/skills/create-rubric/SKILL.md +17 -6
|
@@ -50,8 +50,10 @@ template, senderIds, sequence template, and running state.
|
|
|
50
50
|
There is no separate approval-packet, commit-gate, or mint step in the active
|
|
51
51
|
shell-first flow. The campaign exists early for watch mode. The hard boundary
|
|
52
52
|
is import/enrichment: no leads are imported, no workflow cells are queued, no
|
|
53
|
-
sequence is attached, and nothing starts until the source is selected,
|
|
54
|
-
|
|
53
|
+
sequence is attached, and nothing starts until the source is selected, filter
|
|
54
|
+
choice is resolved, rubrics are saved when filters are enabled, and Messages
|
|
55
|
+
has either approved template/token rules or selected the product's AI-generated
|
|
56
|
+
path.
|
|
55
57
|
</objective>
|
|
56
58
|
|
|
57
59
|
<files>
|
|
@@ -96,8 +98,8 @@ Optional debug/UAT draft directory, disabled in normal customer runs:
|
|
|
96
98
|
state. Use `create-offer` for the brief, `pick-provider` or the selected
|
|
97
99
|
provider step while sourcing, `filter-choice` after the 15-row review batch is
|
|
98
100
|
imported, `messages`/`auto-execute-messaging` for message work,
|
|
99
|
-
`
|
|
100
|
-
|
|
101
|
+
`awaiting-user-greenlight` for Settings, and `validate-sample` only for
|
|
102
|
+
recovery/legacy validation if reached. Do not advance `currentStep` backward.
|
|
101
103
|
- After the shell is minted, normal resume paths read the CampaignOffer first.
|
|
102
104
|
Use debug files to explain or reconstruct work, not to decide whether a
|
|
103
105
|
post-mint gate is allowed. validation/debug artifacts are not durable campaign
|
|
@@ -442,11 +444,12 @@ brief`, `Revise target`, `Revise offer/proof`, and `Other / custom`.
|
|
|
442
444
|
not given a specific source direction, use the default sequential source
|
|
443
445
|
funnel:
|
|
444
446
|
`Cool. I'm going to find people who are both a good fit and active enough to
|
|
445
|
-
be worth a LinkedIn test. I'll start with
|
|
446
|
-
that gives the strongest message context if enough ICP-looking
|
|
447
|
-
engaging. If that does not clear a quick viability check, I'll switch
|
|
448
|
-
|
|
449
|
-
|
|
447
|
+
be worth a LinkedIn test. I'll start with people engaging with relevant LinkedIn
|
|
448
|
+
posts because that gives the strongest message context if enough ICP-looking
|
|
449
|
+
people are engaging. If that does not clear a quick viability check, I'll switch
|
|
450
|
+
to Sales Nav to find ICP people actively posting on LinkedIn, then search by
|
|
451
|
+
titles, and use Prospeo for a broader account/contact path. No leads import
|
|
452
|
+
until you approve the source.`
|
|
450
453
|
The watched campaign should still be on Pick Provider while this source logic
|
|
451
454
|
is being explained. If the default first lane is Signal Discovery, say clearly
|
|
452
455
|
that Codex is about to test Signal Discovery as a viability path, not import
|
|
@@ -463,19 +466,23 @@ fallback. No leads import until you approve the source.`
|
|
|
463
466
|
- explicit compare request -> compare only the requested sources
|
|
464
467
|
- In watch mode, do not skip the Pick Provider checkpoint. First move the
|
|
465
468
|
campaign to `pick-provider` and narrate the source-selection reasoning there.
|
|
466
|
-
|
|
467
|
-
|
|
469
|
+
While the watched browser is still on Pick Provider, ask for approval before
|
|
470
|
+
starting Signal Discovery or a user-directed first lane. After that visible
|
|
471
|
+
checkpoint and approval, move the campaign to the first source lane that will
|
|
472
|
+
actually be tested (`signal-discovery`, `sales-nav`, `prospeo`, or the
|
|
468
473
|
user-directed lane), then run the campaign-attached provider prompt + provider
|
|
469
474
|
search in the parent thread with `campaignOfferId`, `confirmed: true`, and
|
|
470
|
-
`currentStep` when the tool accepts it. If that lane
|
|
471
|
-
|
|
472
|
-
|
|
475
|
+
`currentStep` when the tool accepts it. If that lane has timeout/error, zero
|
|
476
|
+
raw results, weak ICP fit, or weak message context, update the campaign step
|
|
477
|
+
and watchNarration before trying the next approved lane or ask the user to
|
|
478
|
+
revise the source/target before import. All lanes failed is a terminal
|
|
479
|
+
revise-source state, not an import state.
|
|
473
480
|
- After the lead sample/source decision is ready and approved,
|
|
474
481
|
show the next progress line:
|
|
475
482
|
`Lead source is set. I'll import the first 15-row review batch into the
|
|
476
|
-
campaign table, then
|
|
477
|
-
|
|
478
|
-
|
|
483
|
+
campaign table, then ask you to Choose filters or skip. I may let the Message
|
|
484
|
+
Draft Builder prepare a template in the background, but template review waits
|
|
485
|
+
until the filter choice is resolved and you choose Use Template.`
|
|
479
486
|
- During long post-intake work, show concise progress checkpoints before the
|
|
480
487
|
next expensive stage: source being checked, source switch/tradeoff if any,
|
|
481
488
|
lead sample usable, filter/message drafting, and message-review rule loading.
|
|
@@ -517,17 +524,19 @@ checks wait until the message draft is ready and approved.`
|
|
|
517
524
|
candidate messages and element tests, but it cannot select the final winner
|
|
518
525
|
and cannot override `lead-filter.md`.
|
|
519
526
|
- `message-validation.md` is the internal validation artifact produced by the
|
|
520
|
-
|
|
527
|
+
Message Draft Builder / `message generation` stage. It is provisional until
|
|
528
|
+
the user answers filter choice and then chooses Use Template in Messages.
|
|
521
529
|
- `message-review.md` and `message-review-decision.md` are the mandatory
|
|
522
530
|
message quality gate outputs between `message-validation.md` and
|
|
523
531
|
`approval-packet.md`.
|
|
524
532
|
- Run the dependency chain as a DAG: `create-campaign-brief` -> `find leads` ->
|
|
525
533
|
bounded import/confirm. Once the source decision, lead sample, and campaign
|
|
526
|
-
table `workflowTableId` exist, the normal path is the
|
|
527
|
-
`post-lead-workstreams`
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
534
|
+
table `workflowTableId` exist, the normal path is the `filter-choice` user
|
|
535
|
+
gate. If the user chooses filters, `post-lead-workstreams` launches filter
|
|
536
|
+
leads and can let the Message Draft Builder run from the same basis (live
|
|
537
|
+
campaign brief, source decision, lead sample, and the imported review-batch
|
|
538
|
+
rows) as separate workstreams when the host exposes the named Sellable
|
|
539
|
+
post-find-leads agents or real background work.
|
|
531
540
|
First call `get_post_find_leads_scout_registry` and use the returned
|
|
532
541
|
canonical `name` values only when those names are available in the current
|
|
533
542
|
runtime. In Claude Code, use both returned Task/Agent subagents in the same
|
|
@@ -538,14 +547,19 @@ checks wait until the message draft is ready and approved.`
|
|
|
538
547
|
context. Do not surface agent install status to the customer. The existing
|
|
539
548
|
`filter-rubric` and `message-generation` steps remain focused retry and
|
|
540
549
|
resume targets.
|
|
541
|
-
- Message generation does not need `lead-filter.md` to start
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
550
|
+
- Message generation does not need `lead-filter.md` to start, but it is only
|
|
551
|
+
background template drafting until the user reaches Messages. The moment the
|
|
552
|
+
bounded review batch is imported, `workflowTableId` is ready, and the user is
|
|
553
|
+
on/after filter choice, the Message Draft Builder may start from the live
|
|
554
|
+
campaign brief, source decision, lead sample, and imported campaign table
|
|
555
|
+
sample. It can prepare proof inventory, token strategy, and candidate angles
|
|
556
|
+
while filter-leads tightens keep/exclude rules. Template review cannot start
|
|
557
|
+
until filter choice is answered and the user chooses Use Template. If filters
|
|
558
|
+
are enabled, template review is locked until rubrics are saved, a bounded
|
|
559
|
+
filter run has usable passing/probably passing rows, and the draft reconciles
|
|
560
|
+
to those rows. Prefer at least 2 usable passing rows; if only 1 passes, show
|
|
561
|
+
weak-sample copy and ask whether to continue, revise, import more, or skip
|
|
562
|
+
filters.
|
|
549
563
|
If a legacy/resume host starts message prep from preview rows before import,
|
|
550
564
|
it still needs at least 3 probable good-fit rows and must reconcile the final
|
|
551
565
|
winner against the imported review batch before message review.
|
|
@@ -557,29 +571,19 @@ checks wait until the message draft is ready and approved.`
|
|
|
557
571
|
provisional candidate work from probable good-fit rows in `lead-sample.json`,
|
|
558
572
|
but the final `message-validation.md` winner must cite basis rows from
|
|
559
573
|
`lead-sample.json` that still pass `lead-filter.md`.
|
|
560
|
-
- Parallel means real parallel execution, not optimistic progress copy.
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
each scout loads only its own provider prompt. If host subagents are
|
|
574
|
-
unavailable or the names are not visible, use the same provider probes via
|
|
575
|
-
independent MCP/tool calls in the parent thread or dedicated Sellable MCP
|
|
576
|
-
tools that perform server-side `Promise.all` fan-out. Do not write "source
|
|
577
|
-
scout agents are not installed" or similar host status into customer-facing
|
|
578
|
-
output. If real parallel execution is not available or not allowed, run the
|
|
579
|
-
same DAG sequentially and use honest copy: `I’ll tighten the filter first,
|
|
580
|
-
then draft the message from the same sample.` Never say `kicking off two
|
|
581
|
-
workstreams`, `in parallel`, or `background` unless parallel branches were
|
|
582
|
-
actually launched.
|
|
574
|
+
- Parallel means real parallel execution, not optimistic progress copy. Source
|
|
575
|
+
scouting is sequential by default: start with the first recommended lane from
|
|
576
|
+
`flow.v2.json`, usually Signal Discovery / LinkedIn engagement. Only launch
|
|
577
|
+
multiple named source scouts when the user explicitly requested comparison, a
|
|
578
|
+
prior lane failed, or the active flow marks the first lane borderline. The
|
|
579
|
+
fallback order is plain: use Sales Nav to find ICP people who are actively
|
|
580
|
+
posting on LinkedIn; if that is not enough, search Sales Nav by titles; if
|
|
581
|
+
that is still not enough, use Prospeo for a broader account/contact path.
|
|
582
|
+
Before any source scout dispatch, call `get_source_scout_registry` and use the
|
|
583
|
+
returned canonical `name` values. The parent thread should not preload every
|
|
584
|
+
provider prompt; each scout loads only its own provider prompt. Do not write
|
|
585
|
+
"source scout agents are not installed" or similar host status into
|
|
586
|
+
customer-facing output.
|
|
583
587
|
- Source scout parallelism must not hide all provider work from the watch UI.
|
|
584
588
|
The parent thread owns the first visible provider search: call the chosen
|
|
585
589
|
provider prompt/search with the minted CampaignOffer id and provider
|
|
@@ -612,15 +616,31 @@ workstreams`, `in parallel`, or `background` unless parallel branches were
|
|
|
612
616
|
batch`, and a no-launch safety note. Do not leave the guide saying
|
|
613
617
|
`source approved` or `I'll show the review-batch outcome` once import is
|
|
614
618
|
starting.
|
|
615
|
-
- After
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
619
|
+
- After the bounded review batch is present, update the watched browser to
|
|
620
|
+
`currentStep: "filter-choice"` with `watchNarration.stage: "fit-message"` and
|
|
621
|
+
ask the user to Choose filters or skip. If import succeeds but row readback
|
|
622
|
+
returns zero rows, do not move to filter choice; keep the user in source/import
|
|
623
|
+
recovery and ask whether to retry import, import more from the approved
|
|
624
|
+
source, or revise source. Active filtering starts only after rubrics are
|
|
625
|
+
saved; do not say filtering the batch before rubrics are saved.
|
|
626
|
+
- When the user chooses filters, immediately persist `enableICPFilters: true`
|
|
627
|
+
and `currentStep: "create-icp-rubric"` so the watched app leaves the filter
|
|
628
|
+
choice screen and shows that Codex is defining the rules in chat. After Lead
|
|
629
|
+
Fit Builder saves rubrics, move the watched browser to Filter Leads before
|
|
630
|
+
waiting for message work to finish. Persist `currentStep:
|
|
631
|
+
"apply-icp-rubric"` and `watchNarration.stage: "fit-message"`, then read the
|
|
632
|
+
bounded review batch with `get_rows_minimal`, queue only pending/error
|
|
633
|
+
`enrichCellId` values with `queue_cells`, and then wait for rubric results
|
|
634
|
+
with at least one passing row. Do not call `check_rubric` in the normal
|
|
635
|
+
create-campaign-v2 path. The next user-facing Messages screen must show mode
|
|
636
|
+
choice first: Use Template and AI Generated. Use Template is recommended. AI
|
|
637
|
+
Generated is an explicit opt-out that cancels or ignores the background
|
|
638
|
+
template draft and must not let late template output overwrite campaign
|
|
639
|
+
state. Product Generate Message cells should not run from the background
|
|
640
|
+
template path until template/token rules are approved. After message approval,
|
|
641
|
+
update the campaign brief with an Approved Message Template containing
|
|
642
|
+
`{{...}}` tokens and keep `enableICPFilters: true`; Generate Message detects
|
|
643
|
+
template mode from those tokens, not from `useMessagingTemplate`.
|
|
624
644
|
- During pre-import validation, do not call `check_rubric`; use the lead-filter
|
|
625
645
|
artifacts and only use campaign-backed scoring after Step 13 imports the
|
|
626
646
|
15-lead test batch.
|
|
@@ -666,7 +686,7 @@ batch`, and a no-launch safety note. Do not leave the guide saying
|
|
|
666
686
|
|
|
667
687
|
<conditional_gates>
|
|
668
688
|
|
|
669
|
-
There are
|
|
689
|
+
There are six customer-visible gates in the net-new hosted flow:
|
|
670
690
|
|
|
671
691
|
- `brief-review` asks whether to approve the rendered campaign brief before
|
|
672
692
|
Find Leads starts. Do not skip this by inferring approval from setup
|
|
@@ -674,11 +694,17 @@ There are four customer-visible gates in the net-new hosted flow:
|
|
|
674
694
|
- `lead-review` / source decision asks whether to approve the selected source
|
|
675
695
|
path and sample before moving into filter/message work. Do not skip this by
|
|
676
696
|
compressing the source decision into message review.
|
|
677
|
-
- `
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
697
|
+
- `filter-choice` asks whether to use filters or skip after the non-empty
|
|
698
|
+
review batch is imported. This is the first post-import user gate.
|
|
699
|
+
- `messages-mode-choice` asks whether to Use Template or choose AI Generated.
|
|
700
|
+
Use Template is recommended. AI Generated is an explicit opt-out that cancels
|
|
701
|
+
or ignores the background template draft.
|
|
702
|
+
- `message-review` is the mandatory template quality gate only when the user
|
|
703
|
+
chooses Use Template. It asks only whether to proceed with the selected
|
|
704
|
+
message (`approve-message`) or run one more messaging revision
|
|
705
|
+
(`revise-messaging`). `approve-message` authorizes syncing the approved
|
|
706
|
+
template/token rules into the campaign brief and queueing/observing the
|
|
707
|
+
review-batch cascade.
|
|
682
708
|
- The sender/settings/sequence handoff is the launch gate. After message
|
|
683
709
|
validation, use Settings to help the user connect or select a LinkedIn sender.
|
|
684
710
|
Explain Slack reply review before launch. After sender selection, attach the
|
|
@@ -814,6 +840,12 @@ Required behavior:
|
|
|
814
840
|
watched campaign moving, not to compare every plausible lane in parallel.
|
|
815
841
|
Run only enough evidence for the current lane to pass or fail the quick gate,
|
|
816
842
|
then stop on the first viable source unless the user asked to compare.
|
|
843
|
+
User-facing fallback copy should stay fifth-grade clear: people engaging with
|
|
844
|
+
relevant LinkedIn posts -> Sales Nav to find ICP people actively posting on
|
|
845
|
+
LinkedIn -> search by titles -> Prospeo for a broader account/contact path.
|
|
846
|
+
The older provider label `broader Sales Nav` maps to the plain-language
|
|
847
|
+
`search by titles` fallback; `Prospeo only as the fallback` maps to the
|
|
848
|
+
plain-language broader account/contact path. Keep user-facing copy simple.
|
|
817
849
|
1. Start with LinkedIn Engagement / active LinkedIn posts (internal provider:
|
|
818
850
|
Signals / `signal-discovery`) because recent engagement gives the strongest
|
|
819
851
|
message context and expected reply-rate upside. Search intersection keyword
|
|
@@ -842,6 +874,10 @@ Required behavior:
|
|
|
842
874
|
start with Signal Discovery. If they name titles/personas/company filters,
|
|
843
875
|
start with Sales Nav. If they explicitly ask for a comparison, compare only
|
|
844
876
|
those requested sources.
|
|
877
|
+
- failed or empty source lanes do not import leads. A timeout/error, zero raw
|
|
878
|
+
results, weak ICP fit, or weak message context must trigger the next approved
|
|
879
|
+
lane or a revision question before import. All lanes failed is a terminal
|
|
880
|
+
revise-source state, not an import state.
|
|
845
881
|
- run source scouts in parallel only when the user explicitly requested a
|
|
846
882
|
comparison, the current turn is resuming from already-started parallel scouts,
|
|
847
883
|
or the first viable source is borderline and one cheap fallback check is
|
|
@@ -1237,30 +1273,50 @@ Do not:
|
|
|
1237
1273
|
|
|
1238
1274
|
## Step 3: Generate Message
|
|
1239
1275
|
|
|
1240
|
-
Step 3 is
|
|
1241
|
-
`post-find-leads-message-scout` worker or by the
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1276
|
+
Step 3 is the Message Draft Builder path. It is orchestrated by the main thread
|
|
1277
|
+
and executed either by the `post-find-leads-message-scout` worker or by the
|
|
1278
|
+
parent-thread fallback. The worker and fallback must load the full
|
|
1279
|
+
`generate-messages` prompt with `get_subskill_prompt` and use it as the drafting
|
|
1280
|
+
contract. The small safety-gate reference is only a supplemental approval
|
|
1281
|
+
check, not a replacement for the long message workflow:
|
|
1245
1282
|
|
|
1246
1283
|
```
|
|
1284
|
+
mcp__sellable__get_subskill_prompt({ subskillName: "generate-messages", offset, limit }) until hasMore=false
|
|
1247
1285
|
mcp__sellable__get_subskill_asset({ subskillName: "create-campaign-v2", assetPath: "references/message-review-safety-gate.md" })
|
|
1248
1286
|
```
|
|
1249
1287
|
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
contains the safety-gate required
|
|
1260
|
-
explicit single-first-send
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1288
|
+
Use campaign state, campaign brief content, selected source state, and the
|
|
1289
|
+
selected/imported review-batch rows as the source of truth. Do not read
|
|
1290
|
+
`brief.md`, `lead-review.md`, or `lead-sample.json` as required state in the
|
|
1291
|
+
normal live campaign path; those files are optional debug context only. If the
|
|
1292
|
+
long prompt plus safety gate cannot safely approve the draft, stop at
|
|
1293
|
+
`revise-messaging` with the exact failure.
|
|
1294
|
+
|
|
1295
|
+
Do NOT proceed to Step 4 (message review gate) unless the user has answered
|
|
1296
|
+
filter choice, the Messages step has shown the mode choice, the user chose Use
|
|
1297
|
+
Template, and `message-validation.md` contains the safety-gate required
|
|
1298
|
+
sections, a raw sendable Selected Winner, and an explicit single-first-send
|
|
1299
|
+
PASS. If the user reaches Messages and chose Use Template before the draft is
|
|
1300
|
+
ready, say you are waiting for the Message Draft Builder and do not ask for
|
|
1301
|
+
approval. If the draft worker fails, produces no usable message, or has no known
|
|
1302
|
+
worker status, require retry/regenerate copy instead of approval copy. If
|
|
1303
|
+
`message-validation.md` contains post-accept DM, follow-up, second-touch,
|
|
1304
|
+
cadence, branch, or other sequence-shaped copy, do not summarize it as ready;
|
|
1305
|
+
route back to message-generation and require a single first outbound send.
|
|
1306
|
+
|
|
1307
|
+
Messages first shows mode choice:
|
|
1308
|
+
|
|
1309
|
+
1. Use Template (recommended): wait for and review the Message Draft Builder
|
|
1310
|
+
template. If filters are enabled, lock this review until saved rubrics and a
|
|
1311
|
+
bounded filter run produce usable passing/probably passing rows. Prefer at
|
|
1312
|
+
least 2 usable passing rows; if only 1 passes, use weak-sample copy and ask
|
|
1313
|
+
whether to continue, revise, import more, or skip filters.
|
|
1314
|
+
2. AI Generated: this is an explicit opt-out. Cancel or ignore the background
|
|
1315
|
+
template draft and prevent late template output from overwriting campaign
|
|
1316
|
+
state.
|
|
1317
|
+
|
|
1318
|
+
Product Generate Message cells should not run from the background template path
|
|
1319
|
+
until template/token rules are approved.
|
|
1264
1320
|
|
|
1265
1321
|
After the main-chat message approval, update_campaign_brief writes `## Approved
|
|
1266
1322
|
Message Template` with `{{...}}` tokens before any Generate Message cascade is
|
|
@@ -230,31 +230,24 @@ setting: `~/.codex/config.toml` with
|
|
|
230
230
|
|
|
231
231
|
## Parallelism + Naming
|
|
232
232
|
|
|
233
|
-
Source
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
Code,
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
subagents. When asking the user to approve a brief with Sellable finding leads,
|
|
252
|
-
use an explicit label like `Approve brief + use background source scouts` only
|
|
253
|
-
when the current runtime exposes the named agents; otherwise use `Approve brief
|
|
254
|
-
|
|
255
|
-
- compare source paths`. If the host runs them sequentially or the named agents
|
|
256
|
-
are absent, keep the output numeric but do not claim the source scout was
|
|
257
|
-
parallel or surface install status to the customer.
|
|
233
|
+
Source selection is sequential by default. Start with the first recommended
|
|
234
|
+
source lane from `flow.v2.json`; for the current campaign shape that is usually
|
|
235
|
+
Signal Discovery / LinkedIn engagement. Only try the next fallback after the
|
|
236
|
+
current lane is not viable, the user asks for a comparison, or the first lane is
|
|
237
|
+
borderline and needs a second source to avoid a bad recommendation. The fallback
|
|
238
|
+
order must stay plain: use Sales Nav to find ICP people who are actively posting
|
|
239
|
+
on LinkedIn; if that is not enough, search Sales Nav by titles; if that is still
|
|
240
|
+
not enough, use Prospeo for a broader account/contact path.
|
|
241
|
+
|
|
242
|
+
Source-angle comparison should be real, not implied. Call
|
|
243
|
+
`get_source_scout_registry` before dispatching source scouts and use the
|
|
244
|
+
returned canonical `name` values. In Codex or Claude Code, launch multiple named
|
|
245
|
+
source scouts in the same turn only when the user explicitly requested source
|
|
246
|
+
comparison, a prior lane failed, or the active flow marks the first lane as
|
|
247
|
+
borderline. The parent thread should not fetch every provider prompt first; each
|
|
248
|
+
scout loads only its matching provider prompt. If source work is sequential,
|
|
249
|
+
keep the output numeric but do not claim the source scout was parallel or
|
|
250
|
+
surface install status to the customer.
|
|
258
251
|
|
|
259
252
|
For post-lead work, call `get_post_find_leads_scout_registry` after source
|
|
260
253
|
approval and use the returned canonical `name` values. Launch both returned
|