@sellable/mcp 0.1.51 → 0.1.53
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/package.json
CHANGED
|
@@ -98,10 +98,16 @@ fits as n/N, estimated good-fit range after cleanup, expected reply-rate range,
|
|
|
98
98
|
and confidence basis. Never show a percent like "73% match" without the
|
|
99
99
|
numerator, denominator, and sample basis.
|
|
100
100
|
|
|
101
|
-
Use rendered Markdown for
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
101
|
+
Use rendered Markdown for any user review surface, not fenced code blocks. This
|
|
102
|
+
includes campaign brief, lead source, lead filter, message review, and final
|
|
103
|
+
approval. Keep lines short, use indexed section labels and bullets, and
|
|
104
|
+
translate internal sourcing terms into plain language. For example, explain
|
|
105
|
+
"signal discovery" as "looking for LinkedIn activity from people already
|
|
106
|
+
talking about this problem."
|
|
107
|
+
|
|
108
|
+
Only promise parallel/background work when the host actually started parallel
|
|
109
|
+
branches or workers. If the host is running the flow sequentially, say the real
|
|
110
|
+
sequence instead of `kicking off two workstreams`.
|
|
105
111
|
|
|
106
112
|
Every approval gate must include artifact access after the readable inline
|
|
107
113
|
content. Show an `Open artifact:` line with the one key clickable markdown link
|
|
@@ -141,6 +141,30 @@ Validated draft directory:
|
|
|
141
141
|
approval/review, lead-filter review, message review, and final approval
|
|
142
142
|
packet. Do not use the link as a substitute for rendering the decision in
|
|
143
143
|
chat; links are for deeper inspection.
|
|
144
|
+
- Any time the user is reviewing a list or decision, use rendered Markdown with
|
|
145
|
+
short indexed sections and bullets. Do not use label-plus-paragraph blocks
|
|
146
|
+
like `Key numbers:` followed by one long paragraph. Do not use fenced code
|
|
147
|
+
blocks for review surfaces. The readable chat surface should look like:
|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
## Lead source decision
|
|
151
|
+
|
|
152
|
+
**1. Chosen source**
|
|
153
|
+
- Signals, with a strict filter
|
|
154
|
+
|
|
155
|
+
**2. Quick numbers**
|
|
156
|
+
- **Signals:** 491 posts reviewed. 9/40 sampled engagers fit. Estimate:
|
|
157
|
+
180-260 usable leads.
|
|
158
|
+
- **Sales Nav:** 2,598 active profiles. Preview was broader and noisier.
|
|
159
|
+
|
|
160
|
+
**3. Sample leads**
|
|
161
|
+
- Joyjit Ghosh — Co-Founder, Prospectee.io
|
|
162
|
+
- Ashish Rai — Founder & CEO, ReachHQ
|
|
163
|
+
|
|
164
|
+
**4. Tradeoff**
|
|
165
|
+
- More context, but the filter needs to cut consultants and creators.
|
|
166
|
+
```
|
|
167
|
+
|
|
144
168
|
- Do not treat the active Sellable workspace as the campaign subject. The
|
|
145
169
|
workspace only tells you where the campaign will be saved. Before buyer, CTA,
|
|
146
170
|
proof, or source questions, identify two things:
|
|
@@ -464,6 +488,20 @@ should test for this campaign. Those can run in parallel and usually take
|
|
|
464
488
|
basis (`brief.md`, `lead-review.md`, `lead-sample.json`). Approval waits for
|
|
465
489
|
both `lead-filter.md` and `message-validation.md`, then reconciles that the
|
|
466
490
|
selected message basis rows still pass the final filter.
|
|
491
|
+
- Parallel means real parallel execution, not just optimistic progress copy.
|
|
492
|
+
After lead review:
|
|
493
|
+
- If the host exposes Task/subagent workers and host policy allows them for
|
|
494
|
+
this user request, launch two disjoint workers: one owns `lead-filter.md`
|
|
495
|
+
and optional `rubric.json`; the other owns `message-prep.md`,
|
|
496
|
+
`message-validation.md`, and `message-review.md`.
|
|
497
|
+
- If only parallel tool batching is available, batch only independent tool
|
|
498
|
+
reads/lookups. Do not pretend whole artifact-writing stages are running in
|
|
499
|
+
the background.
|
|
500
|
+
- If real parallel execution is not available or not allowed, run the same DAG
|
|
501
|
+
sequentially and use honest copy: `I’ll tighten the filter first, then draft
|
|
502
|
+
the message from the same sample.`
|
|
503
|
+
- Never say `kicking off two workstreams`, `in parallel`, or `background`
|
|
504
|
+
unless parallel branches were actually launched.
|
|
467
505
|
- Never run a downstream stage until the active `flow.v2.json` step's
|
|
468
506
|
`requiredArtifacts` exist.
|
|
469
507
|
- Never call a tool outside the active step's `allowedTools`, and never call a
|
|
@@ -854,22 +892,24 @@ Required behavior:
|
|
|
854
892
|
- `Implementation Details`
|
|
855
893
|
|
|
856
894
|
When showing the filter result in chat, render a slim summary before moving to
|
|
857
|
-
message review:
|
|
895
|
+
message review. Use rendered Markdown, indexed sections, and short bullets:
|
|
858
896
|
|
|
859
897
|
```text
|
|
860
|
-
Lead filter
|
|
898
|
+
## Lead filter
|
|
861
899
|
|
|
862
|
-
Keep
|
|
863
|
-
|
|
900
|
+
**1. Keep**
|
|
901
|
+
- {role/title family}
|
|
902
|
+
- {company/context family}
|
|
864
903
|
|
|
865
|
-
Exclude
|
|
866
|
-
{
|
|
904
|
+
**2. Exclude**
|
|
905
|
+
- {false-positive family}
|
|
906
|
+
- {false-positive family}
|
|
867
907
|
|
|
868
|
-
Why
|
|
869
|
-
{sample-backed reason}
|
|
908
|
+
**3. Why**
|
|
909
|
+
- {sample-backed reason}
|
|
870
910
|
|
|
871
|
-
Expected impact
|
|
872
|
-
{1 line}
|
|
911
|
+
**4. Expected impact**
|
|
912
|
+
- {1 line}
|
|
873
913
|
|
|
874
914
|
Open artifact: lead-filter.md
|
|
875
915
|
```
|
|
@@ -917,7 +957,8 @@ Continue chunked-read until `hasMore=false`. Treat all chunks as one prompt load
|
|
|
917
957
|
Do NOT proceed to Step 4 (message review gate) without loading and following the full generate-messages workflow. `message-validation.md` must prove the full workflow ran (all required sections present + raw sendable Selected Winner) before `message-review.md` can recommend `approve-message`. If the message review or approval packet is ready but the generate-messages prompt was not retrieved in this run, route back to message-generation instead of asking the commit gate.
|
|
918
958
|
|
|
919
959
|
When showing message review in chat, lead with one fully filled sample message,
|
|
920
|
-
not the tokenized template.
|
|
960
|
+
not the tokenized template. Use rendered Markdown, indexed sections, and short
|
|
961
|
+
bullets around the sample. The visible response must include:
|
|
921
962
|
|
|
922
963
|
- `Message review`
|
|
923
964
|
- `Subject`
|
|
@@ -934,7 +975,8 @@ artifacts.
|
|
|
934
975
|
## Step 4: Final Approval Packet
|
|
935
976
|
|
|
936
977
|
When showing the final approval packet, render a slim "ready to create" summary
|
|
937
|
-
in chat.
|
|
978
|
+
in chat. Use rendered Markdown, indexed sections, and short bullets. The visible
|
|
979
|
+
response must include:
|
|
938
980
|
|
|
939
981
|
- `Ready to create campaign`
|
|
940
982
|
- `Campaign`
|
|
@@ -58,6 +58,10 @@ turn anchored to that:
|
|
|
58
58
|
Approvals only feel safe when the user can see what they are approving. Before
|
|
59
59
|
any approve/revise question, show the relevant decision in plain language. For a
|
|
60
60
|
brief approval, render the slim approval brief, not just a direction summary.
|
|
61
|
+
Any list the user is expected to review should be rendered Markdown with short
|
|
62
|
+
indexed sections and bullets. Avoid label-plus-paragraph blocks like
|
|
63
|
+
`Key numbers:` followed by a dense paragraph, and never use fenced code blocks
|
|
64
|
+
for review surfaces.
|
|
61
65
|
|
|
62
66
|
Every approval should also give the user a way to inspect the source artifact.
|
|
63
67
|
After the readable inline content, include an `Open artifact:` line with the one
|
|
@@ -91,6 +95,12 @@ Every customer-facing update should answer one of these:
|
|
|
91
95
|
- What will the user see next?
|
|
92
96
|
- What is protected until approval?
|
|
93
97
|
|
|
98
|
+
Only promise parallel work when parallel work actually started. If the host
|
|
99
|
+
cannot or should not launch background branches, say the real sequence:
|
|
100
|
+
`I’ll tighten the filter first, then draft the message from the same sample.`
|
|
101
|
+
Do not say `kicking off two workstreams`, `in parallel`, or `background` as
|
|
102
|
+
aspirational copy.
|
|
103
|
+
|
|
94
104
|
Before a brief approval, the user should see a slim approval brief in chat. The
|
|
95
105
|
rich current brief exists in `brief.md`; the chat view is the decision surface,
|
|
96
106
|
not the full working memo. `brief-v1.md` is an internal first-draft snapshot, not
|
|
@@ -140,14 +150,18 @@ Then show chosen source, why it won, expected connection acceptance, expected
|
|
|
140
150
|
reply rate, 3-5 sample leads, and one tradeoff. Full tables belong in
|
|
141
151
|
`lead-review.md`.
|
|
142
152
|
|
|
143
|
-
Lead filter chat should always
|
|
144
|
-
|
|
153
|
+
Lead filter chat should always use indexed rendered Markdown and show what
|
|
154
|
+
changed: keep, exclude, why, expected impact, and
|
|
155
|
+
`Open artifact: lead-filter.md`.
|
|
156
|
+
|
|
157
|
+
Message review chat should use indexed rendered Markdown, show one fully filled
|
|
158
|
+
sample message without tokens, and keep tokenized templates in the artifact.
|
|
145
159
|
|
|
146
|
-
Final approval chat should
|
|
147
|
-
concrete role/title names, lead source, filter,
|
|
148
|
-
approval creates, and the safety note that
|
|
149
|
-
Do not include sequence/settings in final
|
|
150
|
-
creation.
|
|
160
|
+
Final approval chat should use indexed rendered Markdown for a ready-to-create
|
|
161
|
+
summary: campaign, target with concrete role/title names, lead source, filter,
|
|
162
|
+
one filled sample message, what approval creates, and the safety note that
|
|
163
|
+
nothing sends live until greenlight. Do not include sequence/settings in final
|
|
164
|
+
approval; that belongs after campaign creation.
|
|
151
165
|
|
|
152
166
|
Avoid:
|
|
153
167
|
|
|
@@ -407,13 +407,13 @@
|
|
|
407
407
|
"action": "render_post_lead_parallel_progress",
|
|
408
408
|
"requiredVisibleContent": [
|
|
409
409
|
"Lead source is set",
|
|
410
|
-
"kicking off two workstreams",
|
|
411
410
|
"Tighten the fit filter",
|
|
412
411
|
"Draft the first message",
|
|
413
412
|
"approved brief and real sample leads",
|
|
414
|
-
"parallel"
|
|
413
|
+
"parallel only if real parallel branches were launched"
|
|
415
414
|
],
|
|
416
|
-
"timeEstimate": "~2-3 min"
|
|
415
|
+
"timeEstimate": "~2-3 min",
|
|
416
|
+
"chatRenderRule": "If real parallel workers/branches were actually launched, say: 'I’m kicking off two workstreams now' and list the two branches. If not, do not mention parallel/background work; say: 'I’ll tighten the filter first, then draft the first message from the same approved brief and sample leads.' Never claim parallelism unless the host actually started parallel execution."
|
|
417
417
|
},
|
|
418
418
|
{
|
|
419
419
|
"action": "ask_continue_revise_or_confirm_only_if_needed",
|
|
@@ -483,7 +483,7 @@
|
|
|
483
483
|
"Expected impact"
|
|
484
484
|
],
|
|
485
485
|
"requiredArtifactLinks": ["lead-filter.md"],
|
|
486
|
-
"chatRenderRule": "Show a slim filter summary before message review
|
|
486
|
+
"chatRenderRule": "Show a slim rendered-Markdown filter summary before message review, never a fenced code block. Use ## Lead filter plus indexed sections and short bullets for who we keep, who we exclude, sample-backed reason, and expected impact. Keep production rubric fields and rubric.json details in lead-filter.md/rubric.json. Do not show plain filesystem paths unless links cannot be created."
|
|
487
487
|
},
|
|
488
488
|
{
|
|
489
489
|
"action": "ask_revise_only_if_filter_is_not_confirmed",
|
|
@@ -652,7 +652,7 @@
|
|
|
652
652
|
"Question: approve-message or revise-messaging?",
|
|
653
653
|
"Recommendation:"
|
|
654
654
|
],
|
|
655
|
-
"chatRenderRule": "Show one fully filled sample message with no {{tokens}} before asking for approval. Include subject, sample message, why it should work, one concern or None, recommendation, and Open artifact: message-review.md. Keep tokenized template, token fill basis, rendered examples, good/bad token fill examples, validation notes, and message-validation.md details in artifacts. Do not show plain filesystem paths unless links cannot be created.",
|
|
655
|
+
"chatRenderRule": "Show a slim rendered-Markdown message review, never a fenced code block. Use ## Message review plus indexed sections and short bullets. Show one fully filled sample message with no {{tokens}} before asking for approval. Include subject, sample message, why it should work, one concern or None, recommendation, and Open artifact: message-review.md. Keep tokenized template, token fill basis, rendered examples, good/bad token fill examples, validation notes, and message-validation.md details in artifacts. Do not show plain filesystem paths unless links cannot be created.",
|
|
656
656
|
"allowedRecommendations": ["approve-message", "revise-messaging"],
|
|
657
657
|
"judgeAgainst": [
|
|
658
658
|
"generate-messages rules",
|
|
@@ -776,7 +776,7 @@
|
|
|
776
776
|
"minimumVisibleDetail": "slim_final_approval_summary",
|
|
777
777
|
"requiredArtifactLinks": ["approval-packet.md"],
|
|
778
778
|
"artifactLinkTiming": "before_commit_gate_question",
|
|
779
|
-
"chatRenderRule": "Show a slim final approval packet only. Include target with concrete role/title names, lead source with one key metric, filter summary, one fully filled sample message with no {{tokens}}, what approval creates, and safety note that nothing sends live until the review/greenlight step. Keep tokenized templates, evidence tables, rubrics, and validation details in approval-packet.md. Do not show sequence/settings in final approval; that comes after campaign creation. Do not show plain filesystem paths unless links cannot be created.",
|
|
779
|
+
"chatRenderRule": "Show a slim rendered-Markdown final approval packet only, never a fenced code block. Use ## Ready to create campaign plus indexed sections and short bullets. Include target with concrete role/title names, lead source with one key metric, filter summary, one fully filled sample message with no {{tokens}}, what approval creates, and safety note that nothing sends live until the review/greenlight step. Keep tokenized templates, evidence tables, rubrics, and validation details in approval-packet.md. Do not show sequence/settings in final approval; that comes after campaign creation. Do not show plain filesystem paths unless links cannot be created.",
|
|
780
780
|
"userFacing": true,
|
|
781
781
|
"doNotUseWords": ["anchor", "validation anchor", "lane"]
|
|
782
782
|
},
|
|
@@ -875,7 +875,7 @@
|
|
|
875
875
|
"what approval creates"
|
|
876
876
|
],
|
|
877
877
|
"requiredArtifactLinks": ["approval-packet.md"],
|
|
878
|
-
"chatRenderRule": "Same slim approval packet as approval-packet. Include target with concrete role/title names and one fully filled sample message without tokens. Do not include sequence/settings. Do not repeat tokenized template or long evidence tables in chat.",
|
|
878
|
+
"chatRenderRule": "Same slim rendered-Markdown approval packet as approval-packet, never a fenced code block. Use indexed sections and short bullets. Include target with concrete role/title names and one fully filled sample message without tokens. Do not include sequence/settings. Do not repeat tokenized template or long evidence tables in chat.",
|
|
879
879
|
"artifactLinkTiming": "same_turn_before_commit_question"
|
|
880
880
|
},
|
|
881
881
|
{
|