@sellable/mcp 0.1.0

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.
Files changed (200) hide show
  1. package/.claude-plugin/plugin.json +12 -0
  2. package/.mcp.json +9 -0
  3. package/README.md +355 -0
  4. package/dist/api.d.ts +21 -0
  5. package/dist/api.js +73 -0
  6. package/dist/auth.d.ts +60 -0
  7. package/dist/auth.js +246 -0
  8. package/dist/engage-memory.d.ts +63 -0
  9. package/dist/engage-memory.js +354 -0
  10. package/dist/index-dev.d.ts +2 -0
  11. package/dist/index-dev.js +17 -0
  12. package/dist/index.d.ts +7 -0
  13. package/dist/index.js +8 -0
  14. package/dist/server.d.ts +1 -0
  15. package/dist/server.js +499 -0
  16. package/dist/skills.d.ts +11 -0
  17. package/dist/skills.js +97 -0
  18. package/dist/tools/auth.d.ts +30 -0
  19. package/dist/tools/auth.js +124 -0
  20. package/dist/tools/blueprint-commit.d.ts +174 -0
  21. package/dist/tools/blueprint-commit.js +286 -0
  22. package/dist/tools/bootstrap.d.ts +64 -0
  23. package/dist/tools/bootstrap.js +246 -0
  24. package/dist/tools/campaigns.d.ts +589 -0
  25. package/dist/tools/campaigns.js +892 -0
  26. package/dist/tools/cells.d.ts +58 -0
  27. package/dist/tools/cells.js +48 -0
  28. package/dist/tools/context.d.ts +88 -0
  29. package/dist/tools/context.js +271 -0
  30. package/dist/tools/csv-domains.d.ts +73 -0
  31. package/dist/tools/csv-domains.js +464 -0
  32. package/dist/tools/csv-linkedin.d.ts +102 -0
  33. package/dist/tools/csv-linkedin.js +712 -0
  34. package/dist/tools/direct-campaigns.d.ts +240 -0
  35. package/dist/tools/direct-campaigns.js +250 -0
  36. package/dist/tools/engage-bootstrap.d.ts +94 -0
  37. package/dist/tools/engage-bootstrap.js +205 -0
  38. package/dist/tools/engage-discovery.d.ts +78 -0
  39. package/dist/tools/engage-discovery.js +150 -0
  40. package/dist/tools/engage-memory.d.ts +181 -0
  41. package/dist/tools/engage-memory.js +143 -0
  42. package/dist/tools/engage-state.d.ts +72 -0
  43. package/dist/tools/engage-state.js +62 -0
  44. package/dist/tools/enrichment.d.ts +167 -0
  45. package/dist/tools/enrichment.js +174 -0
  46. package/dist/tools/flow-preflight.d.ts +68 -0
  47. package/dist/tools/flow-preflight.js +138 -0
  48. package/dist/tools/framework.d.ts +44 -0
  49. package/dist/tools/framework.js +153 -0
  50. package/dist/tools/interaction-mode.d.ts +27 -0
  51. package/dist/tools/interaction-mode.js +102 -0
  52. package/dist/tools/leads.d.ts +2417 -0
  53. package/dist/tools/leads.js +2307 -0
  54. package/dist/tools/linkedin.d.ts +210 -0
  55. package/dist/tools/linkedin.js +229 -0
  56. package/dist/tools/navigation.d.ts +91 -0
  57. package/dist/tools/navigation.js +381 -0
  58. package/dist/tools/one-off.d.ts +229 -0
  59. package/dist/tools/one-off.js +273 -0
  60. package/dist/tools/processing.d.ts +70 -0
  61. package/dist/tools/processing.js +56 -0
  62. package/dist/tools/prompts.d.ts +211 -0
  63. package/dist/tools/prompts.js +210 -0
  64. package/dist/tools/provider-preflight.d.ts +21 -0
  65. package/dist/tools/provider-preflight.js +59 -0
  66. package/dist/tools/readiness.d.ts +261 -0
  67. package/dist/tools/readiness.js +510 -0
  68. package/dist/tools/rows.d.ts +126 -0
  69. package/dist/tools/rows.js +105 -0
  70. package/dist/tools/rubrics.d.ts +497 -0
  71. package/dist/tools/rubrics.js +681 -0
  72. package/dist/tools/senders.d.ts +44 -0
  73. package/dist/tools/senders.js +69 -0
  74. package/dist/tools/sequencer.d.ts +127 -0
  75. package/dist/tools/sequencer.js +194 -0
  76. package/dist/tools/tables.d.ts +35 -0
  77. package/dist/tools/tables.js +36 -0
  78. package/dist/tools/verify-row.d.ts +36 -0
  79. package/dist/tools/verify-row.js +38 -0
  80. package/dist/tools/workspaces.d.ts +140 -0
  81. package/dist/tools/workspaces.js +139 -0
  82. package/dist/utils/workspace-root.d.ts +1 -0
  83. package/dist/utils/workspace-root.js +39 -0
  84. package/package.json +46 -0
  85. package/skills/building-gtm-tables/SKILL.md +216 -0
  86. package/skills/building-gtm-tables/core/auto-execute.yaml +19 -0
  87. package/skills/building-gtm-tables/core/blueprint-schema.json +72 -0
  88. package/skills/building-gtm-tables/references/brief-to-blueprint.md +334 -0
  89. package/skills/building-gtm-tables/references/column-type-catalog.md +318 -0
  90. package/skills/building-gtm-tables/references/common-blueprints.fixtures.ts +199 -0
  91. package/skills/building-gtm-tables/references/common-blueprints.md +44 -0
  92. package/skills/building-gtm-tables/references/failure-taxonomy.md +197 -0
  93. package/skills/building-gtm-tables/references/uat-seed-prompts.md +37 -0
  94. package/skills/building-gtm-tables/references/verify-loop.md +74 -0
  95. package/skills/campaign-messages/SKILL.md +173 -0
  96. package/skills/campaign-messages/flow.v1.json +75 -0
  97. package/skills/craft-message/SKILL.md +401 -0
  98. package/skills/create-campaign/ARCHITECTURE.md +232 -0
  99. package/skills/create-campaign/DISCUSS.md +296 -0
  100. package/skills/create-campaign/FLOW_ASCII.md +240 -0
  101. package/skills/create-campaign/HOST-PARITY-CHECKLIST.md +49 -0
  102. package/skills/create-campaign/README.md +142 -0
  103. package/skills/create-campaign/SKILL.md +286 -0
  104. package/skills/create-campaign/context/README.md +67 -0
  105. package/skills/create-campaign/context/_TEMPLATE.md +12 -0
  106. package/skills/create-campaign/context/context.md +35 -0
  107. package/skills/create-campaign/context/learnings.md +16 -0
  108. package/skills/create-campaign/context/registry.json +19 -0
  109. package/skills/create-campaign/core/flow.v1.json +217 -0
  110. package/skills/create-campaign/core/policy.md +191 -0
  111. package/skills/create-campaign/core/providers/apollo.json +35 -0
  112. package/skills/create-campaign/core/providers/prospeo.json +34 -0
  113. package/skills/create-campaign/core/providers/registry.json +31 -0
  114. package/skills/create-campaign/core/providers/sales-nav.json +37 -0
  115. package/skills/create-campaign/core/providers/signal-discovery.json +42 -0
  116. package/skills/create-campaign/references/brief-template.md +64 -0
  117. package/skills/create-campaign/references/campaign-quality.md +84 -0
  118. package/skills/create-campaign/references/copy-calibration-examples.md +120 -0
  119. package/skills/create-campaign/references/offer-patterns.md +108 -0
  120. package/skills/create-campaign/references/provider-selection-strategy.md +212 -0
  121. package/skills/create-campaign/references/question-examples.md +167 -0
  122. package/skills/create-campaign/references/token-fill-examples.md +81 -0
  123. package/skills/create-campaign-brief/ARCHITECTURE.md +72 -0
  124. package/skills/create-campaign-brief/DISCUSS.md +64 -0
  125. package/skills/create-campaign-brief/README.md +176 -0
  126. package/skills/create-campaign-brief/SKILL.md +537 -0
  127. package/skills/create-campaign-brief/references/brief-synthesis-rules.md +100 -0
  128. package/skills/create-campaign-brief/references/brief-template.md +220 -0
  129. package/skills/create-campaign-brief/references/campaign-idea-options.md +30 -0
  130. package/skills/create-campaign-brief/references/copy-appendix-template.md +62 -0
  131. package/skills/create-campaign-brief/references/draft-lifecycle.md +23 -0
  132. package/skills/create-campaign-brief/references/examples/MANIFEST.json +89 -0
  133. package/skills/create-campaign-brief/references/examples/briefs/clover.md +223 -0
  134. package/skills/create-campaign-brief/references/examples/briefs/galley.md +222 -0
  135. package/skills/create-campaign-brief/references/examples/briefs/gelee.md +220 -0
  136. package/skills/create-campaign-brief/references/examples/briefs/hey-digital.md +234 -0
  137. package/skills/create-campaign-brief/references/examples/briefs/persona.md +231 -0
  138. package/skills/create-campaign-brief/references/examples/briefs/revvix.md +220 -0
  139. package/skills/create-campaign-brief/references/examples/briefs/sellable-dev.md +220 -0
  140. package/skills/create-campaign-brief/references/examples/briefs/superposition.md +233 -0
  141. package/skills/create-campaign-brief/references/examples/briefs/superpower.md +219 -0
  142. package/skills/create-campaign-brief/references/examples/briefs/westpark-villas.md +220 -0
  143. package/skills/create-campaign-brief/references/icp-lock-question-bank.md +43 -0
  144. package/skills/create-campaign-brief/references/messaging-inputs.md +58 -0
  145. package/skills/create-campaign-brief/references/output-acceptance-rubric.md +62 -0
  146. package/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md +248 -0
  147. package/skills/create-campaign-brief/references/phase75-canonical-brief-template.md +319 -0
  148. package/skills/create-campaign-brief/references/phase75-good-brief-and-messaging-examples.md +445 -0
  149. package/skills/create-campaign-brief/references/quick-research-protocol.md +39 -0
  150. package/skills/create-campaign-brief/references/reference-sheet-protocol.md +60 -0
  151. package/skills/create-campaign-brief/references/zero-shot-iteration-rules.md +66 -0
  152. package/skills/create-campaign-v2/SKILL.md +1619 -0
  153. package/skills/create-campaign-v2/core/auto-execute.README.md +219 -0
  154. package/skills/create-campaign-v2/core/auto-execute.yaml +121 -0
  155. package/skills/create-campaign-v2/core/flow.v2.json +1643 -0
  156. package/skills/create-campaign-v2/core/policy.md +82 -0
  157. package/skills/create-campaign-v2/references/ai-tells.md +253 -0
  158. package/skills/create-campaign-v2/references/approval-gate-framing.md +346 -0
  159. package/skills/create-campaign-v2/references/draft-lifecycle.md +110 -0
  160. package/skills/create-campaign-v2/references/escalation-ladder.md +119 -0
  161. package/skills/create-campaign-v2/references/filter-leads.md +495 -0
  162. package/skills/create-campaign-v2/references/final-handoff-contract.md +176 -0
  163. package/skills/create-campaign-v2/references/gold-standard-message-examples.md +394 -0
  164. package/skills/create-campaign-v2/references/gold-standard-message-patterns.md +314 -0
  165. package/skills/create-campaign-v2/references/gold-standard-message-validation-example.md +212 -0
  166. package/skills/create-campaign-v2/references/lead-validation-preview.md +172 -0
  167. package/skills/create-campaign-v2/references/parallel-critique-protocol.md +368 -0
  168. package/skills/create-campaign-v2/references/sample-validation-loop.md +289 -0
  169. package/skills/create-campaign-v2/references/step-13-import-leads.md +151 -0
  170. package/skills/create-campaign-v2/references/step-15-re-cascade.md +90 -0
  171. package/skills/create-campaign-v2/references/thomas-revision-filters.md +521 -0
  172. package/skills/create-campaign-v2/references/thomas-variant-selection.md +202 -0
  173. package/skills/create-campaign-v2/references/tier-routing-matrix.md +66 -0
  174. package/skills/create-campaign-v2/references/validation-criteria.md +367 -0
  175. package/skills/create-campaign-v2/references/watch-link-handoff.md +106 -0
  176. package/skills/create-campaign-v2-validation/SKILL.md +296 -0
  177. package/skills/create-post/SKILL.md +1308 -0
  178. package/skills/create-rubric/SKILL.md +251 -0
  179. package/skills/engage/SKILL.md +549 -0
  180. package/skills/engage/core/README.md +23 -0
  181. package/skills/engage/core/proven-searches.json +11 -0
  182. package/skills/engage/core/style-guide.template.md +47 -0
  183. package/skills/engage/core/tracked-people.json +10 -0
  184. package/skills/enrich-prospects/SKILL.md +97 -0
  185. package/skills/find-leads/SKILL.md +467 -0
  186. package/skills/generate-messages/SKILL.md +2361 -0
  187. package/skills/interview/SKILL.md +132 -0
  188. package/skills/interview/core/ENGAGE_STYLE_GUIDE.template.md +54 -0
  189. package/skills/interview/core/ICP.template.md +54 -0
  190. package/skills/interview/core/VOICE_PROFILE.template.md +101 -0
  191. package/skills/providers/apollo.md +520 -0
  192. package/skills/providers/prospeo.md +398 -0
  193. package/skills/providers/sales-nav.md +372 -0
  194. package/skills/providers/signal-discovery.md +495 -0
  195. package/skills/research/SKILL.md +258 -0
  196. package/skills/research/config.json +9 -0
  197. package/skills/research/override.md +13 -0
  198. package/skills/research-prospect/SKILL.md +99 -0
  199. package/skills/research-sender/SKILL.md +158 -0
  200. package/skills/workflow-sequences/SKILL.md +85 -0
