@sellable/mcp 0.1.203 → 0.1.204
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/dist/engage-memory.js +0 -5
- package/dist/identity-memory.js +0 -4
- package/dist/index-dev.js +0 -0
- package/dist/index.js +0 -0
- package/dist/tools/engage-memory.js +2 -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/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 +6 -1
- 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 +99 -49
- 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
package/README.md
CHANGED
|
@@ -345,12 +345,12 @@ with outcomes, and tracked people (LinkedIn profiles), all scoped by workspace.
|
|
|
345
345
|
|
|
346
346
|
- Auth + active workspace: `~/.sellable/config.json` (or `SELLABLE_CONFIG_PATH`; old `$CODEX_HOME/sellable.json`, `~/.codex/sellable.json`, and `~/.claude/sellable.json` files remain compatibility fallbacks)
|
|
347
347
|
- Engage memory (style guide + searches + tracked people): `sellable.engage.json` (or `SELLABLE_ENGAGE_MEMORY_PATH`)
|
|
348
|
-
- Team-editable
|
|
349
|
-
-
|
|
350
|
-
-
|
|
351
|
-
-
|
|
352
|
-
-
|
|
353
|
-
-
|
|
348
|
+
- Team-editable durable configs (home-level source of truth):
|
|
349
|
+
- `~/.sellable/configs/writing/styleguide.md`
|
|
350
|
+
- `~/.sellable/configs/audience/icp-filters.md`
|
|
351
|
+
- `~/.sellable/configs/proof/claims.md`
|
|
352
|
+
- `~/.sellable/configs/discovery/influencers.md`
|
|
353
|
+
- `~/.sellable/configs/discovery/post-filters.md`
|
|
354
354
|
|
|
355
355
|
Files under `mcp/sellable/skills/**/core/*` are **package repo files**, not the intended user config surface.
|
|
356
356
|
|
|
@@ -363,7 +363,7 @@ Primary public entrypoint for the approval-gated campaign creation flow.
|
|
|
363
363
|
### interview
|
|
364
364
|
|
|
365
365
|
Public identity/company memory interview. Builds durable core files under
|
|
366
|
-
|
|
366
|
+
`~/.sellable/configs/core/**`, raw archives under `~/.sellable/interviews/**`,
|
|
367
367
|
and reusable answer/proof/story/transcript/reference memory for downstream
|
|
368
368
|
Sellable writing workflows.
|
|
369
369
|
|
package/dist/engage-memory.js
CHANGED
|
@@ -8,11 +8,6 @@ function resolveConfigsDir() {
|
|
|
8
8
|
if (process.env.SELLABLE_CONFIGS_DIR) {
|
|
9
9
|
candidates.push(path.resolve(process.env.SELLABLE_CONFIGS_DIR));
|
|
10
10
|
}
|
|
11
|
-
// Same resolution strategy as skills.ts
|
|
12
|
-
if (process.argv[1]) {
|
|
13
|
-
candidates.push(path.resolve(path.dirname(process.argv[1]), "../../.sellable/configs"));
|
|
14
|
-
}
|
|
15
|
-
candidates.push(path.resolve(process.cwd(), ".sellable/configs"));
|
|
16
11
|
candidates.push(path.resolve(os.homedir(), ".sellable/configs"));
|
|
17
12
|
for (const candidate of candidates) {
|
|
18
13
|
if (fs.existsSync(candidate)) {
|
package/dist/identity-memory.js
CHANGED
|
@@ -20,10 +20,6 @@ export function resolveIdentityConfigsDir() {
|
|
|
20
20
|
if (process.env.SELLABLE_CONFIGS_DIR) {
|
|
21
21
|
candidates.push(path.resolve(process.env.SELLABLE_CONFIGS_DIR));
|
|
22
22
|
}
|
|
23
|
-
if (process.argv[1]) {
|
|
24
|
-
candidates.push(path.resolve(path.dirname(process.argv[1]), "../../.sellable/configs"));
|
|
25
|
-
}
|
|
26
|
-
candidates.push(path.resolve(process.cwd(), ".sellable/configs"));
|
|
27
23
|
candidates.push(path.resolve(os.homedir(), ".sellable/configs"));
|
|
28
24
|
for (const candidate of candidates) {
|
|
29
25
|
if (fs.existsSync(candidate)) {
|
package/dist/index-dev.js
CHANGED
|
File without changes
|
package/dist/index.js
CHANGED
|
File without changes
|
|
@@ -2,7 +2,7 @@ import { copySenderConfig, getEngageMemory, migrateFlatConfigs, recordProvenSear
|
|
|
2
2
|
export const engageMemoryToolDefinitions = [
|
|
3
3
|
{
|
|
4
4
|
name: "get_engage_memory",
|
|
5
|
-
description: "Load backward-compatible engage memory from
|
|
5
|
+
description: "Load backward-compatible engage memory from ~/.sellable/configs/: style guide, proven search keywords, tracked people, plus optional core identity/company memory. All data lives in readable markdown files the user can also edit directly. When senderId is provided, reads compatibility overrides from senders/{senderId}/ with flat-path fallback.",
|
|
6
6
|
inputSchema: {
|
|
7
7
|
type: "object",
|
|
8
8
|
properties: {
|
|
@@ -17,7 +17,7 @@ export const engageMemoryToolDefinitions = [
|
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
name: "set_engage_style_guide",
|
|
20
|
-
description: "Write the user's commenting style guide. When senderId is provided, writes to
|
|
20
|
+
description: "Write the user's commenting style guide. When senderId is provided, writes to ~/.sellable/configs/senders/{senderId}/styleguide-core.md. Otherwise writes to ~/.sellable/configs/writing/styleguide-core.md.",
|
|
21
21
|
inputSchema: {
|
|
22
22
|
type: "object",
|
|
23
23
|
properties: {
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@ This log captures what has worked in real campaigns.
|
|
|
4
4
|
|
|
5
5
|
Entries should be short, specific, and based on observed outcomes.
|
|
6
6
|
|
|
7
|
-
**Cross-skill learnings** that would help other skills (engage, create-post) should ALSO be written to
|
|
7
|
+
**Cross-skill learnings** that would help other skills (engage, create-post) should ALSO be written to `~/.sellable/insights/cross-skill.md` so the entire system learns.
|
|
8
8
|
|
|
9
9
|
## Log
|
|
10
10
|
|
|
@@ -41,8 +41,8 @@ Example: "In a 15-minute call, we will audit your top 10 accounts and show where
|
|
|
41
41
|
- **Bridge to:** [How it connects to their pain]
|
|
42
42
|
- **Avoid:** [Generic phrases to skip - "best-in-class", "industry-leading", etc.]
|
|
43
43
|
- **Voice:** [Reference core memory / composed engage memory first. Use legacy writing memory only as fallback.]
|
|
44
|
-
- **Outbound rules:** [Reference
|
|
45
|
-
- **Proof boundaries:** [Reference
|
|
44
|
+
- **Outbound rules:** [Reference `~/.sellable/configs/writing/outbound.md` if loaded -- observation -> relevance -> ask]
|
|
45
|
+
- **Proof boundaries:** [Reference `~/.sellable/configs/core/proof-ledger.md` and `~/.sellable/configs/core/wins-ledger.md` if loaded. Do not upgrade or invent claims.]
|
|
46
46
|
|
|
47
47
|
## Do NOT Target
|
|
48
48
|
|
|
@@ -15,7 +15,7 @@ assistant message directly from the `result.result` stream-json payload —
|
|
|
15
15
|
it does not read a file off disk.
|
|
16
16
|
|
|
17
17
|
If you find yourself emitting a TodoWrite step like "Write brief.md v1
|
|
18
|
-
to disk" or "Save brief to
|
|
18
|
+
to disk" or "Save brief to ~/.sellable/..." — DELETE that step and return
|
|
19
19
|
the brief inline instead. The tools `Write`, `Edit`, and `Bash` are
|
|
20
20
|
intentionally not in the Phase 83 harness allowlist; attempting them
|
|
21
21
|
will cause a ToolSearch loop that deadlocks the turn.
|
|
@@ -37,7 +37,7 @@ offer is, why it should work, and what must be true before we launch. Do not
|
|
|
37
37
|
prescribe message structure, opener order, or final copy here.]
|
|
38
38
|
|
|
39
39
|
Draft path:
|
|
40
|
-
|
|
40
|
+
`~/.sellable/create-campaign-brief/drafts/{workspace-slug}/{campaign-slug}/brief.md`
|
|
41
41
|
|
|
42
42
|
## Product
|
|
43
43
|
|
|
@@ -58,7 +58,7 @@ _Personalization: References their previous exit or current venture by name + th
|
|
|
58
58
|
|
|
59
59
|
Hi {{first_name}}, let me know if i'm off, but {{seems_like_you}}.
|
|
60
60
|
|
|
61
|
-
saw you
|
|
61
|
+
saw you in a few conversations around {{signal_topic}}, so hope this is relevant.
|
|
62
62
|
|
|
63
63
|
we work with about 30 exited founders right now (yc, techstars, sequoia backed) handling their entire linkedin with ai + human review.
|
|
64
64
|
|
|
@@ -131,7 +131,7 @@ is this worth a look or should i send a short overview?
|
|
|
131
131
|
|
|
132
132
|
Hi sarah, let me know if i'm off, but seems like you started building something new in the pharma space after the Benchling exit.
|
|
133
133
|
|
|
134
|
-
saw you
|
|
134
|
+
saw you in a few conversations around founder-led growth, so hope this is relevant.
|
|
135
135
|
|
|
136
136
|
we work with about 30 exited founders right now (yc, techstars, sequoia backed) handling their entire linkedin with ai + human review.
|
|
137
137
|
|
|
@@ -35,70 +35,82 @@ Signal-based outreach using peer-to-peer tone. Positioning Superpower as early d
|
|
|
35
35
|
|
|
36
36
|
**VARIANT 1 — Subject: jeff/{{first name}} intro**
|
|
37
37
|
|
|
38
|
-
hey {{first name}},
|
|
38
|
+
hey {{first name}},
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
saw you in a few conversations around {{topic}}, so hope this is relevant.
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
if preventive health is anywhere near the benefits plan at {{company}}, Superpower may be worth a look.
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
it screens for 1,000+ conditions from a single blood draw and surfaces risks before they become claims.
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
basically your team gets to see what's coming instead of only reacting to it.
|
|
47
|
+
|
|
48
|
+
should i send over the short version?
|
|
47
49
|
|
|
48
50
|
**VARIANT 2 — Subject: jeff/{{first name}} intro**
|
|
49
51
|
|
|
50
|
-
hey {{first name}}
|
|
52
|
+
hey {{first name}},
|
|
53
|
+
|
|
54
|
+
saw you in a few conversations around {{topic}}, so hope this is relevant.
|
|
51
55
|
|
|
52
56
|
most annual physicals test 15 biomarkers max.
|
|
53
57
|
|
|
54
|
-
|
|
58
|
+
Superpower looks at 100+ biomarkers and screens for 1,000+ conditions from one draw.
|
|
55
59
|
|
|
56
|
-
teams like Lyft and Notion are already exploring this
|
|
60
|
+
teams like Lyft and Notion are already exploring this at $199 a person.
|
|
57
61
|
|
|
58
|
-
if
|
|
62
|
+
if preventive health is nowhere near your lane, ignore me.
|
|
59
63
|
|
|
60
|
-
|
|
64
|
+
should i send over the short version?
|
|
61
65
|
|
|
62
66
|
## Examples
|
|
63
67
|
|
|
64
68
|
**Example 1 (Variant 1 — self-insured health plans):**
|
|
65
69
|
Subject: susana/prab intro
|
|
66
70
|
|
|
67
|
-
hey susana,
|
|
71
|
+
hey susana,
|
|
72
|
+
|
|
73
|
+
saw you in a few conversations around self-insured health plans, so hope this is relevant.
|
|
68
74
|
|
|
69
|
-
|
|
75
|
+
if preventive health is anywhere near the benefits plan at Quantum Health, Superpower may be worth a look.
|
|
70
76
|
|
|
71
|
-
|
|
77
|
+
it screens for 1,000+ conditions from a single blood draw and surfaces risks before they become claims.
|
|
72
78
|
|
|
73
|
-
basically your team gets to see what's coming instead of
|
|
79
|
+
basically your team gets to see what's coming instead of only reacting to it.
|
|
74
80
|
|
|
75
|
-
|
|
81
|
+
should i send over the short version?
|
|
76
82
|
|
|
77
83
|
**Example 2 (Variant 2 — employee wellness programs):**
|
|
78
84
|
Subject: lisa/prab intro
|
|
79
85
|
|
|
80
|
-
hey lisa
|
|
86
|
+
hey lisa,
|
|
87
|
+
|
|
88
|
+
saw you in a few conversations around employee wellness programs, so hope this is relevant.
|
|
81
89
|
|
|
82
90
|
most annual physicals test 15 biomarkers max.
|
|
83
91
|
|
|
84
|
-
|
|
92
|
+
Superpower looks at 100+ biomarkers and screens for 1,000+ conditions from one draw.
|
|
93
|
+
|
|
94
|
+
teams like Lyft and Notion are already exploring this at $199 a person.
|
|
85
95
|
|
|
86
|
-
|
|
96
|
+
if preventive health is nowhere near your lane, ignore me.
|
|
87
97
|
|
|
88
|
-
|
|
98
|
+
should i send over the short version?
|
|
89
99
|
|
|
90
100
|
**Example 3 (Variant 1 — employee wellness programs):**
|
|
91
101
|
Subject: princess/prab intro
|
|
92
102
|
|
|
93
|
-
hey princess,
|
|
103
|
+
hey princess,
|
|
104
|
+
|
|
105
|
+
saw you in a few conversations around employee wellness programs, so hope this is relevant.
|
|
94
106
|
|
|
95
|
-
|
|
107
|
+
if preventive health is anywhere near the benefits plan at Marriott, Superpower may be worth a look.
|
|
96
108
|
|
|
97
|
-
|
|
109
|
+
it screens for 1,000+ conditions from a single blood draw and surfaces risks before they become claims.
|
|
98
110
|
|
|
99
|
-
basically your team gets to see what's coming instead of
|
|
111
|
+
basically your team gets to see what's coming instead of only reacting to it.
|
|
100
112
|
|
|
101
|
-
|
|
113
|
+
should i send over the short version?
|
|
102
114
|
|
|
103
115
|
## Social Proof
|
|
104
116
|
|
|
@@ -112,7 +124,8 @@ Teams like Lyft and Notion are exploring Superpower's early detection platform.
|
|
|
112
124
|
- **ICP filtering:** All prospects filtered against ICP criteria before entering send queue
|
|
113
125
|
- **Positioning:** Early detection tool for claims prevention, not a wellness benefit
|
|
114
126
|
- **Tone:** All lowercase, casual, peer-to-peer - building relationship before asking
|
|
115
|
-
- **Two approved variants:** Testing
|
|
127
|
+
- **Two approved variants:** Testing a low-certainty signal bridge vs. proof-led
|
|
128
|
+
benefits mechanism
|
|
116
129
|
|
|
117
130
|
### Rubric Markdown
|
|
118
131
|
|
|
@@ -212,8 +225,8 @@ Teams like Lyft and Notion are already using early detection screening. One bloo
|
|
|
212
225
|
|
|
213
226
|
**Subject: Prab/{{first_name}} intro**
|
|
214
227
|
|
|
215
|
-
Hey {{first_name}},
|
|
228
|
+
Hey {{first_name}},
|
|
216
229
|
|
|
217
|
-
|
|
230
|
+
hope this is relevant if preventive health is anywhere near the benefits plan at {{company}}.
|
|
218
231
|
|
|
219
|
-
|
|
232
|
+
Superpower screens for 1,000+ conditions from a single blood draw and surfaces risks before they become claims.
|
|
@@ -14,7 +14,8 @@ Included as primary gold examples:
|
|
|
14
14
|
- `Galley`
|
|
15
15
|
- `Clover`
|
|
16
16
|
- `Persona`
|
|
17
|
-
- `Superpower`
|
|
17
|
+
- `Superpower` — domain-language reference only; use the cleaned low-certainty
|
|
18
|
+
opener, not retired engagement-source phrasing
|
|
18
19
|
|
|
19
20
|
Not included in runtime inspiration:
|
|
20
21
|
|
|
@@ -33,6 +34,9 @@ Not included in runtime inspiration:
|
|
|
33
34
|
|
|
34
35
|
- Feed only endorsed examples into generation.
|
|
35
36
|
- Keep bad lines only if they are explicitly labeled `BAD` and paired with a `BETTER` version.
|
|
37
|
+
- Treat sellable.dev, Hey Digital, Persona, Galley, and Clover as the primary
|
|
38
|
+
line-level quality anchors. Superpower is useful for benefits/healthcare
|
|
39
|
+
mechanism language, but it must not outrank those examples on opener style.
|
|
36
40
|
- Default to one approved message in the generated brief unless the ICP is genuinely broad.
|
|
37
41
|
- A/B CTA is optional. Use it only when the second option is truly strong.
|
|
38
42
|
- If there is a great low-friction proof asset or case study, that is often the best Option B.
|
|
@@ -213,22 +217,21 @@ Why included:
|
|
|
213
217
|
|
|
214
218
|
- simple language in a hard domain
|
|
215
219
|
- useful plain-language healthcare constraint example
|
|
216
|
-
- why it works: it
|
|
217
|
-
|
|
218
|
-
call
|
|
220
|
+
- why it works: it uses a low-certainty signal bridge, explains the mechanism
|
|
221
|
+
in plain language, and keeps the ask tiny instead of forcing a call
|
|
219
222
|
|
|
220
223
|
```md
|
|
221
224
|
Hey {{first_name}},
|
|
222
225
|
|
|
223
|
-
|
|
226
|
+
saw you in a few conversations around {{topic}}, so hope this is relevant.
|
|
224
227
|
|
|
225
|
-
|
|
228
|
+
if preventive health is anywhere near the benefits plan at {{company}}, Superpower may be worth a look.
|
|
226
229
|
|
|
227
|
-
|
|
230
|
+
it screens for 1,000+ conditions from a single blood draw and surfaces risks before they become claims.
|
|
228
231
|
|
|
229
|
-
basically your team gets to see what's coming instead of
|
|
232
|
+
basically your team gets to see what's coming instead of only reacting to it.
|
|
230
233
|
|
|
231
|
-
|
|
234
|
+
should i send over the short version?
|
|
232
235
|
```
|
|
233
236
|
|
|
234
237
|
Locked production variant from the same Superpower campaign:
|
|
@@ -413,7 +413,7 @@ queue, attach sequence, or start. If a draft shell exists, leave it paused/
|
|
|
413
413
|
non-sendable for operator cleanup instead of silently deleting a workspace row.
|
|
414
414
|
|
|
415
415
|
Draft effect: move the draft directory to
|
|
416
|
-
|
|
416
|
+
`~/.sellable/create-campaign-v2/drafts/{workspace-slug}/.aborted/{campaign-slug}-{timestamp}/`.
|
|
417
417
|
Legacy no-shell runs touch no DB rows and create no `CampaignOffer`.
|
|
418
418
|
No DB rows touched in legacy no-shell aborts; draft-shell aborts leave the
|
|
419
419
|
non-sendable shell for operator cleanup.
|
|
@@ -22,6 +22,13 @@ Do not put active validation fixtures in this file as exact company-specific
|
|
|
22
22
|
examples. The library should teach transferable winning motions, not leak the
|
|
23
23
|
fixture answer into Phase 84.
|
|
24
24
|
|
|
25
|
+
For line-level runtime inspiration, prefer
|
|
26
|
+
`mcp/sellable/skills/create-campaign-v2/references/gold-standard-runtime-message-pack.md`.
|
|
27
|
+
That file contains the real sellable.dev, Hey Digital, Persona, Galley, and
|
|
28
|
+
Clover examples. Use this file for strategy skeletons and guardrails. If an old
|
|
29
|
+
archive line conflicts with the runtime pack, the runtime pack wins; do not let
|
|
30
|
+
synthetic or retired opener phrasing outrank the real examples.
|
|
31
|
+
|
|
25
32
|
## Example 1: Revvix / Spektion Event-Led Security
|
|
26
33
|
|
|
27
34
|
Use when the brief has:
|
|
@@ -227,21 +234,23 @@ Use when the brief has:
|
|
|
227
234
|
- signal-led topic engagement
|
|
228
235
|
- benefits / rewards / wellness buyers
|
|
229
236
|
- proof-heavy preventive-health positioning
|
|
237
|
+
- a weak engagement signal that should be framed as a low-certainty relevance
|
|
238
|
+
bridge, not buyer intent
|
|
230
239
|
|
|
231
240
|
Template shape:
|
|
232
241
|
|
|
233
242
|
```text
|
|
234
243
|
hey {{first name}},
|
|
235
244
|
|
|
236
|
-
saw you
|
|
245
|
+
saw you in a few conversations around {{topic}}, so hope this is relevant.
|
|
237
246
|
|
|
238
|
-
|
|
247
|
+
if preventive health is anywhere near the benefits plan at {{company}}, Superpower may be worth a look.
|
|
239
248
|
|
|
240
|
-
|
|
249
|
+
it screens for 1,000+ conditions from a single blood draw and surfaces risks before they become claims.
|
|
241
250
|
|
|
242
|
-
basically your team gets to see what's coming instead of
|
|
251
|
+
basically your team gets to see what's coming instead of only reacting to it.
|
|
243
252
|
|
|
244
|
-
|
|
253
|
+
should i send over the short version?
|
|
245
254
|
```
|
|
246
255
|
|
|
247
256
|
Alternative proof-led variant:
|
|
@@ -249,24 +258,25 @@ Alternative proof-led variant:
|
|
|
249
258
|
```text
|
|
250
259
|
hey {{first name}},
|
|
251
260
|
|
|
252
|
-
saw you
|
|
261
|
+
saw you in a few conversations around {{topic}}, so hope this is relevant.
|
|
253
262
|
|
|
254
263
|
most annual physicals test 15 biomarkers max.
|
|
255
264
|
|
|
256
|
-
|
|
265
|
+
Superpower looks at 100+ biomarkers and screens for 1,000+ conditions from one draw.
|
|
257
266
|
|
|
258
|
-
teams like Lyft and Notion are already exploring this
|
|
267
|
+
teams like Lyft and Notion are already exploring this at $199 a person.
|
|
259
268
|
|
|
260
|
-
if
|
|
269
|
+
if preventive health is nowhere near your lane, ignore me.
|
|
261
270
|
|
|
262
|
-
|
|
271
|
+
should i send over the short version?
|
|
263
272
|
```
|
|
264
273
|
|
|
265
274
|
Why it works:
|
|
266
275
|
|
|
267
|
-
- signal
|
|
276
|
+
- the topic signal is low-certainty and does not imply intent
|
|
277
|
+
- `hope this is relevant` is safer than `figured this might actually be relevant`
|
|
268
278
|
- all lowercase matters
|
|
269
|
-
- the CTA stays tiny
|
|
279
|
+
- the CTA stays tiny but specific enough to picture
|
|
270
280
|
- this should not get polished into generic benefits copy
|
|
271
281
|
- the proof sentence does real work; it is not optional filler
|
|
272
282
|
|
|
@@ -286,9 +296,7 @@ Template shape:
|
|
|
286
296
|
```text
|
|
287
297
|
hey {{first_name}},
|
|
288
298
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
figured this might actually be relevant.
|
|
299
|
+
saw you in a few conversations around {{signal_topic}}, so hopefully relevant.
|
|
292
300
|
|
|
293
301
|
[product] does [simple one-line mechanism].
|
|
294
302
|
|
|
@@ -304,7 +312,7 @@ p.s. [short proof line]
|
|
|
304
312
|
Why it works:
|
|
305
313
|
|
|
306
314
|
- the signal is first and easy to understand
|
|
307
|
-
- the "
|
|
315
|
+
- the "hopefully relevant" line feels honest without
|
|
308
316
|
over-explaining
|
|
309
317
|
- the product is framed simply
|
|
310
318
|
- "two options" makes the CTA easy to scan
|
|
@@ -339,12 +347,18 @@ Use these patterns to avoid generic asks like:
|
|
|
339
347
|
- worth a conversation?
|
|
340
348
|
- open to a call?
|
|
341
349
|
- worth a look?
|
|
350
|
+
- open to compare notes?
|
|
342
351
|
|
|
343
352
|
Prefer a binary or useful CTA when the brief supports it.
|
|
344
353
|
|
|
345
354
|
CTA decision rule:
|
|
346
355
|
|
|
347
356
|
- generate single-ask and A/B options before deciding
|
|
357
|
+
- preserve a brief-approved CTA intent when it can be made concrete, but avoid
|
|
358
|
+
the phrase `compare notes` in buyer-facing copy. If the brief uses that
|
|
359
|
+
shorthand, translate it into a concrete quick-call or working-session CTA,
|
|
360
|
+
e.g. `Open to a quick call on how your team might turn LinkedIn content into
|
|
361
|
+
pipeline?`
|
|
348
362
|
- use A/B only when both choices are genuinely useful and supported
|
|
349
363
|
- for unfamiliar categories, the CTA should name the buyer-specific preview in
|
|
350
364
|
one short phrase, not list every screen or workflow
|
|
@@ -164,7 +164,7 @@ Shape:
|
|
|
164
164
|
Prefer:
|
|
165
165
|
|
|
166
166
|
- lowercase or casual casing when the motion supports it
|
|
167
|
-
- an honest line like "
|
|
167
|
+
- an honest line like "hope this is relevant" or "so hopefully relevant"
|
|
168
168
|
- two clean options instead of a long CTA paragraph
|
|
169
169
|
- direct wording over polished marketing language
|
|
170
170
|
|