@sellable/mcp 0.1.431 → 0.1.432

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.
@@ -23,7 +23,7 @@ export const setupEvergreenCampaignsToolDefinitions = [
23
23
  handoffMode: {
24
24
  type: "string",
25
25
  enum: ["create_campaign_goals"],
26
- description: 'plan mode only. When set to "create_campaign_goals", returns concise per-lane `$sellable:create-campaign` goal prompts and required inputs for testing simplified worker handoffs without changing verification behavior.',
26
+ description: 'plan mode only. When set to "create_campaign_goals", returns concise per-lane `$sellable:create-campaign` goal prompts and required inputs for simplified worker handoffs without changing verification behavior.',
27
27
  },
28
28
  yolo: {
29
29
  type: "boolean",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sellable/mcp",
3
- "version": "0.1.431",
3
+ "version": "0.1.432",
4
4
  "type": "module",
5
5
  "description": "Sellable MCP server for Claude Code and Codex campaign workflows",
6
6
  "main": "dist/index.js",
@@ -56,10 +56,10 @@ this felt too on the nose to ignore"` shapes only when the source was an
56
56
  explicit lead-magnet comment, reply, or opt-in.
57
57
 
58
58
  Shared evergreen exception: for Shared Signal Discovery and other shared
59
- evergreen lanes, the weak-signal permissioned bridge above is still a tell.
60
- Reject `hope this is relevant`, `might be interested`, and `saw you in a few
61
- conversations` as openers; require a concrete signal/problem bridge or omit the
62
- source line.
59
+ evergreen lanes, `hope this is relevant` is allowed when it stays topic-level
60
+ and does not pretend engagement. Reject `might be interested` and `saw you in a
61
+ few conversations` as openers; require a concrete signal/problem bridge or omit
62
+ the source line.
63
63
 
64
64
  **Severity:** REJECT
65
65
 
@@ -203,7 +203,7 @@ Why it works:
203
203
  **Proof ranks used:** rank 1 (mechanism - 1,000+ conditions from one blood
204
204
  draw), rank 3 (risk before claims).
205
205
 
206
- Do not use the Superpower weak-signal hedge pattern for Shared Evergreen Signal Discovery. Shared evergreen lanes are reused across multiple senders and must not open with `hope this is relevant`, `might be interested`, or `saw you in a few conversations`. Use the safe pattern below instead.
206
+ Do not use the Superpower weak-signal hedge pattern for Shared Evergreen Signal Discovery when it opens with `might be interested` or `saw you in a few conversations`. `Hope this is relevant` is allowed when it stays topic-level and does not pretend engagement. Use the safe pattern below when a concrete signal/problem bridge is stronger.
207
207
 
208
208
  ### Shared Evergreen Signal Discovery Safe Pattern
209
209
 
@@ -222,7 +222,7 @@ Curious if LinkedIn outbound is a channel you're trying to make more reliable th
222
222
 
223
223
  Why it works:
224
224
 
225
- - no low-confidence relevance hedge
225
+ - no blocked low-confidence relevance hedge
226
226
  - no `I'm building` or founder-only first person
227
227
  - no internal workflow vocabulary such as Codex, MCP, agent workflows, workflow
228
228
  table, lead source, or signal discovery
@@ -74,7 +74,7 @@ Revise or reject the sample when any of these happen.
74
74
  - **actions are implied, not stated** — e.g. "runs that chain as AI agents" when a clearer version would name the specific actions (verb + object, one per line)
75
75
  - **category-level opener used when a per-lead signal exists** — if `lead-sample.json` carries any per-lead signal (post, hire, visible tool, topic engagement), the opener must reference it. Category-level openers of shape `"Most [category] teams still do X by hand"` are only acceptable when zero per-lead signal is in the sample. When a category-level opener is used as fallback, Findings must flag it explicitly
76
76
  - **mind-reading from engagement signals** — a topic engagement, post, public activity, role, company, or hiring trigger does not prove buyer intent. Reject phrases like `"AI-GTM stack is clearly on your mind"`, `"you're clearly focused on..."`, `"obviously relevant"`, or `"already thinking about..."` unless that exact priority is explicitly present in `lead-sample.json`. Translate to low-certainty buyer context or omit the signal from copy.
77
- - **source-y signal narration** — reject `"saw you on..."`, `"saw you engaging with..."`, `"you commented on..."`, `"your LinkedIn activity..."`, `"you might not remember the thread..."`, `"found you through [source] and your role looked close..."`, or any line that makes the recipient feel watched unless the chosen archived motion is intentionally self-aware about the signal. For sender-owned LinkedIn post sources, a light first-person acknowledgment is allowed when row data proves a reaction/comment: `"appreciate you showing some love on my post about [topic]"` or `"thanks for showing support on my [topic] post"`. Do not name a comment unless comment text is present. Follow the acknowledgment with a soft relevance bridge before broad pain/product copy, e.g. `"figured this might be relevant if LinkedIn is becoming more of a GTM channel for [company]"`. For third-party LinkedIn-post-sourced campaigns, a topic-level bridge is allowed when it explains why the note exists and stays apologetically uncertain: `"saw you in a few conversations about [topic], so may be off, but this seemed relevant."`, `"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."` Shared evergreen signal exception: these hedges are blocked for Shared Signal Discovery and other shared evergreen lanes; use a concrete signal/problem bridge or omit the source line. Reserve `"raise your hand"` language for explicit lead-magnet comments, replies, or opt-ins. Translate the signal into natural buyer context or omit it.
77
+ - **source-y signal narration** — reject `"saw you on..."`, `"saw you engaging with..."`, `"you commented on..."`, `"your LinkedIn activity..."`, `"you might not remember the thread..."`, `"found you through [source] and your role looked close..."`, or any line that makes the recipient feel watched unless the chosen archived motion is intentionally self-aware about the signal. For sender-owned LinkedIn post sources, a light first-person acknowledgment is allowed when row data proves a reaction/comment: `"appreciate you showing some love on my post about [topic]"` or `"thanks for showing support on my [topic] post"`. Do not name a comment unless comment text is present. Follow the acknowledgment with a soft relevance bridge before broad pain/product copy, e.g. `"figured this might be relevant if LinkedIn is becoming more of a GTM channel for [company]"`. For third-party LinkedIn-post-sourced campaigns, a topic-level bridge is allowed when it explains why the note exists and stays apologetically uncertain: `"saw you in a few conversations about [topic], so may be off, but this seemed relevant."`, `"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."` Shared evergreen signal exception: `hope this is relevant` is allowed when it stays topic-level and avoids false warm engagement, but `might be interested` and `saw you in a few conversations` are blocked for Shared Signal Discovery and other shared evergreen lanes; use a concrete signal/problem bridge or omit the source line. Reserve `"raise your hand"` language for explicit lead-magnet comments, replies, or opt-ins. Translate the signal into natural buyer context or omit it.
78
78
  - **sender-owned source rendered as third-party** — hard fail when the source post is sender-owned and the draft says `"found you in a thread"`, `"saw you in a thread"`, `"saw you in conversations"`, or `"saw you in a few conversations"` as if the post were third-party. For sender-owned sources, the copy must either use a light first-person acknowledgment plus a soft relevance bridge, or omit the source line. If multiple senders may send the campaign, or the final sender/source-owner match is ambiguous, do not assume a specific `my post` voice or name a specific sender; omit the sender-owned source line until row-level sender ownership is proven. Neutral low-certainty thread/source language is only for truly third-party sources.
79
79
  - **fake line-to-line continuity** — reject line stacks where the source acknowledgment, relevance bridge, product line, and CTA do not actually build on each other. Each line must make the next line feel earned. If two adjacent lines could be swapped, deleted, or joined with `"anyway"` without changing the meaning, the transition is fake. In sender-owned post campaigns, the chain should be: support on my post -> why this topic may matter for the company -> what the product/problem does about that same topic -> low-friction next step.
80
80
  - **assumptive title-fit opener** — reject `"Your [role] role at [company] looked close to this problem"` or `"looked close to this outbound campaign problem"`. This asserts fit from title/company. Keep the apologetic uncertainty instead: `"may be off, but if [workflow] is relevant to what you're working on..."`.
@@ -43,7 +43,8 @@ In automation or `--yolo` customer-visible setup, use this path before the
43
43
  long-form contract below:
44
44
 
45
45
  1. Resolve the active workspace and explicit sender scopes, then call
46
- `setup_evergreen_campaigns({ mode:"plan", yolo:true, postEngagerSenderIds,
46
+ `setup_evergreen_campaigns({ mode:"plan", yolo:true,
47
+ handoffMode:"create_campaign_goals", postEngagerSenderIds,
47
48
  sharedSenderIds })`. If the user did not name senders but
48
49
  `get_campaign_waterfall` returns an active managed evergreen/prod waterfall
49
50
  for the workspace, derive exact sender scopes from the waterfall `senderRefs`
@@ -60,12 +61,23 @@ long-form contract below:
60
61
  If shell execution is unavailable and no visible/durable thread surface is
61
62
  callable, return `blocked: missing_visible_or_durable_lane_worker_runtime`
62
63
  before mutation.
63
- 4. Write one compact prompt file per selected lane packet, create the receipt
64
- directory, and launch all lane workers in parallel with the literal Codex CLI
65
- worker command shape below. The parent does not create campaign shells.
64
+ 4. Write one compact prompt file per selected lane using the matching
65
+ `createCampaignGoals[].goalPrompt`, plus only the receipt path and canonical
66
+ receipt requirement. Do not paste the full evergreen skill, lane packet,
67
+ receipt schema, repair history, or verifier checklist into the worker prompt.
68
+ The worker goal is simple: run `$sellable:create-campaign` normally for that
69
+ campaign goal, use the evergreen-selected provider/source only as internal
70
+ sourcing metadata, and write the receipt. The parent does not create campaign
71
+ shells.
66
72
  5. Collect fresh durable receipts, verify with the original planRevision and
67
73
  selectedActionIds, then run the idempotency plan and show sample messages.
68
74
 
75
+ Critical separation: evergreen owns lane/source selection; `$sellable:create-campaign`
76
+ owns the customer-visible campaign brief and message strategy. Provider names
77
+ such as Signal Discovery, lane keys, source lists, receipt fields, workflow
78
+ mechanics, repair notes, hard-block checklists, and approved-message scaffolding
79
+ must never be pasted into `campaignBrief` or generated customer-facing messages.
80
+
69
81
  Do not keep reasoning, re-reading prompts, or restating this workflow instead of
70
82
  dispatching workers. If the first worker cannot be launched after at most one
71
83
  short planning pass, return `blocked: worker_dispatch_deadline_exceeded` before
@@ -1220,7 +1232,7 @@ Message, and verify current-revision sample messages before final completion.
1220
1232
  Short form: Do not pass the warm template into Shared Signal Discovery or Shared Cold Fallback.
1221
1233
  Short form: Shared lanes must reject generic product-summary samples.
1222
1234
  Short form: Shared lanes must reject three nearly identical samples.
1223
- Short form: Shared lanes must reject low-confidence relevance hedges.
1235
+ Short form: Shared lanes must reject low-confidence relevance hedges except "hope this is relevant".
1224
1236
  Short form: Shared lanes must reject internal workflow vocabulary.
1225
1237
  Short form: revise or rerun the packaged create-campaign/generate-messages path.
1226
1238
  - **Post Engagers** first-message style: short, casual, references the
@@ -1259,9 +1271,11 @@ Message, and verify current-revision sample messages before final completion.
1259
1271
  product summaries, or repeated structure are bad. If the first generated
1260
1272
  batch violates these rules, rerun, but record that as a repaired UAT path
1261
1273
  rather than the desired zero-shot path.
1262
- Do not use low-confidence relevance hedges such as "hope this is
1263
- relevant" in Shared Signal Discovery samples. Translate source/tool terms
1264
- into prospect-facing business language; do not put internal workflow
1274
+ Do not use low-confidence relevance hedges such as "might be interested"
1275
+ or "saw you in a few conversations" in Shared Signal Discovery samples.
1276
+ "Hope this is relevant" is allowed when it stays topic-level and does not
1277
+ pretend engagement. Translate source/tool terms into prospect-facing
1278
+ business language; do not put internal workflow
1265
1279
  vocabulary such as "Codex-style workflow", "MCP", "agent workflows",
1266
1280
  "Claude Code", or "Claude-style agent workflows" in customer-facing
1267
1281
  message one. Also avoid generic product-process nouns such as "dashboard",
@@ -1273,7 +1287,7 @@ Message, and verify current-revision sample messages before final completion.
1273
1287
  Short form: Shared Signal Discovery uses no self-intro such as "I'm building Sellable".
1274
1288
  Short form: Shared Signal Discovery uses no self-intro such as "We're building Sellable".
1275
1289
  Short form: Shared Signal Discovery uses no "I've put together".
1276
- Short form: no low-confidence relevance hedge such as "hope this is relevant".
1290
+ Short form: no low-confidence relevance hedge such as "might be interested" or "saw you in a few conversations"; "hope this is relevant" is allowed.
1277
1291
  Short form: no internal workflow vocabulary such as "Codex-style workflow", "MCP", "agent workflows", "Claude Code", or "Claude-style agent workflows".
1278
1292
  - **Shared Cold Fallback** first-message style: cold, direct, and cohesive.
1279
1293
  It must not pretend there was engagement, must not say "saw you pop up",
@@ -1289,11 +1303,13 @@ Message, and verify current-revision sample messages before final completion.
1289
1303
  Sellable/Codex/Claude-Code feature summary
1290
1304
  across prospects. This is a single-message cold path unless the approved
1291
1305
  create-campaign message workflow proves a better delivery format.
1292
- Do not open with "hope this is relevant" or a similar low-confidence
1293
- relevance hedge. Do not use a repeated product-definition paragraph such
1294
- as "Sellable is a GTM system" across samples; every reviewed cold sample
1295
- should be specific enough to the role, company, or problem that the three
1296
- sample messages do not share the same body skeleton.
1306
+ "Hope this is relevant" is allowed when it does not pretend engagement and
1307
+ immediately ties to a concrete buyer problem. Do not open with "might be
1308
+ interested" or "saw you in a few conversations". Do not use a repeated
1309
+ product-definition paragraph such as "Sellable is a GTM system" across
1310
+ samples; every reviewed cold sample should be specific enough to the role,
1311
+ company, or problem that the three sample messages do not share the same
1312
+ body skeleton.
1297
1313
  Do not use mechanical Sellable process language such as "campaign idea into
1298
1314
  prospects, filters, messages, and sequence setup", "sequence-prospects",
1299
1315
  "dashboard overhead", "campaign map", "send-ready copy", or "reviewed
@@ -1310,7 +1326,7 @@ Message, and verify current-revision sample messages before final completion.
1310
1326
  Short form: Shared Cold Fallback uses no "I've put together".
1311
1327
  Short form: Shared Cold Fallback uses no opt-out shrug such as "If this isn't relevant, ignore me".
1312
1328
  Short form: Shared Cold Fallback uses no product-stack dump.
1313
- Short form: no low-confidence relevance hedge such as "hope this is relevant".
1329
+ Short form: "hope this is relevant" is allowed; "might be interested" and "saw you in a few conversations" are not.
1314
1330
  Short form: no repeated product-definition paragraph such as "Sellable is a GTM system".
1315
1331
  - Customer-visible evergreen lanes must enable ICP filtering before Message
1316
1332
  Drafting. This applies to Post Engagers, Shared Signal Discovery, and
@@ -1399,12 +1415,12 @@ Message, and verify current-revision sample messages before final completion.
1399
1415
  or a product-stack dump that repeats the same
1400
1416
  Sellable/Codex/Claude-Code feature summary across prospects. For all
1401
1417
  shared lanes, reject generic product-summary samples, repeated
1402
- near-identical samples, low-confidence relevance hedges such as "hope this
1403
- is relevant", internal workflow vocabulary, any sample with non-empty
1404
- `issues`, and any preserved Post Engagers opener; revise or rerun the packaged
1405
- create-campaign/generate-messages path before reporting completion. Do not
1406
- approve or final-report samples with `verdict:"passed"` and non-empty
1407
- `issues`.
1418
+ near-identical samples, low-confidence relevance hedges such as "might be
1419
+ interested" or "saw you in a few conversations", internal workflow
1420
+ vocabulary, any sample with non-empty `issues`, and any preserved Post
1421
+ Engagers opener; revise or rerun the packaged create-campaign/generate-messages
1422
+ path before reporting completion. Do not approve or final-report samples
1423
+ with `verdict:"passed"` and non-empty `issues`.
1408
1424
  - The first review batch exists and at least 3 review rows have generated
1409
1425
  messages from the approved brief. If fewer than 3 usable rows exist, report
1410
1426
  the actual count and why.
@@ -269,7 +269,7 @@ must be safer than the legacy weak-signal examples. These lanes are reused by
269
269
  multiple senders, so the first line cannot sound like a scraped-activity excuse
270
270
  or a founder self-intro.
271
271
 
272
- - `hope this is relevant`, `might be interested`, and `saw you in a few conversations` are blocked openers for shared evergreen lanes.
272
+ - `might be interested` and `saw you in a few conversations` are blocked openers for shared evergreen lanes. `hope this is relevant` is allowed when it stays topic-level and does not pretend engagement.
273
273
  - do not write first-person singular founder language such as `I'm building`,
274
274
  `I've mapped`, `my company`, or `my team` unless exactly one sender can
275
275
  credibly say it and the lane is not shared.
@@ -280,8 +280,8 @@ or a founder self-intro.
280
280
  `source`, `sequence`, `send-ready copy`, or `reviewed prospect list` as
281
281
  buyer-facing explanation in shared evergreen samples unless the buyer's own
282
282
  company/product category uses that exact word and the line still sounds human.
283
- - Write a concrete signal/problem bridge instead of a relevance hedge. Good
284
- shapes are `the AI-assisted GTM conversations keep coming back to [buyer
283
+ - Write a concrete signal/problem bridge instead of a rejected relevance hedge.
284
+ Good shapes are `the AI-assisted GTM conversations keep coming back to [buyer
285
285
  problem]`, `teams trying to turn LinkedIn signal into pipeline usually hit
286
286
  [problem]`, or `when [observable business moment] is live, [buyer workflow]
287
287
  gets harder to run consistently`.
@@ -290,10 +290,11 @@ or a founder self-intro.
290
290
  - Shared evergreen lanes must pass this gate before `confirmed`, before saving a
291
291
  reusable template, and before any route-proof approval.
292
292
 
293
- Short form: shared evergreen copy cannot use `hope this is relevant`.
293
+ Short form: shared evergreen copy may use `hope this is relevant` when it avoids false engagement claims.
294
294
  Short form: shared evergreen copy cannot use `might be interested`.
295
+ Short form: shared evergreen copy cannot use `saw you in a few conversations`.
295
296
  Short form: shared evergreen copy cannot use `I'm building`.
296
- Short form: write a concrete signal/problem bridge instead of a relevance hedge.
297
+ Short form: write a concrete signal/problem bridge instead of a rejected relevance hedge.
297
298
 
298
299
  ### Rich Personalization Contract
299
300
 
@@ -313,12 +314,13 @@ conditional good/bad fill reference.
313
314
  `[PERSONALIZATION_LINE — Intent: write one short sentence that anchors the
314
315
  note to why this might matter now. DO: connect one observable role/company/
315
316
  activity signal to the buyer problem or offer with a permissioned bridge. For
316
- shared evergreen lanes, do not use `hope this is relevant`, `might be
317
- interested`, or `saw you in a few conversations`; use a concrete
318
- signal/problem bridge instead. For non-evergreen weak-signal campaigns only,
319
- legacy low-certainty language like "hope this is relevant if..." or "so may be
320
- off, but this seemed relevant" can be considered when the source is otherwise
321
- awkward. DON'T: recap their resume, list companies, compliment their
317
+ shared evergreen lanes, do not use `might be interested` or `saw you in a few
318
+ conversations`; `hope this is relevant` is allowed when it stays topic-level and
319
+ avoids false engagement claims. Use a concrete signal/problem bridge instead of
320
+ rejected relevance hedges. Low-certainty language like "hope this is relevant
321
+ if..." or "so may be off, but this seemed relevant" can be considered when the
322
+ source is otherwise awkward. DON'T: recap their resume, list companies,
323
+ compliment their
322
324
  background, name a product their company sells, use source-citation phrasing, or
323
325
  use generic nouns like "your work".
324
326
  FALLBACK: if unsupported, omit the entire line.]`
@@ -479,7 +481,7 @@ artifact.**
479
481
 
480
482
  Safer shapes:
481
483
 
482
- - `hope this is relevant if {{signal_topic}} is part of the plan` for non-evergreen weak-signal campaigns only
484
+ - `hope this is relevant if {{signal_topic}} is part of the plan`
483
485
  - `saw you might be interested in {{signal_topic}}, so hope this is relevant` for non-evergreen weak-signal campaigns only
484
486
  - `saw you in a few conversations around {{signal_topic}}, so hope this is relevant` for non-evergreen weak-signal campaigns only
485
487
  - `saw you in a few conversations about {{signal_topic}}, so may be off, but this seemed relevant`
@@ -550,17 +552,20 @@ artifact.**
550
552
  Signal Discovery. `saw you commented on {{post_context}}` and `your LinkedIn
551
553
  activity around...` are not acceptable. Reserve `raise your hand` phrasing
552
554
  for explicit lead-magnet comments, replies, or opt-ins. For ordinary shared
553
- evergreen thread discovery, either translate the topic into a concrete
554
- buyer/problem bridge or omit the source line.
555
+ evergreen thread discovery, either use `hope this is relevant` without
556
+ source-mechanics narration, translate the topic into a concrete buyer/problem
557
+ bridge, or omit the source line.
555
558
 
556
559
  Keep the apologetic nature, but aim it at uncertainty, not surveillance.
557
560
  Good for non-evergreen weak-signal campaigns: `saw you in a few
558
561
  conversations about outbound, so may be off, but this seemed relevant`, `may
559
562
  be off, but if outbound is relevant to what you're working on...`, or `hope
560
- this is relevant if...`. For shared evergreen lanes, these hedges are not
561
- enough; use a concrete signal/problem bridge or omit the source line. Bad:
562
- `your role at {{company}} looked close...`, because it asserts fit from a
563
- title and tells the buyer about themselves.
563
+ this is relevant if...`. For shared evergreen lanes, `hope this is relevant`
564
+ is allowed when it stays topic-level and avoids false engagement claims, but
565
+ `might be interested` and `saw you in a few conversations` are not enough;
566
+ use a concrete signal/problem bridge or omit the source line. Bad: `your role
567
+ at {{company}} looked close...`, because it asserts fit from a title and
568
+ tells the buyer about themselves.
564
569
 
565
570
  Block wordier source narration such as `you might not remember the thread,
566
571
  but I found you through a {{signal_topic}} discussion and your
@@ -1558,9 +1563,9 @@ Before `confirmed`, run the selected winner against these gates:
1558
1563
  `hope this is relevant if...`, `saw you might be interested in...`,
1559
1564
  `saw you in a few conversations around...`, `figured this might matter if...`,
1560
1565
  or `if you've ever wanted...`. Exception: for Shared Signal Discovery and
1561
- other shared evergreen lanes, `hope this is relevant`, `might be interested`,
1562
- and `saw you in a few conversations` are blocked; use a concrete
1563
- signal/problem bridge or omit the source line.
1566
+ other shared evergreen lanes, `might be interested` and `saw you in a few
1567
+ conversations` are blocked; `hope this is relevant` is allowed when it stays
1568
+ topic-level and avoids false engagement claims.
1564
1569
  - **Buyer-first opener:** after the greeting, the first substantive line
1565
1570
  should usually enter the buyer's world: a real signal, current-state
1566
1571
  pain, buyer-owned priority, or useful artifact. Sender-origin can come
@@ -1862,9 +1867,10 @@ about`, or `clearly relevant` are BLOCKED. Source-y phrases such as
1862
1867
  in a few conversations around [topic], so hope this is relevant`, `found you
1863
1868
  in a few conversations about [topic], so may be off, but this seemed
1864
1869
  relevant`, `figured this might matter if [workflow] is live at [company]`, or
1865
- a similarly natural line. For shared evergreen lanes, skip the `hope this is
1866
- relevant` / `might be interested` / `saw you in a few conversations` versions
1867
- and use the concrete bridge version. Longer source-recap forms such as `you
1870
+ a similarly natural line. For shared evergreen lanes, skip the `might be
1871
+ interested` / `saw you in a few conversations` versions and use `hope this is
1872
+ relevant` only when it stays topic-level and avoids false engagement claims,
1873
+ or use the concrete bridge version. Longer source-recap forms such as `you
1868
1874
  might not remember the thread,
1869
1875
  but I found you through a [topic] discussion...` are BLOCKED; they narrate
1870
1876
  the scrape path instead of creating buyer relevance.
@@ -2010,7 +2016,7 @@ matters to the buyer, why this might be relevant, or the operator-reality that
2010
2016
  led to it. Acceptable openers:
2011
2017
 
2012
2018
  - `Hey {{first_name}}, [one plain sentence about what we built].`
2013
- - `Hey {{first_name}}, hope this is relevant if [buyer context] is still on your plate.` Not for shared evergreen lanes.
2019
+ - `Hey {{first_name}}, hope this is relevant if [buyer context] is still on your plate.`
2014
2020
  - `Hey {{first_name}}, saw you might be interested in [topic], so hope this is relevant.` Not for shared evergreen lanes.
2015
2021
  - `Hey {{first_name}}, saw you in a few conversations around [topic], so hope this is relevant.` Not for shared evergreen lanes.
2016
2022
  - `Hey {{first_name}}, found you in a thread about [topic], so may be off, but this seemed relevant.`
@@ -2273,7 +2279,7 @@ Rules:
2273
2279
  - if `lead-sample.json` carries **any** per-lead signal for this lead — a recent post, a recent hire, a visible tool in the headline, a topic engagement, a public initiative — the **message must reference it specifically**. Category-level copy is rejected.
2274
2280
  - default placement is **Block 3**, not Block 1. Keep Block 1 substance-first unless the archived motion clearly earns a signal-led opener without falling into source-citation / talk-at phrasing.
2275
2281
  - acceptable signal use by default:
2276
- - `"Hope this is relevant if [topic] is part of the plan."` Non-evergreen weak-signal only; blocked for shared evergreen lanes.
2282
+ - `"Hope this is relevant if [topic] is part of the plan."`
2277
2283
  - `"Saw you might be interested in [topic], so hope this is relevant."` Non-evergreen weak-signal only; blocked for shared evergreen lanes.
2278
2284
  - `"Saw you in a few conversations around [topic], so hope this is relevant."` Non-evergreen weak-signal only; blocked for shared evergreen lanes.
2279
2285
  - `"Saw you in a few conversations about [topic], so may be off, but this seemed relevant."`
@@ -2293,8 +2299,11 @@ Rules:
2293
2299
  - `"Saw you raise your hand for [topic], so figured this was worth sending."`
2294
2300
  - `"Figured this was worth sending."`
2295
2301
  - 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.
2296
- - For Shared Evergreen Signal Discovery, do not use the weak signal-led opener
2297
- shapes above. Translate the source into a concrete problem bridge, e.g.
2302
+ - For Shared Evergreen Signal Discovery, do not use the `might be interested` or
2303
+ `saw you in a few conversations` weak signal-led opener shapes above. `Hope
2304
+ this is relevant` is allowed when it stays topic-level and avoids false
2305
+ engagement claims. Translate the source into a concrete problem bridge when
2306
+ that is stronger, e.g.
2298
2307
  `"The AI-assisted GTM conversations keep coming back to one problem: turning
2299
2308
  good LinkedIn signal into review-ready pipeline without another dashboard."`
2300
2309
  Then connect the product in buyer language.
@@ -2306,9 +2315,11 @@ Rules:
2306
2315
  this is relevant`, `saw you in a few conversations around [topic], so hope this
2307
2316
  is relevant`, `saw you in a few conversations about [topic], so may be off,
2308
2317
  but this seemed relevant`, or `found you in a thread about [topic], so may be
2309
- off, but this seemed relevant`. For shared evergreen lanes, those weak signal
2310
- bridges are blocked; use a concrete signal/problem bridge instead. Use the
2311
- self-aware raise-hand shapes only when
2318
+ off, but this seemed relevant`. For shared evergreen lanes, `might be
2319
+ interested` and `saw you in a few conversations` weak signal bridges are
2320
+ blocked; `hope this is relevant` is allowed when it stays topic-level and avoids
2321
+ false engagement claims. Use a concrete signal/problem bridge when it is
2322
+ stronger. Use the self-aware raise-hand shapes only when
2312
2323
  the source was an explicit lead-magnet comment, reply, or opt-in: `saw you raise
2313
2324
  your hand for [topic], so figured this was (hopefully) worth sending` or `saw you
2314
2325
  raise your hand for [topic] (creepy to reach out based on that, i know) - but