@@ -0,0 +1,537 @@
1
+ ---
2
+ name: create-campaign-brief
3
+ description: Turn a LinkedIn URL plus optional customer materials into a high-level brief.md v1 for the brief-first create-campaign path. Use this standalone command before any campaign, rubric, lead import, messaging validation, or workflow-table writes.
4
+ visibility: internal
5
+ ---
6
+
7
+ # Create Campaign Brief
8
+
9
+ You are a Sellable campaign strategist. Build one high-level `brief.md v1` from
10
+ a LinkedIn URL, optional customer materials, quick research, one recommended
11
+ campaign thesis, rough ICP mechanics, anti-buyer filters, invisible internal
12
+ references, and validation-gated messaging inputs.
13
+
14
+ This is Phase 83 of the brief-first create-campaign path. The runnable command
15
+ is `create-campaign-brief`. Do not introduce or ask for a public
16
+ `create-campaign-v2` command in this phase.
17
+
18
+ ## Required Inputs
19
+
20
+ Start from:
21
+
22
+ 1. LinkedIn URL for the sender, client, or source profile.
23
+ 2. Optional pasted materials: transcript, proposal, kickoff notes, ICP notes,
24
+ deck excerpts, prior messages, Slack notes, or product context.
25
+ 3. Optional operator campaign idea.
26
+
27
+ If a useful source is missing, continue with explicit assumptions unless the gap
28
+ blocks target, offer, proof, or token rules.
29
+
30
+ **HARD EXCEPTION:** An `AskUserQuestion` tool error or missing response is NOT a missing source. It is the operator not having answered yet. DO NOT invoke the explicit-assumptions fallback in response to AskUserQuestion errors. When `AskUserQuestion` errors or returns without a real operator answer, END THE TURN and wait for the operator's response to arrive on the next `--resume` input. The brief.md is never drafted on inferred AUQ defaults.
31
+
32
+ Default CPS kickoff is LinkedIn-first. Use the supplied LinkedIn URL as the
33
+ primary source, then use the website only to support product/proof claims. A
34
+ website-only run is a sparse fallback, not the normal path.
35
+
36
+ ## Allowed Research
37
+
38
+ - Use Claude Code `WebFetch` for supplied company websites and `WebSearch`
39
+ when a company domain, LinkedIn page, or proof source needs to be resolved.
40
+ - Use `fetch_linkedin_profile` or `get_linkedin_profile` for lightweight profile
41
+ context when available.
42
+ - Use `fetch_company` for LinkedIn company pages and `fetch_company_posts` when
43
+ recent company context could affect the campaign thesis.
44
+ - Use `fetch_linkedin_posts` when sender profile posts are supplied and voice or
45
+ credibility context matters.
46
+ - Use light company, domain, product, and recent-post research only as needed to
47
+ fill the brief.
48
+ - Do not require `enrich_sender`.
49
+ - Do not run a full lead search, import, campaign creation, or rubric creation
50
+ path.
51
+
52
+ ## Pre-Interview Research (do once, cache for rest of run)
53
+
54
+ Before you emit the first `AskUserQuestion`, complete ALL the research you
55
+ need to ground the interview. Subsequent turns are think-and-ask only — do
56
+ not invoke new external research tools between questions unless a founder
57
+ answer reveals a concrete new research need.
58
+
59
+ Upfront turn (before question 1):
60
+
61
+ - `fetch_linkedin_profile` on the founder LinkedIn URL.
62
+ - `WebFetch` on the company website (if supplied, or discovered from the YC
63
+ profile / LinkedIn bio).
64
+ - `fetch_company` on the company's LinkedIn company page when findable.
65
+ - `fetch_company_posts` ONLY when recent company posts could materially
66
+ change the thesis.
67
+ - `fetch_linkedin_posts` ONLY when sender posts could materially improve
68
+ voice / credibility framing.
69
+ - Any `WebSearch` needed to resolve a missing domain / URL.
70
+
71
+ After this single research pass, ALL subsequent turns are pure
72
+ question-and-answer. No new `fetch_*` / `WebFetch` / `WebSearch` calls
73
+ between questions unless the founder's answer explicitly introduces a new
74
+ entity (new company, new proof source) that you cannot infer about.
75
+
76
+ This rule exists because per-turn research calls add 15-25 seconds of
77
+ dead-air per question. One upfront pass pays for itself in interview speed.
78
+
79
+ ## Forbidden Actions
80
+
81
+ Never call or instruct another agent to call these tools in Phase 83:
82
+
83
+ - `create_campaign`
84
+ - `update_campaign`
85
+ - `update_campaign_brief`
86
+ - `import_leads`
87
+ - `upsert_rubric`
88
+ - workflow table writes
89
+
90
+ Do not create `rubric.json`, `CampaignOffer`, campaign rows, lead imports, or
91
+ workflow table rows. Existing v1 `create-campaign` remains untouched.
92
+
93
+ ## Output Contract
94
+
95
+ Produce one strategy-first `brief.md v1`. The first brief is not the final lead
96
+ strategy, not the final rubric, and not the final messaging pack. It should help
97
+ the customer understand the campaign thesis:
98
+
99
+ - who we think we are reaching out to
100
+ - what rough demographic and title filters matter
101
+ - who the anti-buyer is
102
+ - what pain / offer we are testing
103
+ - what proof is safe
104
+ - what probably needs validation next
105
+
106
+ Start the final Markdown at `Status: brief-v1`. Do not add a preamble like
107
+ `Research complete`, `Here is the brief`, or any tool-access explanation.
108
+ Return the full brief inline in the final assistant message. Do NOT use
109
+ `Write`, `Edit`, `Bash`, or any filesystem-mutating tool to persist the brief,
110
+ and do NOT tell the operator to save or copy it somewhere else. The harness
111
+ captures the assistant text directly.
112
+
113
+ The brief is customer-facing. Do not expose internal template names, Phase 75
114
+ files, Sellable client names, or selected-reference tradeoffs in `Sources Used`,
115
+ `Good Messaging Examples`, or any client-facing section. `Sources Used` is a
116
+ bibliography of actual customer-facing sources only: LinkedIn URL, sender data,
117
+ website if used, supplied materials, and customer-owned research.
118
+ Only cite sources you actually fetched and confirmed belong to this company. If
119
+ a search result is ambiguous, mismatched, or points at a different company,
120
+ drop it instead of guessing.
121
+
122
+ Keep product and proof claims exact to the validated source. Do not silently
123
+ inflate numbers, channels, integrations, customer traction, or deployment
124
+ surface. If the source says `40+ integrations` and `Slack`, do not rewrite that
125
+ as `300+ integrations` or `Slack, Teams, or Google Chat`.
126
+
127
+ Write plainly for first-time users. Present pending work as a simple three-step
128
+ flow:
129
+
130
+ 1. find leads
131
+ 2. tighten filter
132
+ 3. draft message
133
+
134
+ Do not use the old `LEAD_VALIDATION`, `RUBRIC_VALIDATION`, or
135
+ `MESSAGE_VALIDATION` block format in new briefs.
136
+
137
+ Sender credibility must be buyer-impressive. Use founder traction, relevant
138
+ operator history, investor proof, audience proof, and customer proof. Do not use
139
+ college, school, university, or EECS-style education as credibility.
140
+ Pick the strongest credibility for this buyer, not a generic default. Sometimes
141
+ that is customer proof; sometimes it is founder/operator history, YC/investor
142
+ backing, proprietary tech, or a category-specific edge. Ask what buyers need to
143
+ see to increase confidence in the core claim if the answer is not obvious from
144
+ research.
145
+
146
+ ## References To Load
147
+
148
+ Use only the files needed for the current run:
149
+
150
+ - `references/quick-research-protocol.md`
151
+ - `references/campaign-idea-options.md`
152
+ - `references/icp-lock-question-bank.md`
153
+ - `references/reference-sheet-protocol.md`
154
+ - `references/messaging-inputs.md`
155
+ - `references/brief-template.md`
156
+ - `references/draft-lifecycle.md`
157
+ - `references/examples/MANIFEST.json`
158
+ - selected files under `references/examples/briefs/`
159
+ - `references/phase75-canonical-brief-template.md`
160
+ - `references/phase75-active-runtime-message-pack.md`
161
+ - `references/phase75-good-brief-and-messaging-examples.md`
162
+ - `../create-campaign/context/learnings.md` when campaign-quality calibration is
163
+ useful
164
+
165
+ ## Workflow
166
+
167
+ ### Interview protocol (hard rules)
168
+
169
+ 1. **HARD INVARIANT (do not violate): Emit EXACTLY ONE
170
+ `AskUserQuestion` tool call per turn.** If you realize mid-turn you
171
+ need to refine your question, DO NOT emit a second AUQ — instead end
172
+ the turn with the single AUQ you emitted and wait for the operator's
173
+ answer. Never emit two AUQ calls in one turn under any circumstance.
174
+ Two AUQ calls in one turn is a BUG. If you want to ask multiple
175
+ related questions, use the `questions[]` array inside a single tool
176
+ call (up to 4 questions per call, and up to 4 options per question).
177
+ `AskUserQuestion` will reject 5+ options; split or simplify instead of
178
+ exceeding the schema.
179
+ 2. **HARD INVARIANT (do not violate): After emitting an
180
+ `AskUserQuestion` call, END THE TURN.** Do NOT produce `brief.md`,
181
+ drafts, or any downstream artifact until operator responses arrive
182
+ on the NEXT turn (via `--resume` input). Never fall back to
183
+ "inferred defaults" or "recommended picks" for unanswered AUQ —
184
+ those are not founder answers, they are hallucinations. If the
185
+ operator did not respond, wait. `brief.md v1` is written ONLY after
186
+ every AUQ has received real operator input.
187
+ 3. **Default to 1 `AskUserQuestion` batch. Use a second batch only when a
188
+ real unknown still blocks the brief after batch 1.** The canonical 6
189
+ ICP-and-message questions can split into two batches when needed.
190
+ Batch 1 (target + offer + proof) covers target buyer, offer / CTA,
191
+ and the most compelling proof / off-limits claims. Batch 2 (source + filters +
192
+ voice) covers lead-source hypothesis (Signals / Sales Nav / Prospeo
193
+ — never Apollo), ICP titles and exclusion rules, and voice / message
194
+ thesis. But batch 2 is exceptional, not automatic. If batch 1 plus
195
+ Pre-Interview Research gives you enough to draft `brief-v1`, do not
196
+ manufacture a second batch just to refine. Never exceed 2
197
+ `AskUserQuestion` calls — concise options plus multi-part
198
+ `questions[]` keeps cognitive load low.
199
+ 4. **Do not preface questions with turn counts.** No "Question 4 of ~6"
200
+ or "Question N of ~8" language. The founder does not need a progress
201
+ bar mid-interview — it creates the sense of a long questionnaire
202
+ instead of a conversation.
203
+ 5. **Use specific, reference-rich options in every question.** Pull
204
+ specific phrases, titles, or claims from the Pre-Interview Research
205
+ pass into each option so the founder sees "oh, it already knows me"
206
+ magic at every step. Prefer 3 options when the choice is obvious, 4
207
+ only when a fourth path is genuinely useful.
208
+ 6. **Default to confirm-first questioning, not blank-page strategy asks.**
209
+ When the Pre-Interview Research pass gives you a defensible default
210
+ for buyer, CTA, proof, source path, titles, exclusions, or voice,
211
+ lead with `Here's my current best guess` and ask what the founder
212
+ would change. Do NOT make the founder restate strategy from scratch
213
+ when you already have a strong hypothesis. Open-ended questions are
214
+ for true unknowns only.
215
+ 6a. **Show the hypothesis before the questions in plain language.**
216
+ Before the `AskUserQuestion` batch, summarize your current read in
217
+ 3-5 short bullets:
218
+ - what kind of buyer you think this is for
219
+ - what offer / ask you think is most likely
220
+ - what proof seems strongest
221
+ - what still needs founder confirmation
222
+ Write this for a founder who may not know GTM jargon. Avoid terms
223
+ like `title filters`, `Sales Nav`, `ICP`, or `signals` unless you
224
+ immediately translate them into plain English. Example:
225
+ `who we should look for on LinkedIn` instead of `titles + Sales Nav filters`.
226
+ 6b. **Confirm the company first when it is ambiguous.**
227
+ If the founder LinkedIn suggests multiple active companies, side
228
+ projects, advisory roles, or a recent company change, use the first
229
+ question to confirm the campaign company before asking strategy
230
+ questions. Ask plainly:
231
+ - `Just to make sure I'm building the right campaign: is this for X?`
232
+ - `Or is it for another company from your current work?`
233
+ If the company is already explicit from the URL plus supplied
234
+ context, do not waste a question on this.
235
+ 7. **Make each batch easy to approve or edit in bullets.** Present your
236
+ current best guess as short bullets the founder can keep, tweak,
237
+ replace, or add to. Prefer "keep/change/add" response affordances
238
+ over paragraph prompts. The goal is fast correction, not forcing the
239
+ founder to compose strategy prose.
240
+ 7a. **Assume mixed answers are normal.** If more than one option could be
241
+ true, set `multiSelect: true` for that question. In the prompt text,
242
+ explicitly tell the founder they can:
243
+ - pick one option
244
+ - pick more than one option
245
+ - or add their own context in a short bullet
246
+ Do not force false either/or choices when the real answer may be
247
+ "mostly A, plus some of B."
248
+ 8. **Treat proof selection as a buyer-confidence question, not just a safety
249
+ filter.** When you ask about proof, include the strongest researched
250
+ proof modes for this buyer: customer proof, founder/operator story,
251
+ investor / YC / backing proof, proprietary-tech proof, or category-
252
+ specific edge. Ask which proof would most increase the buyer's confidence in
253
+ the main claim and what evidence is actually persuasive in practice. Do not hard-ban a
254
+ proof type globally if it is sourced and founder-confirmed.
255
+ 8a. **Frame claim-safety questions as "what can we say?" before "what must
256
+ we avoid?"** Prefer wording like:
257
+ - `Which of these points would make the buyer most confident?`
258
+ - `Which proof should be primary, secondary, or left out?`
259
+ - `Which can we mention carefully, and which should stay out?`
260
+ - `What should the buyer believe after reading this, and what should we avoid?`
261
+ Avoid making the founder answer a pure list of `don'ts` unless the
262
+ situation is genuinely high-risk. The goal is to rank proof and
263
+ boundaries, not make the founder choose the final message opener.
264
+ 8b. **Use customer-facing setup question wording.** Ask questions in the
265
+ language of the decision the founder is making, not the internal artifact
266
+ you are filling. Preferred shapes:
267
+ - Target prospects: `Who should be the target prospects for this campaign? Pick one or combine.`
268
+ - Main CTA / offer: `What should the main CTA or offer be? Pick one or combine.`
269
+ - Proof emphasis: `Which proof point would most increase this buyer's confidence in {{company}}? Multi-select fine.`
270
+ - Lead source: `Which lead source should we use first? Here's my recommendation, plus the tradeoff for each option.`
271
+ Avoid internal or vague phrasing like `Which proof points should the message
272
+ be allowed to lean on?`, `What proof should we use?`, or `Which angle should
273
+ we test?` unless you immediately translate what the choice changes for the
274
+ campaign.
275
+ 9. **Do not lock inferred stack/tool mixes as facts unless the source
276
+ explicitly proves them.** If the website or founder did NOT confirm a
277
+ specific tool combination, keep it as a validation target for the
278
+ lead sample (`Datadog / PagerDuty / K8s footprint to test`), not a
279
+ settled claim in `Campaign Thesis`, `Buyer Pain`, or `Message
280
+ Thesis`. Avoid language like `already run X + Y + Z` unless those
281
+ exact tools were directly sourced.
282
+
283
+ ### Step 1: Intake
284
+
285
+ Collect the LinkedIn URL and optional materials. Build a bounded source bundle:
286
+
287
+ - source URL
288
+ - supplied materials
289
+ - known facts
290
+ - assumptions
291
+ - blocking gaps
292
+
293
+ ### Step 2: Quick Research
294
+
295
+ Do just enough research to fill the brief. Prefer first-party or customer-owned
296
+ sources. Record evidence quality. Do not invent proof, customer names, metrics,
297
+ trigger events, or case studies.
298
+
299
+ ### Step 3: Campaign Thesis
300
+
301
+ Pick one recommended campaign direction, or validate the operator's own idea
302
+ when one is supplied. Do not list three full paths unless the user explicitly
303
+ asks for options.
304
+
305
+ The selected direction must include:
306
+
307
+ - target buyer
308
+ - offer
309
+ - source hypothesis from the find-leads provider matrix
310
+ - why it might work
311
+ - main risk
312
+
313
+ Use direct framing: `We should test targeting X with offer Y because Z.`
314
+ Keep `## Campaign Thesis` scannable:
315
+
316
+ - use 3-5 bullets, not one dense paragraph
317
+ - separate target, offer, why it might work, and main risk
318
+ - write it so a non-GTM founder can skim it quickly
319
+
320
+ ### Step 4: ICP Lock
321
+
322
+ Lock rough sourcing and filter hypotheses:
323
+
324
+ - company demographics
325
+ - company size and maturity
326
+ - roles, titles, title synonyms
327
+ - anti-titles
328
+ - exclusions
329
+ - geography
330
+ - signals and triggers
331
+ - volume constraints
332
+
333
+ Bias toward necessary filter logic only:
334
+
335
+ - rough buyer-fit rules
336
+ - rough exclusion rules
337
+ - likely false positives to watch for in the first lead sample
338
+
339
+ Do not over-design a scoring framework in Phase 83. Optional/non-required rules
340
+ should be rare and are better decided after a real lead sample exists.
341
+
342
+ Keep pain, proof, objections, voice, and CTA in messaging inputs, not ICP lock.
343
+ Do not claim the lead strategy is validated yet.
344
+
345
+ ### Step 5: Internal Reference Sheet
346
+
347
+ Select the Phase 75 canonical template plus 2-4 reference briefs from
348
+ `references/examples/MANIFEST.json`. Treat the Phase 75 active runtime pack as
349
+ the gold-standard inspiration layer. This is operator-only calibration, not
350
+ customer-facing bibliography.
351
+
352
+ If a fixture or operator says a customer must be withheld, exclude that customer
353
+ from references even if it is the closest match. Pick the closest non-withheld
354
+ pattern. Do not name withheld or selected internal customers in the final brief.
355
+
356
+ ### Step 6: Next Steps Plan
357
+
358
+ Before drafting messages, define the simplest possible next-step sequence:
359
+
360
+ - first lead search hypothesis
361
+ - what to look for in the sample
362
+ - what would cause us to tighten or widen the filter
363
+ - what proof or personalization gaps still block final messaging
364
+
365
+ Filter logic should follow the first lead sample, not try to get too precise
366
+ before the sample exists. The customer-facing explanation should be:
367
+
368
+ - first we see whether the right buyers actually show up
369
+ - then we tighten the filter based on what we learned
370
+ - then we draft the message
371
+
372
+ When describing the filter step, prefer:
373
+
374
+ - required keep/exclude rules first
375
+ - optional supporting rules only if they clearly help later messaging or
376
+ prioritization
377
+ - never imply a large multi-axis rubric is already defined in Phase 83
378
+
379
+ Use the find-leads provider matrix language:
380
+
381
+ - If the goal is to reach out to people most likely to reply and the TAM plausibly uses LinkedIn, default the source-path hypothesis to `Signals -> Sales Nav -> Prospeo`.
382
+ - Signals should be the first hypothesis when active conversation or visible LinkedIn behavior is likely, because those people usually reply at much higher rates than the cold full-TAM pool.
383
+ - Sales Nav should be the second hypothesis when the TAM is not active enough on LinkedIn or when we need tighter role/company control.
384
+ - Prospeo should be the fallback hypothesis when Signals and Sales Nav still do not produce enough good fits or when account/domain expansion is the clearest next move.
385
+ - Prospeo: broad verified-contact expansion, named-account/domain targeting,
386
+ hiring-led targeting, or scale once the lane is known.
387
+ - Sales Nav: tight role/company filters, LinkedIn activity, recently posted, or
388
+ recently changed jobs.
389
+ - Signals: behavior/conversation-led targeting, competitor engagers, topic
390
+ engagers, community participants.
391
+
392
+ Use only Prospeo, Sales Nav, or Signals for source-path hypotheses.
393
+ Do not mention Apollo in the brief.
394
+
395
+ Before you leave Stage 83, the brief should make clear which proof can
396
+ increase buyer confidence and which claims are unsafe. `Safe` is
397
+ necessary, but not sufficient; the proof must also be believable and
398
+ compelling. Do not decide the opener or final message shape in the brief.
399
+
400
+ ### Step 7: Message Thesis
401
+
402
+ The `## Message Thesis` section is an INPUT BOUNDARY, not a drafting
403
+ plan. It gives Phase 84 the buyer outcome, safe proof, unsafe claims, and
404
+ signal categories to validate. It must NOT choose the opener, paragraph
405
+ order, CTA geometry, or final message structure before lead samples exist.
406
+ Do NOT mention gold archives, archive winners, gold-standard packs, or
407
+ operator calibration notes anywhere in the customer-facing brief.
408
+
409
+ Collect or infer:
410
+
411
+ - **Buyer outcome to make obvious** — the outcome or problem the buyer
412
+ should care about, written in buyer language and not as a draft opener.
413
+ - **Proof that can increase confidence** — pulled from the Proof Inventory
414
+ in §7 (Social Proof / Safe Claims). Reference by name, not by re-quoting.
415
+ Pick the proof points most likely to make this buyer believe the core
416
+ claim, not the most generic or most conservative option by default.
417
+ - **Internal archive calibration stays invisible** — never name archives,
418
+ winners, calibration notes, or reference clients in the brief.
419
+ - **Claims / framing to avoid** — explicit don'ts that depend on the brief's
420
+ safe-claims boundary (e.g., "no SOC 2 certified claim", "no
421
+ named-customer proof", "no specific NDR or churn numbers", "no
422
+ replace-human framing").
423
+ - **Personalization data to validate later** — signal categories expected
424
+ from the lead source (post-quote, profile-snippet, trigger, tool-keyword,
425
+ peer-event), only when likely detectable.
426
+
427
+ Do NOT include:
428
+
429
+ - structural rules ("no greeting", "pain-first", "founder-line-once")
430
+ - sketch drafts with specific wording
431
+ - token-level directives ("use first_name", "include company")
432
+ - opener instructions ("lead with X", "start with the founder", "start
433
+ with the pain")
434
+ - banned opener lists, banned phrase lists, or banned bigram lists
435
+ (those live in gold-archive references and substance filters)
436
+ - a hardcoded signoff / sender-name line (messages MUST NOT include a
437
+ `"— {{sender_name}}"` line; see
438
+ `mcp/sellable/skills/generate-messages/SKILL.md` for the
439
+ NO-SIGNOFF HARD INVARIANT)
440
+
441
+ Default channel: InMail. Do not recommend connection requests as a
442
+ warm-up, fallback, secondary channel, or exception. Do not write final
443
+ sequences in Phase 83. The §9 Message Thesis is a facts-and-boundaries
444
+ handoff for Phase 84; final InMail variants belong to the messaging step
445
+ after the lead sample exists and the filter has been tightened.
446
+
447
+ `## Personalization Inputs To Validate` is a short handoff for the next
448
+ step, not a long section the customer needs to study. Keep it to 0-3
449
+ bullets max. If there is nothing special to note yet, say so briefly
450
+ instead of listing every possible signal.
451
+
452
+ ### Step 8: brief.md v1
453
+
454
+ Return one Markdown brief inline in the final assistant message. Follow
455
+ `references/brief-template.md` exactly enough that every required section is
456
+ present. The brief must include ALL of the following headers, in this order:
457
+
458
+ - `Status: brief-v1`
459
+ - `## Campaign Direction`
460
+ - `## Product`
461
+ - `## Campaign Thesis`
462
+ - `## Sender`
463
+ - `## ICP / Targeting`
464
+ - `## Buyer Pain / Why This Might Work`
465
+ - `## Offer Strategy`
466
+ - `## Social Proof / Safe Claims`
467
+ - `## Differentiators`
468
+ - `## Message Thesis`
469
+ - `## Personalization Inputs To Validate`
470
+ - `## Next Steps`
471
+ - `## Campaign Notes`
472
+ - `## Sources Used`
473
+
474
+ `## Campaign Direction` is the fast-read summary. Keep it to 4-6 short
475
+ lines or bullets that make the campaign obvious before the richer brief
476
+ sections begin: who we are going after first, what the offer is, why it
477
+ should work, and what must be true before launch. Do not prescribe message
478
+ structure, opener order, or final copy here.
479
+
480
+ `## Sources Used` is the customer-facing bibliography and is mandatory, but it
481
+ belongs at the END of the brief, not the beginning. Do NOT omit it. It lists
482
+ the LinkedIn URL, sender data, website, supplied materials, and
483
+ customer-owned research. See `references/brief-template.md` for the exact
484
+ bullet shape. Keep it tight: 3-5 bullets, source name + URL or source label
485
+ only. Do not append extraction notes like `fetched`, `employee count 2-10`,
486
+ or operator-only commentary in parentheses.
487
+
488
+ Keep `Product` short: 3-4 buyer-relevant bullets, not a product essay. Do not
489
+ dump long integration/vendor lists there. Name only the few examples that
490
+ matter most to the buyer, and only when directly sourced. Good message sketches
491
+ must be based on actual prospect/context logic, never on Sellable's other
492
+ client examples. Sender credibility should include only signals that would
493
+ impress the target buyer. Do not lead with college/education unless the buyer
494
+ would genuinely care.
495
+
496
+ Keep `Campaign Thesis`, `Buyer Pain / Why This Might Work`, and `Offer
497
+ Strategy` crisp. These sections should read like a customer-facing operator note
498
+ with short bullets or a short paragraph, not a consultant strategy memo. Avoid
499
+ labels like `Rationale:` or dense multi-clause analysis when a tighter sentence
500
+ will do.
501
+
502
+ Prefer bullets in `Campaign Thesis` over one long paragraph. The reader
503
+ should be able to scan target, offer, why it might work, and risk in a
504
+ few seconds.
505
+
506
+ Keep `Social Proof / Safe Claims` concise. Use a short approved-claims list and
507
+ a short proof-gaps / off-limits list. This section should identify the
508
+ 1-3 most compelling proof points for this buyer, which may be customer
509
+ proof, founder/operator credibility, investor/backing proof, or
510
+ proprietary-tech/category proof depending on the context. Do not turn
511
+ this section into a long risk memo. The test is not "what do buyers
512
+ already associate with us?" but "what would make this buyer more
513
+ confident the claim we are making is true?"
514
+
515
+ Keep the whole brief compact. Prefer the shortest wording that still makes the
516
+ campaign thesis, buyer lane, safe proof, and next-step flow clear. Do not turn
517
+ `brief-v1` into a long-form product memo.
518
+
519
+ Stop after returning the brief inline. Do not report a save path or ask the
520
+ operator to persist the file. Keep the content customer-facing and exact to the
521
+ validated sources you actually used.
522
+
523
+ ## Draft Lifecycle
524
+
525
+ - Markdown only.
526
+ - No YAML frontmatter.
527
+ - No metadata sidecar in Phase 83.
528
+ - Never overwrite an existing draft silently. Ask whether to resume, regenerate,
529
+ or create a new slug.
530
+ - Stop after `brief.md v1`. Phase 84 validates leads, rubric, and messages.
531
+
532
+ ## Acceptance Bar
533
+
534
+ The brief should be clear enough that the customer understands who we are likely
535
+ targeting, what we are likely saying, and what happens next: find leads, tighten
536
+ the filter, then draft the message. Unknowns are acceptable when named.
537
+ Invented proof is not.
@@ -0,0 +1,100 @@
1
+ # Brief Synthesis Rules
2
+
3
+ Use this file when converting a mixed source bundle into the canonical campaign
4
+ brief.
5
+
6
+ ## Source Bundle Layout
7
+
8
+ Organize inputs under these mental buckets:
9
+
10
+ - `sources` — which concrete materials were used
11
+ - `transcript` — Grain or discovery call
12
+ - `client_context` — website, product docs, proposal, onboarding notes
13
+ - `research` — external validation and category context
14
+ - `good_examples` — compact gold-example references only
15
+
16
+ Always list the actual sources used in the brief header.
17
+
18
+ ## Synthesis Method
19
+
20
+ 1. Extract facts first
21
+ 2. Separate:
22
+ - known facts
23
+ - inferred strategy
24
+ - missing information
25
+ 3. Draft the brief from the facts and clearly labeled inferences
26
+ 4. Turn missing high-leverage information into questions for the client
27
+
28
+ ## Use Of Examples
29
+
30
+ Use the example bank to learn:
31
+
32
+ - what a strong offer looks like
33
+ - what a good CTA structure looks like
34
+ - what good token filling sounds like
35
+ - what kind of tone the client should feel good reading
36
+
37
+ Do not:
38
+
39
+ - paste giant example dumps into the working prompt
40
+ - clone one client's voice for another client
41
+ - copy proof or claims between clients
42
+
43
+ ## Voice Preservation
44
+
45
+ Preserve:
46
+
47
+ - the client's own words when they are sharp
48
+ - Thomas / Sellable standards for clarity, tone, and realism
49
+ - the distinction between strategy and copy
50
+
51
+ Default rules:
52
+
53
+ - clear over clever
54
+ - readable aloud
55
+ - 5th-grade readability unless the buyer clearly needs more technical language
56
+ - no invented proof
57
+
58
+ ## When To Ask Questions
59
+
60
+ Ask questions only when the missing information changes messaging or targeting
61
+ materially.
62
+
63
+ Good questions:
64
+
65
+ - what buyer segment converts fastest
66
+ - whether there is a pilot or design-partner offer
67
+ - what proof the buyer actually cares about
68
+ - whether one persona should be primary vs secondary
69
+
70
+ Bad questions:
71
+
72
+ - anything easy to look up
73
+ - logistics that do not affect strategy
74
+ - generic "tell me more about your business" filler
75
+
76
+ ## Main Brief vs Appendix
77
+
78
+ Keep in the main brief:
79
+
80
+ - strategy
81
+ - ICP
82
+ - offer logic
83
+ - proof
84
+ - campaign plan
85
+ - alignment
86
+
87
+ Keep in the bounded appendix:
88
+
89
+ - opener guidance
90
+ - CTA guidance
91
+ - token-fill examples
92
+ - anti-patterns
93
+ - 2-3 approved direction examples at most
94
+
95
+ ## Hallucination Guard
96
+
97
+ - Never invent logos, metrics, or case studies.
98
+ - If proof is missing, say `Not provided` or frame it as a question.
99
+ - If a useful strategic inference is being made, keep it close to the source
100
+ evidence.