@sellable/mcp 0.1.203 → 0.1.205
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 +7 -7
- package/agents/post-find-leads-message-scout.md +16 -4
- package/dist/engage-memory.js +0 -5
- package/dist/identity-memory.js +0 -4
- package/dist/tools/engage-memory.js +2 -2
- package/dist/tools/prompts.js +3 -2
- package/package.json +1 -1
- package/skills/create-campaign/context/learnings.md +1 -1
- package/skills/create-campaign/references/brief-template.md +2 -2
- package/skills/create-campaign-brief/references/brief-template.md +2 -2
- package/skills/create-campaign-brief/references/draft-lifecycle.md +1 -1
- package/skills/create-campaign-brief/references/examples/briefs/gelee.md +2 -2
- package/skills/create-campaign-brief/references/examples/briefs/superpower.md +41 -28
- package/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md +12 -9
- package/skills/create-campaign-v2/references/ai-tells.md +35 -10
- package/skills/create-campaign-v2/references/approval-gate-framing.md +1 -1
- package/skills/create-campaign-v2/references/gold-standard-message-examples.md +30 -16
- package/skills/create-campaign-v2/references/gold-standard-message-patterns.md +1 -1
- package/skills/create-campaign-v2/references/gold-standard-runtime-message-pack.md +252 -0
- package/skills/create-campaign-v2/references/thomas-revision-filters.md +12 -3
- package/skills/create-campaign-v2/references/validation-criteria.md +8 -5
- package/skills/create-campaign-v2-validation/SKILL.md +1 -1
- package/skills/create-post/SKILL.md +27 -27
- package/skills/engage/SKILL.md +12 -12
- package/skills/engage/core/README.md +14 -14
- package/skills/find-leads/SKILL.md +1 -1
- package/skills/generate-messages/SKILL.md +171 -71
- package/skills/interview/SKILL.md +24 -24
- package/skills/interview/references/legacy-linkedin-interview.md +12 -12
- package/skills/interview/references/reference-curation.md +4 -4
- package/skills/interview/references/voice-capture-method.md +1 -1
- package/skills/load-voice/SKILL.md +21 -25
- package/skills/research/SKILL.md +1 -1
|
@@ -133,35 +133,72 @@ hard failure and revise the output before returning it.
|
|
|
133
133
|
|
|
134
134
|
Dry mode validates message quality before campaign mint.
|
|
135
135
|
|
|
136
|
-
Read:
|
|
137
|
-
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
-
|
|
141
|
-
-
|
|
142
|
-
-
|
|
143
|
-
-
|
|
144
|
-
-
|
|
136
|
+
Read these campaign inputs:
|
|
137
|
+
|
|
138
|
+
- `~/.sellable/configs/core/about-me.md`
|
|
139
|
+
- `~/.sellable/configs/core/my-company.md`
|
|
140
|
+
- `~/.sellable/configs/core/context-modes.md`
|
|
141
|
+
- `~/.sellable/configs/core/proof-ledger.md`
|
|
142
|
+
- `~/.sellable/configs/core/wins-ledger.md`
|
|
143
|
+
- `~/.sellable/configs/core/anti-ai-writing-style.md`
|
|
144
|
+
- `~/.sellable/configs/writing/outbound.md` and legacy `styleguide-core.md` as fallback/source material when present
|
|
145
145
|
- `brief.md`
|
|
146
146
|
- `lead-sample.json` from the find-leads step; this is the only allowed sample
|
|
147
147
|
source for dry-mode message generation
|
|
148
148
|
- `lead-filter.md` when present. If it is absent because the caller launched
|
|
149
149
|
post-lead workstreams in parallel, start the prep/candidate stages and then
|
|
150
150
|
reconcile before final `message-validation.md`.
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
- `
|
|
158
|
-
-
|
|
151
|
+
|
|
152
|
+
### Reference Asset Loading (do this before drafting)
|
|
153
|
+
|
|
154
|
+
Do not draft from this prompt alone. The full `generate-messages` prompt is
|
|
155
|
+
only the contract; the reference assets below are the evidence and examples
|
|
156
|
+
that define the desired output. Before writing angle drafts, you MUST load the
|
|
157
|
+
required pre-draft reference pack below with `mcp__sellable__get_subskill_asset`.
|
|
158
|
+
This is a hard gate: if the four required pre-draft assets are not loaded,
|
|
159
|
+
return `blocked` / `retry-needed` instead of drafting. Write a short
|
|
160
|
+
`Reference Asset Loading` note naming each loaded asset and whether it was
|
|
161
|
+
required pre-draft, final-pass, dry-mode-only, or token-rules-only. Do not
|
|
162
|
+
bulk-load the conditional references unless their trigger applies or the caller
|
|
163
|
+
explicitly asks for maximum context over speed.
|
|
164
|
+
|
|
165
|
+
Use `mcp__sellable__get_subskill_asset` for packaged assets:
|
|
166
|
+
|
|
167
|
+
| Group | Asset to load | Job |
|
|
168
|
+
| --- | --- | --- |
|
|
169
|
+
| Always load before drafting | `subskillName: "create-campaign-brief", assetPath: "references/phase75-active-runtime-message-pack.md"` | Active line-level gold pack: real approved examples, short-line rhythm, CTA blocks, lowercase/titlecase cues, and PS restraint. |
|
|
170
|
+
| Always load before drafting | `subskillName: "create-campaign-v2", assetPath: "references/gold-standard-message-patterns.md"` | Strategy selector: event-led vs signal-led vs job-post-led vs proof-led fallback, proof inventory, candidate set, and Finalizer Pass. |
|
|
171
|
+
| Always load before drafting | `subskillName: "create-campaign-v2", assetPath: "references/gold-standard-message-examples.md"` | Full archive quality bar: exact motion examples, hard rules, and transfer limits. Use it to choose 1 primary example, not to recolor copy. |
|
|
172
|
+
| Always load before drafting (never optional) | `subskillName: "create-campaign-v2", assetPath: "references/ai-tells.md"` | Canonical anti-AI checklist: body self-intros, source citations, resume recaps, title-fit assumptions, em dashes, signoffs, weak proof brags, and flattened "worth sending" source bridges. |
|
|
173
|
+
| Load before approval / final pass | `subskillName: "create-campaign-v2", assetPath: "references/thomas-revision-filters.md"` | Substance filters: earned-right, presumption, vague proof, read-as-1:1, founder-origin coherence, anti-talk-at, and AI-tell filter. |
|
|
174
|
+
| Dry-mode artifact output only | `subskillName: "create-campaign-v2", assetPath: "references/gold-standard-message-validation-example.md"` | Fully worked example for proof inventory, candidate messages, Finalizer Pass, Selected Winner, findings, and recommendation. |
|
|
175
|
+
| Dry-mode artifact output only | `subskillName: "create-campaign-v2", assetPath: "references/validation-criteria.md"` | Step-level acceptance criteria and dry-mode message validation expectations. |
|
|
176
|
+
| Reusable token rules only | `subskillName: "create-campaign", assetPath: "references/ai-native-tokens.md"` | Token spec for rich judgment tokens, including required clauses and fallback behavior. |
|
|
177
|
+
| Reusable token rules only | `subskillName: "create-campaign", assetPath: "references/token-fill-examples.md"` | Concrete good/bad token fills, interpolation guardrails, and product-noun substitution traps. |
|
|
178
|
+
|
|
179
|
+
Default load order:
|
|
180
|
+
|
|
181
|
+
1. Load the 4 **Always load before drafting** assets. Do not infer their
|
|
182
|
+
contents from this prompt; actually call `mcp__sellable__get_subskill_asset`
|
|
183
|
+
for each required asset.
|
|
184
|
+
2. Draft and run the internal Finalizer Pass.
|
|
185
|
+
3. Run the selected winner against `ai-tells.md`. This is never optional. If the
|
|
186
|
+
AI-tells catalog was not loaded or any `REJECT` tell matches, do not approve,
|
|
187
|
+
confirm, recommend, or show the template as ready; return `revise-message`.
|
|
188
|
+
4. Load `thomas-revision-filters.md` before approval, `confirmed`, or template
|
|
189
|
+
recommendation.
|
|
190
|
+
5. Load dry-mode artifact references only when writing `message-validation.md`.
|
|
191
|
+
6. Load token-rule references only when creating reusable templates or Token
|
|
192
|
+
Fill Rules that need sentence-level personalization.
|
|
159
193
|
|
|
160
194
|
### Rich Personalization Contract
|
|
161
195
|
|
|
162
196
|
`mcp/sellable/skills/create-campaign/references/ai-native-tokens.md` is the
|
|
163
197
|
canonical spec for personalization that requires judgment. Load it before
|
|
164
198
|
writing the Token Fill Rules or any reusable template notes.
|
|
199
|
+
When token fill wording is material, use
|
|
200
|
+
`mcp/sellable/skills/create-campaign/references/token-fill-examples.md` as the
|
|
201
|
+
conditional good/bad fill reference.
|
|
165
202
|
|
|
166
203
|
- Sentence-level personalization must use AI-native bracket tokens in the
|
|
167
204
|
reusable template / token plan, not old-school field substitution. Field
|
|
@@ -198,7 +235,7 @@ winner gate**.
|
|
|
198
235
|
|
|
199
236
|
### Retrieval & motion
|
|
200
237
|
|
|
201
|
-
- treat `
|
|
238
|
+
- treat `gold-standard-runtime-message-pack.md` as the **real line-level
|
|
202
239
|
gold pack** for active clients and proven live message shapes
|
|
203
240
|
- retrieve against the full archived gold-standard library and pick the closest 2-4 examples for consideration
|
|
204
241
|
- use the runtime pack first for concrete formatting cues that the
|
|
@@ -328,6 +365,8 @@ artifact.**
|
|
|
328
365
|
- `saw you on {{recent_signal}}`
|
|
329
366
|
- `saw you around {{recent_signal}}`
|
|
330
367
|
- `saw you engaging with {{recent_signal}}`
|
|
368
|
+
- `saw you raise your hand for {{signal_topic}}, so figured this was worth sending`
|
|
369
|
+
- `figured this was worth sending`
|
|
331
370
|
|
|
332
371
|
Safer shapes:
|
|
333
372
|
|
|
@@ -339,8 +378,9 @@ artifact.**
|
|
|
339
378
|
- `if {{workflow_signal}} is nowhere near your lane, ignore me`
|
|
340
379
|
- `figured this might matter if {{workflow_signal}} is live at {{company}}`
|
|
341
380
|
- `thought of {{company}} because {{observable_signal}} points at {{problem_context}}`
|
|
342
|
-
- `
|
|
343
|
-
- `saw you raise your hand for {{signal_topic}}
|
|
381
|
+
- `found you in a thread about {{signal_topic}}, so may be off, but this seemed relevant`
|
|
382
|
+
- `saw you raise your hand for {{signal_topic}}, so figured this was (hopefully) worth sending` only when the source was an explicit lead-magnet comment, reply, or opt-in. The parenthetical uncertainty is load-bearing; do not flatten it to `so figured this was worth sending`.
|
|
383
|
+
- `saw you raise your hand for {{signal_topic}} (creepy to reach out based on that, i know) - but this felt too on the nose to ignore` only when the source was an explicit lead-magnet comment, reply, or opt-in and the sender's voice can carry the cheekier aside
|
|
344
384
|
|
|
345
385
|
For LinkedIn-post-sourced campaigns (commenters, reactors, lead magnet
|
|
346
386
|
replies, or scraped conversations), it is acceptable to reference the
|
|
@@ -348,7 +388,10 @@ artifact.**
|
|
|
348
388
|
activity-log-level: `saw you in a few conversations around
|
|
349
389
|
{{signal_topic}}, so hope this is relevant` is acceptable; `saw you
|
|
350
390
|
commented on {{post_context}}` and `your LinkedIn activity around...` are
|
|
351
|
-
not.
|
|
391
|
+
not. Reserve `raise your hand` phrasing for explicit lead-magnet comments,
|
|
392
|
+
replies, or opt-ins. For ordinary thread discovery, use `saw you in a few
|
|
393
|
+
conversations around {{signal_topic}}...` or `found you in a thread about
|
|
394
|
+
{{signal_topic}}...`.
|
|
352
395
|
|
|
353
396
|
Keep the apologetic nature, but aim it at uncertainty, not surveillance.
|
|
354
397
|
Good: `saw you in a few conversations about outbound, so may be off, but
|
|
@@ -644,18 +687,17 @@ help...` or `built for [buyer] to...`. Do not overuse generic solved-state
|
|
|
644
687
|
solved, or fail to connect to the specific sample row. Prefer a concrete
|
|
645
688
|
row-fit line, a useful artifact, or a buyer-owned current-state observation
|
|
646
689
|
that the recipient can understand without reading the brief.
|
|
647
|
-
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
paragraph.
|
|
690
|
+
- run the parallel action formatting check when the winner has 3 adjacent
|
|
691
|
+
product actions, outputs, mechanics, or objection removers. If the lines
|
|
692
|
+
repeat the same subject pattern (`It drafts...` / `It adapts...` /
|
|
693
|
+
`It helps...`) and each line is a discrete function with no narrative proof
|
|
694
|
+
clause, prefer a compact `-` bullet stack because it is easier to scan on
|
|
695
|
+
mobile. Example:
|
|
696
|
+
`It helps your team:` followed by `- Draft posts...`, `- Adapt them...`,
|
|
697
|
+
`- Keep showing up...`. Do not force bullets when there are only 1-2
|
|
698
|
+
actions, one line needs narrative context, the bullets feel like a landing
|
|
699
|
+
page, or the paragraph version is clearly more human and still scans cleanly.
|
|
700
|
+
This is a formatting preference, not a message-strategy gate.
|
|
659
701
|
- if one finalist already holds the best of every piece, the winner may
|
|
660
702
|
equal it — name which one and on which axis it won (relevance,
|
|
661
703
|
distinctiveness, proof, coherence, readability)
|
|
@@ -724,8 +766,12 @@ Finalizer preference when multiple candidates are otherwise comparable:
|
|
|
724
766
|
peer-call, compare-notes, or similar identity-call framing. Those CTAs
|
|
725
767
|
are usually weaker than naming the useful thing the buyer gets. Use them
|
|
726
768
|
only when the user explicitly chose that route or the brief makes that
|
|
727
|
-
peer-call motion the approved offer. Even then, the
|
|
728
|
-
|
|
769
|
+
peer-call motion the approved offer. Even then, preserve the intent, not the
|
|
770
|
+
phrase. Translate `compare notes` into a concrete CTA that names the topic,
|
|
771
|
+
workflow, artifact, preview, teardown, or working session. Prefer shapes like
|
|
772
|
+
`Open to a quick call on how {{company_or_team}} might turn LinkedIn content
|
|
773
|
+
into pipeline?`. Do not use `Open to compare notes?` or `Open to comparing
|
|
774
|
+
notes on...`.
|
|
729
775
|
- when the message is selling or introducing a product, make the product
|
|
730
776
|
plain before asking for time, but do not make the opener sound like a
|
|
731
777
|
homepage definition. The reader should be able to answer "what is this?"
|
|
@@ -935,7 +981,10 @@ Before drafting, answer these five questions explicitly:
|
|
|
935
981
|
4. **What proof makes it believable?** Pick the one proof beat that
|
|
936
982
|
answers the buyer's biggest skepticism.
|
|
937
983
|
5. **What is the lowest-friction true next step?** Use only a next step
|
|
938
|
-
supported by the inputs.
|
|
984
|
+
supported by the inputs. If the campaign brief explicitly names a CTA
|
|
985
|
+
motion, preserve it unless it fails truth, clarity, pressure, or safety
|
|
986
|
+
gates. Improve the CTA by making the object concrete before replacing the
|
|
987
|
+
motion.
|
|
939
988
|
|
|
940
989
|
Then choose the exact element pool that angle drafts are allowed to use:
|
|
941
990
|
|
|
@@ -986,6 +1035,23 @@ both choices are genuinely useful and supported:
|
|
|
986
1035
|
Do not add option B just to mimic a gold standard. If the second option
|
|
987
1036
|
is weak, use one CTA.
|
|
988
1037
|
|
|
1038
|
+
CTA precedence:
|
|
1039
|
+
|
|
1040
|
+
1. If the campaign brief explicitly names a CTA motion, preserve the intent of
|
|
1041
|
+
that motion unless it is unsupported, too high-pressure, unsafe, or too vague
|
|
1042
|
+
to make concrete.
|
|
1043
|
+
2. If preserving it, make the object specific in the same line so the buyer
|
|
1044
|
+
knows what they are agreeing to discuss, see, or get.
|
|
1045
|
+
3. Replace it only when the brief CTA cannot pass truth, clarity, pressure, or
|
|
1046
|
+
safety gates.
|
|
1047
|
+
|
|
1048
|
+
Treat `compare notes` as shorthand for a peer conversation, not as buyer-facing
|
|
1049
|
+
copy. The phrase itself is blocked in selected winners, including `Open to
|
|
1050
|
+
compare notes?`, `Founder-to-founder compare notes?`, and `Open to comparing
|
|
1051
|
+
notes on...`. If the brief selected that intent, translate it into a concrete
|
|
1052
|
+
quick-call or working-session CTA, e.g. `Open to a quick call on how
|
|
1053
|
+
{{company_or_team}} might turn LinkedIn content into pipeline?`.
|
|
1054
|
+
|
|
989
1055
|
For artifact/sample offers, the CTA should usually be one self-contained
|
|
990
1056
|
yes/no question that names the concrete thing the buyer gets. Do not split
|
|
991
1057
|
the ask into a setup sentence plus a vague question.
|
|
@@ -1564,6 +1630,13 @@ teardown`, `record a video`, or similar assets are BLOCKED unless the
|
|
|
1564
1630
|
input says that exact next step exists. When unsure, ask for the
|
|
1565
1631
|
lowest-friction true next step from the brief, such as sending the
|
|
1566
1632
|
setup link, next step, or a short walkthrough.
|
|
1633
|
+
- **Brief CTA obedience:** if the brief explicitly names a CTA motion, the
|
|
1634
|
+
selected winner must either preserve that motion's intent with concrete
|
|
1635
|
+
specificity or explain why truth, clarity, pressure, or safety gates forced a
|
|
1636
|
+
replacement.
|
|
1637
|
+
If the brief uses `compare notes`, do not put that phrase in buyer-facing copy.
|
|
1638
|
+
Translate it into a concrete quick-call or working-session CTA that names the
|
|
1639
|
+
topic or workflow.
|
|
1567
1640
|
- **CTA clarity:** if the product category is unfamiliar, the CTA must
|
|
1568
1641
|
make the preview easy to imagine in one short phrase. Avoid vague asks
|
|
1569
1642
|
like `send the setup link` unless the message has already made that
|
|
@@ -1578,8 +1651,11 @@ teardown`, `record a video`, or similar assets are BLOCKED unless the
|
|
|
1578
1651
|
artifact / preview] you can [use/check/compare]?`.
|
|
1579
1652
|
- **CTA specificity:** generic CTAs like `compare notes`, `worth a chat`,
|
|
1580
1653
|
`open to a call`, or `quick walkthrough` are BLOCKED unless the same
|
|
1581
|
-
line names the specific thing the buyer will
|
|
1582
|
-
next step must be easy to picture.
|
|
1654
|
+
line names the specific thing the buyer will discuss, see, or get. The
|
|
1655
|
+
next step must be easy to picture. `Open to a quick call on how
|
|
1656
|
+
{{company_or_team}} might turn LinkedIn content into pipeline?` passes
|
|
1657
|
+
because the topic is concrete; `Open to compare notes?` fails because the
|
|
1658
|
+
object is missing and the phrase is stale.
|
|
1583
1659
|
- **Preview CTA wording:** when the CTA is a preview, prefer `open to
|
|
1584
1660
|
seeing...` over `worth seeing...` unless the chosen gold motion strongly
|
|
1585
1661
|
supports `worth`. `Open to seeing what this would look like for your own
|
|
@@ -1668,8 +1744,11 @@ led to it. Acceptable openers:
|
|
|
1668
1744
|
- `Hey {{first_name}}, hope this is relevant if [buyer context] is still on your plate.`
|
|
1669
1745
|
- `Hey {{first_name}}, saw you might be interested in [topic], so hope this is relevant.`
|
|
1670
1746
|
- `Hey {{first_name}}, saw you in a few conversations around [topic], so hope this is relevant.`
|
|
1671
|
-
- `Hey {{first_name}},
|
|
1672
|
-
- `Hey {{first_name}}, saw you raise your hand for [topic]
|
|
1747
|
+
- `Hey {{first_name}}, found you in a thread about [topic], so may be off, but this seemed relevant.`
|
|
1748
|
+
- `Hey {{first_name}}, saw you raise your hand for [topic], so figured this was (hopefully) worth sending.` Only use this for explicit lead-magnet comments, replies, or opt-ins.
|
|
1749
|
+
- `Hey {{first_name}}, saw you raise your hand for [topic] (creepy to reach out based on that, i know) - but this felt too on the nose to ignore.` Only use this for explicit lead-magnet comments, replies, or opt-ins.
|
|
1750
|
+
- Do not use the flattened line `so figured this was worth sending`; either keep
|
|
1751
|
+
`(hopefully)` or use `so hope this is relevant`.
|
|
1673
1752
|
- `Hey {{first_name}}, pre-[product], we [did the operator-reality
|
|
1674
1753
|
thing] for [X] years; [one-line consequence].`
|
|
1675
1754
|
- `Hey {{first_name}}, building a thing for [segment] I think you'd
|
|
@@ -1880,10 +1959,18 @@ Flow skeleton (apply even when motion varies):
|
|
|
1880
1959
|
2. Pain — what's breaking now
|
|
1881
1960
|
3. **What the product IS** — one crisp sentence naming the product and what category of work it takes on. Example shape: `[Product] is [a category-noun] that [takes a specific class of work off the buyer's plate]`. When the offer is for the buyer's exact role/credential, prefer `lets you...` or `[role]s like you...` over `lets a [role]...` so the buyer does not feel treated like an outsider. Archive-anchored illustrations: Galley's "AI that reads the messiest BEOs and turns them into production-ready plans"; Revvix's "shows what's actually exploitable on your endpoints based on runtime activity".
|
|
1882
1961
|
4. **What the product DOES** — one action per line. Three actions maximum. Choose the rendering by a **concrete test**, not a feeling:
|
|
1883
|
-
- **
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1962
|
+
- **Prefer bullets when 3 adjacent action lines are maximally parallel**:
|
|
1963
|
+
each starts with the same subject pattern (e.g. `It drafts...` /
|
|
1964
|
+
`It adapts...` / `It helps...`), each is a discrete product function,
|
|
1965
|
+
and none carries narrative context or proof. Use a setup line plus short
|
|
1966
|
+
`-` bullets, e.g. `It helps your team:` then `- Draft posts...`,
|
|
1967
|
+
`- Adapt them...`, `- Keep showing up...`.
|
|
1968
|
+
- **Use one-line paragraphs** when there are only 1-2 actions, at least one
|
|
1969
|
+
action carries a short narrative clause, bullets would feel like a landing
|
|
1970
|
+
page, or the paragraph version is clearly more human and still scans
|
|
1971
|
+
cleanly.
|
|
1972
|
+
- "Conversational motion" alone is **not** a reason to avoid bullets when
|
|
1973
|
+
all 3 action lines repeat the same `It X` structure.
|
|
1887
1974
|
- Never stack the three actions into one glued comma-list sentence.
|
|
1888
1975
|
5. Deployment ease — one short paragraph
|
|
1889
1976
|
6. CTA — useful next step, binary when the brief supports it
|
|
@@ -1892,7 +1979,9 @@ Flow skeleton (apply even when motion varies):
|
|
|
1892
1979
|
Rules within the flow:
|
|
1893
1980
|
|
|
1894
1981
|
- **banned**: comma-stacking three actions into one glued sentence (e.g. `"order intake, inventory sync, and reorder timing"` glued together). Split into one action per line.
|
|
1895
|
-
- **preferred**: one action per line — as one-line paragraphs or as a bullet
|
|
1982
|
+
- **preferred**: one action per line — as one-line paragraphs or as a bullet
|
|
1983
|
+
list, whichever reads cleaner. Use bullets as a mobile readability preference
|
|
1984
|
+
for 3 repeated-subject product actions, not as a blanket hard gate.
|
|
1896
1985
|
- the "what the product IS" sentence comes **before** the action breakdown — skipping it makes the actions feel disconnected
|
|
1897
1986
|
- if the brief does not support three distinct actions, drop to two or one. Do not pad.
|
|
1898
1987
|
- if a proof sentence gets long, split the metric and the explanation into separate one-line paragraphs rather than chaining them together
|
|
@@ -1910,10 +1999,11 @@ Rules:
|
|
|
1910
1999
|
- `"Saw you might be interested in [topic], so hope this is relevant."`
|
|
1911
2000
|
- `"Saw you in a few conversations around [topic], so hope this is relevant."`
|
|
1912
2001
|
- `"Saw you in a few conversations about [topic], so may be off, but this seemed relevant."`
|
|
2002
|
+
- `"Found you in a thread about [topic], so may be off, but this seemed relevant."`
|
|
1913
2003
|
- `"Thought of {{company}} because [observable signal] points at [problem]."`
|
|
1914
2004
|
- `"Figured this might matter if [workflow] is live at {{company}}."`
|
|
1915
|
-
- `"Saw you raise your hand for [topic], so figured this was (hopefully) worth sending."`
|
|
1916
|
-
- `"Saw you raise your hand for [topic] (creepy to reach out based on that, i know) - but this felt too on the nose to ignore."`
|
|
2005
|
+
- `"Saw you raise your hand for [topic], so figured this was (hopefully) worth sending."` Only for explicit lead-magnet comments, replies, or opt-ins.
|
|
2006
|
+
- `"Saw you raise your hand for [topic] (creepy to reach out based on that, i know) - but this felt too on the nose to ignore."` Only for explicit lead-magnet comments, replies, or opt-ins.
|
|
1917
2007
|
- blocked signal use:
|
|
1918
2008
|
- `"AI-GTM stack is clearly on your mind."`
|
|
1919
2009
|
- `"You're clearly focused on [area]."`
|
|
@@ -1922,7 +2012,9 @@ Rules:
|
|
|
1922
2012
|
- `"Saw you on [topic]."`
|
|
1923
2013
|
- `"Saw you around [topic]."`
|
|
1924
2014
|
- `"Saw you engaging with [topic]."`
|
|
1925
|
-
-
|
|
2015
|
+
- `"Saw you raise your hand for [topic], so figured this was worth sending."`
|
|
2016
|
+
- `"Figured this was worth sending."`
|
|
2017
|
+
- signal-led opener shape is a **special case**, not the default. Use it only when the archived motion truly depends on it and the line can stay natural. For LinkedIn-post-sourced campaigns, prefer `"saw you in a few conversations around [topic], so hope this is relevant"` or `"found you in a thread about [topic], so may be off, but this seemed relevant"` when referencing the source makes the outreach feel less random. Avoid activity-log phrasing such as `"you commented on..."`, `"you reacted to..."`, or `"your LinkedIn activity..."` unless the approved motion is the deliberately self-aware raise-hand line for an explicit lead-magnet comment, reply, or opt-in.
|
|
1926
2018
|
- tokenized engagement-source opener shape is BLOCKED by default:
|
|
1927
2019
|
`{{first_name}}, saw you {{engagement_context}} on {{post_context}}` reads
|
|
1928
2020
|
like surveillance unless the filled line is explicitly self-aware and
|
|
@@ -1930,11 +2022,12 @@ Rules:
|
|
|
1930
2022
|
[topic] is part of the plan`, `saw you might be interested in [topic], so hope
|
|
1931
2023
|
this is relevant`, `saw you in a few conversations around [topic], so hope this
|
|
1932
2024
|
is relevant`, `saw you in a few conversations about [topic], so may be off,
|
|
1933
|
-
but this seemed relevant`, or
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
2025
|
+
but this seemed relevant`, or `found you in a thread about [topic], so may be
|
|
2026
|
+
off, but this seemed relevant`. Use the self-aware raise-hand shapes only when
|
|
2027
|
+
the source was an explicit lead-magnet comment, reply, or opt-in: `saw you raise
|
|
2028
|
+
your hand for [topic], so figured this was (hopefully) worth sending` or `saw you
|
|
2029
|
+
raise your hand for [topic] (creepy to reach out based on that, i know) - but
|
|
2030
|
+
this felt too on the nose to ignore`. Do not use the longer `you might not remember the thread...` shape;
|
|
1938
2031
|
if the concise source bridge still feels awkward, omit the engagement reference.
|
|
1939
2032
|
- do not describe the sender/client in third person inside the outbound message.
|
|
1940
2033
|
`p.s. Saju's angle is...`, `Christian's angle is...`, `[sender]'s approach
|
|
@@ -2368,7 +2461,7 @@ hiring for`
|
|
|
2368
2461
|
- Best CTA: Candidate [A|B|C] — reason
|
|
2369
2462
|
- Best PS / no-PS decision: Candidate [A|B|C] — reason
|
|
2370
2463
|
- Element edits made by finalizer: ...
|
|
2371
|
-
-
|
|
2464
|
+
- Parallel action formatting: bullets used | paragraphs kept | not applicable — reason
|
|
2372
2465
|
- Style consistency check: PASS | BLOCKED — reason
|
|
2373
2466
|
- Assembly note: clean combination or one candidate swept
|
|
2374
2467
|
|
|
@@ -2377,7 +2470,7 @@ hiring for`
|
|
|
2377
2470
|
- Original winner: ...
|
|
2378
2471
|
- Simplified candidate: ...
|
|
2379
2472
|
- Simplifier edits: combined lines | split dense line | preserved bullet stack | added bullet stack | none
|
|
2380
|
-
-
|
|
2473
|
+
- Parallel action formatting: preserved bullets | added bullets | paragraphs kept | not applicable — reason
|
|
2381
2474
|
- Robustness check: PASS | BLOCKED — reason
|
|
2382
2475
|
- Decision: applied | rejected
|
|
2383
2476
|
|
|
@@ -2400,6 +2493,7 @@ hiring for`
|
|
|
2400
2493
|
- Jargon / acronym exactness: PASS | BLOCKED — reason
|
|
2401
2494
|
- Style consistency: PASS | BLOCKED — reason
|
|
2402
2495
|
- CTA truth: PASS | BLOCKED — reason
|
|
2496
|
+
- Brief CTA obedience: PASS | BLOCKED | NOT APPLICABLE — reason
|
|
2403
2497
|
- CTA clarity: PASS | BLOCKED — reason
|
|
2404
2498
|
- PS restraint: PASS | BLOCKED | OMITTED — reason
|
|
2405
2499
|
- YC / backing PS: PASS | BLOCKED | OMITTED — reason
|
|
@@ -2520,22 +2614,28 @@ too generic, diagnose the gap precisely:
|
|
|
2520
2614
|
|
|
2521
2615
|
Then tighten the brief or calibration notes before scaling.
|
|
2522
2616
|
|
|
2523
|
-
Use the
|
|
2524
|
-
not already contain winning examples. Do not default to generic
|
|
2525
|
-
copy when the motion clearly matches a tighter
|
|
2526
|
-
references
|
|
2617
|
+
Use the v2 runtime gold pack as the primary line-level source even when the
|
|
2618
|
+
brief does not already contain winning examples. Do not default to generic
|
|
2619
|
+
REPLY-style copy when the motion clearly matches a tighter approved pattern.
|
|
2620
|
+
Primary approved references are:
|
|
2527
2621
|
|
|
2528
|
-
-
|
|
2622
|
+
- sellable.dev
|
|
2623
|
+
- Hey Digital / HeyDigital
|
|
2529
2624
|
- Galley
|
|
2530
|
-
-
|
|
2531
|
-
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
-
|
|
2625
|
+
- Clover
|
|
2626
|
+
- Persona
|
|
2627
|
+
|
|
2628
|
+
Use Superpower only for benefits/healthcare mechanism language and cleaned
|
|
2629
|
+
low-certainty relevance bridges. Use Revvix / Spektion and Superposition only
|
|
2630
|
+
for explicit event/logistics or job-post/founder-hiring motions. Do not use
|
|
2631
|
+
Gelee, westpark villas, Amplify Security, or raw old-client archive examples as
|
|
2632
|
+
runtime inspiration unless the caller explicitly provides them as campaign
|
|
2633
|
+
calibration.
|
|
2535
2634
|
|
|
2536
2635
|
When the brief is sparse but the motion clearly matches an archived winner,
|
|
2537
|
-
borrow the closest
|
|
2538
|
-
`gold-standard-message-examples.md`
|
|
2636
|
+
borrow the closest approved shape from `gold-standard-runtime-message-pack.md`
|
|
2637
|
+
first, then use `gold-standard-message-examples.md` only for strategy skeletons
|
|
2638
|
+
before inventing a new structure.
|
|
2539
2639
|
|
|
2540
2640
|
### Single Row
|
|
2541
2641
|
|
|
@@ -2619,12 +2719,12 @@ research → condense → 10 angle agents in parallel → finalizer combines bes
|
|
|
2619
2719
|
- Background: {1-2 lines}
|
|
2620
2720
|
|
|
2621
2721
|
## Voice + Outbound Rules (condensed — full files available via Read tool)
|
|
2622
|
-
- Use
|
|
2623
|
-
- Flow skeleton: opener → pain → **what the product IS** → **what it DOES** (one action per line, up to three) → deployment ease → CTA → optional PS
|
|
2722
|
+
- Use `~/.sellable/configs/core/context-modes.md` to choose the right context stance, then run an anti-AI audit against `~/.sellable/configs/core/anti-ai-writing-style.md` before returning copy.
|
|
2723
|
+
- Flow skeleton: opener → pain → **what the product IS** → **what it DOES** (one action per line, up to three; prefer short bullets for 3 repeated-subject product actions) → deployment ease → CTA → optional PS
|
|
2624
2724
|
- A cold reader must be able to state what the product does in one sentence after reading. Require a crisp `Product is an X that does Y` anchor before any action breakdown. Do not gesture at "that chain" / "the stack" / "that work"
|
|
2625
2725
|
- Blank line between every sentence in the body. The body renders as a sequence of one-line paragraphs separated by blank lines, not as multi-sentence paragraphs. Target 6-10 one-line paragraphs
|
|
2626
2726
|
- 5th-grade reading level by default. Cut glue language (handoff, order-to-cash, rip-and-replace). Keep brief-native product/tool names (Shopify, HubSpot)
|
|
2627
|
-
- No bullet
|
|
2727
|
+
- No feature/benefit marketing bullet lists, no "I noticed...", no compliment sandwiches, no em dashes unless the canonical example uses one. Exception: use a short bullet stack when 3 adjacent product actions repeat the same subject pattern and bullets improve mobile readability.
|
|
2628
2728
|
- No synthesized framing ("at your stage", "in a setup like yours", "running X means...", "X means you're likely...")
|
|
2629
2729
|
- 3 candidates then `Finalizer Pass` — pick best opener, proof sentence, bridge, CTA across them and assemble the winner
|
|
2630
2730
|
- PS is optional; only include if it materially strengthens the fit case. When included, use `I` / `our CEO` / `our team` / `we` voice, never bare first names. At most two proof beats, tied to why the sender understands the buyer's pain. No three-credential resume lists
|
|
@@ -2686,7 +2786,7 @@ research → condense → 10 angle agents in parallel → finalizer combines bes
|
|
|
2686
2786
|
8. Return: { success: true, message: "...", research: [...], anglesExplored: 10 }
|
|
2687
2787
|
```
|
|
2688
2788
|
|
|
2689
|
-
**IMPORTANT:** Load
|
|
2789
|
+
**IMPORTANT:** Load `~/.sellable/configs/core/about-me.md`, `~/.sellable/configs/core/my-company.md`, `~/.sellable/configs/core/context-modes.md`, `~/.sellable/configs/core/proof-ledger.md`, `~/.sellable/configs/core/wins-ledger.md`, `~/.sellable/configs/core/anti-ai-writing-style.md`, `~/.sellable/configs/writing/outbound.md`, and `~/.sellable/insights/cross-skill.md` once in the lead agent. Use the legacy style guide fallback when present. Pass condensed versions to workers so context stays focused.
|
|
2690
2790
|
|
|
2691
2791
|
## Batch Approval
|
|
2692
2792
|
|
|
@@ -111,7 +111,7 @@ mark private before you ask a blank questionnaire.
|
|
|
111
111
|
|
|
112
112
|
Prefill from whatever exists:
|
|
113
113
|
|
|
114
|
-
-
|
|
114
|
+
- `~/.sellable/configs/**`, especially current writing, audience, FAQs, and
|
|
115
115
|
discovery files.
|
|
116
116
|
- `docs/funding/**`, `docs/business/**`, and `docs/content/**`.
|
|
117
117
|
- User-supplied voice samples such as writing, posts, emails, meeting
|
|
@@ -151,9 +151,9 @@ Audio-friendly workflow:
|
|
|
151
151
|
|
|
152
152
|
Every run writes a raw archive:
|
|
153
153
|
|
|
154
|
-
-
|
|
155
|
-
-
|
|
156
|
-
-
|
|
154
|
+
- `~/.sellable/interviews/{date}-{slug}/raw.md`
|
|
155
|
+
- `~/.sellable/interviews/{date}-{slug}/compiled.md`
|
|
156
|
+
- `~/.sellable/interviews/{date}-{slug}/decisions.md`
|
|
157
157
|
|
|
158
158
|
Raw archives preserve the run. They are not the stable memory layer.
|
|
159
159
|
|
|
@@ -171,20 +171,20 @@ voice-faithful, reusable, or corrective, propose a candidate upsert:
|
|
|
171
171
|
- derived updates
|
|
172
172
|
|
|
173
173
|
Ask the user to approve, edit, reject, or mark private. Approved answers go to
|
|
174
|
-
|
|
174
|
+
`~/.sellable/configs/core/answer-bank.md` using stable keys so repeat runs can
|
|
175
175
|
add, correct, merge, and avoid duplicates.
|
|
176
176
|
|
|
177
177
|
## 5. Register Transcript And Voice Samples
|
|
178
178
|
|
|
179
179
|
Every interview or voice sample can register a curated transcript library entry
|
|
180
|
-
under
|
|
180
|
+
under `~/.sellable/configs/core/transcripts/`. Keep the reusable index separate
|
|
181
181
|
from raw archives.
|
|
182
182
|
|
|
183
183
|
Required transcript targets:
|
|
184
184
|
|
|
185
|
-
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
185
|
+
- `~/.sellable/configs/core/transcripts/README.md`
|
|
186
|
+
- `~/.sellable/configs/core/transcripts/INDEX.md`
|
|
187
|
+
- `~/.sellable/configs/core/transcripts/topics/{topic}.md`
|
|
188
188
|
|
|
189
189
|
Track source, date, speakers, target speaker, context mode, topic tags, quality
|
|
190
190
|
notes, sensitivity, and derived memory links.
|
|
@@ -194,15 +194,15 @@ notes, sensitivity, and derived memory links.
|
|
|
194
194
|
Use `references/compiler-schema.md` before writing compiled core files. Merge
|
|
195
195
|
updates into the smallest relevant stable file:
|
|
196
196
|
|
|
197
|
-
-
|
|
198
|
-
-
|
|
199
|
-
-
|
|
200
|
-
-
|
|
201
|
-
-
|
|
202
|
-
-
|
|
203
|
-
-
|
|
204
|
-
-
|
|
205
|
-
-
|
|
197
|
+
- `~/.sellable/configs/core/about-me.md`
|
|
198
|
+
- `~/.sellable/configs/core/my-company.md`
|
|
199
|
+
- `~/.sellable/configs/core/anti-ai-writing-style.md`
|
|
200
|
+
- `~/.sellable/configs/core/proof-ledger.md`
|
|
201
|
+
- `~/.sellable/configs/core/story-bank.md`
|
|
202
|
+
- `~/.sellable/configs/core/answer-bank.md`
|
|
203
|
+
- `~/.sellable/configs/core/context-modes.md`
|
|
204
|
+
- `~/.sellable/configs/core/decision-rules.md`
|
|
205
|
+
- `~/.sellable/configs/core/change-log.md`
|
|
206
206
|
|
|
207
207
|
Repeat runs must preserve user edits. Only replace generated sections that are
|
|
208
208
|
clearly marked as generated/mergeable. Otherwise append, patch the smallest
|
|
@@ -213,10 +213,10 @@ section, or add a dated correction in `change-log.md`.
|
|
|
213
213
|
Use curated reference folders with `INDEX.md` manifests and copied or distilled
|
|
214
214
|
examples where the example itself is useful context:
|
|
215
215
|
|
|
216
|
-
-
|
|
217
|
-
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
216
|
+
- `~/.sellable/configs/core/references/linkedin-posts/`
|
|
217
|
+
- `~/.sellable/configs/core/references/inspiration/`
|
|
218
|
+
- `~/.sellable/configs/core/references/applications/`
|
|
219
|
+
- `~/.sellable/configs/core/references/sales-copy/`
|
|
220
220
|
|
|
221
221
|
Use `references/reference-curation.md` for manifest fields, duplicate keys, and
|
|
222
222
|
when to copy versus index only.
|
|
@@ -226,7 +226,7 @@ when to copy versus index only.
|
|
|
226
226
|
Before finalizing, run the silent audit pass in `references/anti-ai-audit.md`.
|
|
227
227
|
Capture banned AI-ish patterns, user-authentic exceptions, context-only rules,
|
|
228
228
|
negative-parallelism limits, proof hygiene, and anti-overfitting warnings in
|
|
229
|
-
|
|
229
|
+
`~/.sellable/configs/core/anti-ai-writing-style.md`.
|
|
230
230
|
|
|
231
231
|
## 9. Continue After Saves
|
|
232
232
|
|
|
@@ -248,7 +248,7 @@ Repeat runs are normal. They must add, correct, merge, and preserve user edits.
|
|
|
248
248
|
references.
|
|
249
249
|
- Merge into compiled core files instead of replacing whole documents.
|
|
250
250
|
- Preserve manual sections unless the user explicitly asks to rewrite them.
|
|
251
|
-
- Add downstream corrections to
|
|
251
|
+
- Add downstream corrections to `~/.sellable/configs/core/change-log.md`, then
|
|
252
252
|
update the smallest affected rule, answer, claim, story, or context mode.
|
|
253
253
|
</idempotency_rules>
|
|
254
254
|
|
|
@@ -21,16 +21,16 @@ Key principles:
|
|
|
21
21
|
|
|
22
22
|
## Original Objective
|
|
23
23
|
|
|
24
|
-
Conduct a voice-first interview to populate
|
|
24
|
+
Conduct a voice-first interview to populate `~/.sellable/configs/`:
|
|
25
25
|
|
|
26
|
-
1. Style guide ->
|
|
26
|
+
1. Style guide -> `~/.sellable/configs/writing/styleguide-core.md` and persisted
|
|
27
27
|
via `set_engage_style_guide`.
|
|
28
|
-
2. Comment rules ->
|
|
29
|
-
3. ICP profile ->
|
|
30
|
-
4. Tracked people ->
|
|
28
|
+
2. Comment rules -> `~/.sellable/configs/writing/comments.md`.
|
|
29
|
+
3. ICP profile -> `~/.sellable/configs/audience/icp.md`.
|
|
30
|
+
4. Tracked people -> `~/.sellable/configs/discovery/influencers.md` via
|
|
31
31
|
`upsert_engage_tracked_person`.
|
|
32
32
|
|
|
33
|
-
The interview reads
|
|
33
|
+
The interview reads `~/.sellable/insights/` to ask smarter questions, such as
|
|
34
34
|
which topics or hooks performed in the latest engage/post sessions. The
|
|
35
35
|
interview should feel like a 5-minute conversation, not a form.
|
|
36
36
|
|
|
@@ -40,10 +40,10 @@ interview should feel like a 5-minute conversation, not a form.
|
|
|
40
40
|
|
|
41
41
|
1. Load current configs via `get_engage_memory()` to check what is populated.
|
|
42
42
|
2. Read lightweight insight files when they exist:
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
43
|
+
- `~/.sellable/insights/engage-sessions.md`
|
|
44
|
+
- `~/.sellable/insights/post-sessions.md`
|
|
45
|
+
- `~/.sellable/insights/cross-skill.md`
|
|
46
|
+
- `~/.sellable/configs/audience/icp.md`
|
|
47
47
|
3. Load the user's LinkedIn profile via `fetch_linkedin_profile`.
|
|
48
48
|
4. Fetch 5-10 recent posts from 2-3 relevant thought leaders using
|
|
49
49
|
`search_engagement_posts`.
|
|
@@ -95,7 +95,7 @@ corrections and rewrite the config files.
|
|
|
95
95
|
|
|
96
96
|
### Phase 5: ICP Profile
|
|
97
97
|
|
|
98
|
-
If
|
|
98
|
+
If `~/.sellable/configs/audience/icp.md` is still a template or thin, ask who the
|
|
99
99
|
user wants to reach with LinkedIn presence, then write the profile using
|
|
100
100
|
`core/ICP.template.md`.
|
|
101
101
|
|
|
@@ -109,7 +109,7 @@ Ask which specific people the user wants to track, then call
|
|
|
109
109
|
1. Never fabricate quotes or examples.
|
|
110
110
|
2. Preserve the user's exact phrasing as blockquotes in the style guide.
|
|
111
111
|
3. Keep the interview under 5 minutes of user effort.
|
|
112
|
-
4. Always write results to
|
|
112
|
+
4. Always write results to `~/.sellable/configs/`.
|
|
113
113
|
5. Persist the style guide via MCP.
|
|
114
114
|
6. Anchor every question to a real post.
|
|
115
115
|
7. Read business context first, including
|
|
@@ -7,13 +7,13 @@ sensitive, external, or only useful for provenance. Every folder uses INDEX.md m
|
|
|
7
7
|
|
|
8
8
|
## Folders
|
|
9
9
|
|
|
10
|
-
-
|
|
10
|
+
- `~/.sellable/configs/core/references/linkedin-posts/` - personal best posts,
|
|
11
11
|
comments, hooks, and thread patterns.
|
|
12
|
-
-
|
|
12
|
+
- `~/.sellable/configs/core/references/inspiration/` - admired outside examples,
|
|
13
13
|
anti-examples, voice-capture sources, and pattern notes.
|
|
14
|
-
-
|
|
14
|
+
- `~/.sellable/configs/core/references/applications/` - accelerator, investor,
|
|
15
15
|
founder-profile, and answer-pack references.
|
|
16
|
-
-
|
|
16
|
+
- `~/.sellable/configs/core/references/sales-copy/` - outbound, reply, website,
|
|
17
17
|
deck, objection, proof, and customer-language examples.
|
|
18
18
|
|
|
19
19
|
Each folder should have an `INDEX.md`. A copied/distilled example should live
|
|
@@ -5,7 +5,7 @@ materials are provenance; do not expose them as separate user-facing workflows.
|
|
|
5
5
|
|
|
6
6
|
## Operating Loop
|
|
7
7
|
|
|
8
|
-
1. Prefill from existing
|
|
8
|
+
1. Prefill from existing `~/.sellable/configs`, docs, posts, transcripts, emails,
|
|
9
9
|
call notes, and user-provided samples.
|
|
10
10
|
2. Do evidence collection: collect source path/URL, date, author/speaker,
|
|
11
11
|
context, audience, privacy, and whether the sample is natural speech, edited
|