@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
|
@@ -35,6 +35,7 @@ stage labels. The driver label comes from the watch URL mode (`mode=claude` or
|
|
|
35
35
|
Apollo, or existing list.
|
|
36
36
|
- During search iteration, say what you tried, what you are trying next, what
|
|
37
37
|
sample you are checking, and why that helps this campaign.
|
|
38
|
+
- At filter choice, do not say filtering the batch before rubrics are saved.
|
|
38
39
|
- Avoid internal terms: MCP, tool, currentStep, workflow table, scout, debug.
|
|
39
40
|
- Do not invent time estimates.
|
|
40
41
|
|
|
@@ -81,7 +82,7 @@ Default source funnel:
|
|
|
81
82
|
"stage": "find-leads",
|
|
82
83
|
"headline": "Choosing the lead source",
|
|
83
84
|
"visibleState": "The browser is on Pick Provider while Codex explains the source path before opening a provider lane.",
|
|
84
|
-
"agentIntent": "Codex will start with
|
|
85
|
+
"agentIntent": "Codex will start with people engaging with relevant LinkedIn posts when that looks plausible, then switch to Sales Nav to find ICP people actively posting on LinkedIn, then search by titles, and use Prospeo for a broader account/contact path. Sales Nav with recent activity remains the first LinkedIn fallback.",
|
|
85
86
|
"nextAction": "Review source",
|
|
86
87
|
"safety": "No leads import until you approve the source."
|
|
87
88
|
}
|
|
@@ -191,10 +192,10 @@ After review batch import:
|
|
|
191
192
|
```json
|
|
192
193
|
{
|
|
193
194
|
"stage": "fit-message",
|
|
194
|
-
"headline": "
|
|
195
|
-
"visibleState": "The first review batch is in the campaign.",
|
|
196
|
-
"agentIntent": "Codex is
|
|
197
|
-
"nextAction": "
|
|
195
|
+
"headline": "Do you want filters?",
|
|
196
|
+
"visibleState": "The first review batch is in the campaign. The list is ready to decide whether extra filtering is worth it.",
|
|
197
|
+
"agentIntent": "Codex is asking whether you want to further filter these leads before message review. The Message Draft Builder may prepare a template in the background, but review waits until the filter path is settled.",
|
|
198
|
+
"nextAction": "Choose filters or skip",
|
|
198
199
|
"safety": "Nothing enriches, validates, or sends until the message is ready and approved.",
|
|
199
200
|
"workerStatuses": {
|
|
200
201
|
"leadFitBuilder": "running",
|
|
@@ -204,8 +205,11 @@ After review batch import:
|
|
|
204
205
|
```
|
|
205
206
|
|
|
206
207
|
Use this after the selected review rows are present and before filters are
|
|
207
|
-
saved. This is add-filters intent, not active filtering.
|
|
208
|
-
|
|
208
|
+
saved. This is add-filters intent, not active filtering. Tell the user to
|
|
209
|
+
Choose filters or skip, and do not say filtering the batch before rubrics are
|
|
210
|
+
saved. When the user chooses filters, immediately persist
|
|
211
|
+
`enableICPFilters: true` and move to `create-icp-rubric` so the watched app
|
|
212
|
+
shows Filter Rules while Codex defines the rules in chat.
|
|
209
213
|
|
|
210
214
|
Fit + message:
|
|
211
215
|
|
|
@@ -228,14 +232,27 @@ Review ready:
|
|
|
228
232
|
```json
|
|
229
233
|
{
|
|
230
234
|
"stage": "review-ready",
|
|
231
|
-
"headline": "
|
|
232
|
-
"visibleState": "The
|
|
233
|
-
"agentIntent": "
|
|
235
|
+
"headline": "Choose message mode",
|
|
236
|
+
"visibleState": "The Messages step shows Use Template and AI Generated.",
|
|
237
|
+
"agentIntent": "Use Template is recommended. AI Generated is an explicit opt-out that cancels or ignores the background template draft.",
|
|
234
238
|
"nextAction": "Validation",
|
|
235
239
|
"safety": "Codex will only continue after you approve."
|
|
236
240
|
}
|
|
237
241
|
```
|
|
238
242
|
|
|
243
|
+
Messages waiting for template:
|
|
244
|
+
|
|
245
|
+
```json
|
|
246
|
+
{
|
|
247
|
+
"stage": "review-ready",
|
|
248
|
+
"headline": "Waiting for the template",
|
|
249
|
+
"visibleState": "Use Template is selected, but the Message Draft Builder is still finishing.",
|
|
250
|
+
"agentIntent": "Codex is waiting for the Message Draft Builder and will not ask for approval until the template can be reviewed.",
|
|
251
|
+
"nextAction": "Review template",
|
|
252
|
+
"safety": "Late template output must not overwrite campaign state if AI Generated was selected."
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
239
256
|
Blocked/recovering:
|
|
240
257
|
|
|
241
258
|
```json
|
|
@@ -51,9 +51,13 @@ Create and save a comprehensive lead scoring rubric that:
|
|
|
51
51
|
|
|
52
52
|
## Rubric Validation + Results
|
|
53
53
|
|
|
54
|
-
- `
|
|
54
|
+
- `mcp__sellable__get_rows_minimal` - Read bounded review-batch cell IDs
|
|
55
|
+
- `mcp__sellable__queue_cells` - Queue only bounded `enrichCellId` values
|
|
55
56
|
- `mcp__sellable__wait_for_rubric_results` - Poll pass-rate results
|
|
56
57
|
|
|
58
|
+
`check_rubric` is legacy/recovery only. Do not use it in normal
|
|
59
|
+
create-campaign-v2 runs.
|
|
60
|
+
|
|
57
61
|
</tools>
|
|
58
62
|
|
|
59
63
|
<rubric_structure>
|
|
@@ -117,7 +121,7 @@ Required fields:
|
|
|
117
121
|
|
|
118
122
|
- If **Keep & apply**:
|
|
119
123
|
- Call `update_campaign({ campaignId, enableICPFilters: true, currentStep: "apply-icp-rubric" })`
|
|
120
|
-
- Then proceed to Phase 5 (
|
|
124
|
+
- Then proceed to Phase 5 (queue bounded enrichment cells + wait for score results).
|
|
121
125
|
|
|
122
126
|
**If no campaignOfferId:**
|
|
123
127
|
Ask: "Which campaign should I create the rubric for? You can share the campaign ID or describe the target audience."
|
|
@@ -203,7 +207,9 @@ update_campaign({
|
|
|
203
207
|
|
|
204
208
|
This triggers the campaign sync and moves the user to the filter-leads step where they can see the campaign table with scoring columns.
|
|
205
209
|
|
|
206
|
-
|
|
210
|
+
For normal create-campaign-v2 runs, the caller should immediately queue only the
|
|
211
|
+
bounded review-batch enrichment cells and wait for scores. For standalone
|
|
212
|
+
rubric editing, ask the user if we should kick off enrichment for a sample:
|
|
207
213
|
|
|
208
214
|
"ICP filtering enabled — you should see the leads table with scoring columns now. Want me to run enrichment on the first 5 leads to check pass rates?"
|
|
209
215
|
|
|
@@ -212,9 +218,14 @@ Then ask the user if we should kick off enrichment for a sample:
|
|
|
212
218
|
|
|
213
219
|
## Phase 5: Enrich + Score a Sample
|
|
214
220
|
|
|
215
|
-
1. Call `
|
|
216
|
-
|
|
217
|
-
|
|
221
|
+
1. Call `get_rows_minimal({ tableId, limit: 5 })` or use the caller-provided
|
|
222
|
+
bounded review-batch rows.
|
|
223
|
+
2. Call `queue_cells({ tableId, cellIds })` with only pending/error
|
|
224
|
+
`enrichCellId` values. Do not pass `icpCellId` values or full-table cells;
|
|
225
|
+
the workflow cascade handles downstream ICP scoring after enrichment.
|
|
226
|
+
3. Call `wait_for_rubric_results` with `targetCount: 5` and `minPassedCount: 1`
|
|
227
|
+
— polls until ICP scores land.
|
|
228
|
+
4. Summarize pass rate (`passed/completed`, percent) and recommend:
|
|
218
229
|
- Tighten filters if pass rate is too high (>80% — too loose).
|
|
219
230
|
- Loosen filters if pass rate is too low (<20% — too strict).
|
|
220
231
|
- Continue when results look healthy (30-70% is typical).
|