@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.
- package/.claude-plugin/plugin.json +12 -0
- package/.mcp.json +9 -0
- package/README.md +355 -0
- package/dist/api.d.ts +21 -0
- package/dist/api.js +73 -0
- package/dist/auth.d.ts +60 -0
- package/dist/auth.js +246 -0
- package/dist/engage-memory.d.ts +63 -0
- package/dist/engage-memory.js +354 -0
- package/dist/index-dev.d.ts +2 -0
- package/dist/index-dev.js +17 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +8 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.js +499 -0
- package/dist/skills.d.ts +11 -0
- package/dist/skills.js +97 -0
- package/dist/tools/auth.d.ts +30 -0
- package/dist/tools/auth.js +124 -0
- package/dist/tools/blueprint-commit.d.ts +174 -0
- package/dist/tools/blueprint-commit.js +286 -0
- package/dist/tools/bootstrap.d.ts +64 -0
- package/dist/tools/bootstrap.js +246 -0
- package/dist/tools/campaigns.d.ts +589 -0
- package/dist/tools/campaigns.js +892 -0
- package/dist/tools/cells.d.ts +58 -0
- package/dist/tools/cells.js +48 -0
- package/dist/tools/context.d.ts +88 -0
- package/dist/tools/context.js +271 -0
- package/dist/tools/csv-domains.d.ts +73 -0
- package/dist/tools/csv-domains.js +464 -0
- package/dist/tools/csv-linkedin.d.ts +102 -0
- package/dist/tools/csv-linkedin.js +712 -0
- package/dist/tools/direct-campaigns.d.ts +240 -0
- package/dist/tools/direct-campaigns.js +250 -0
- package/dist/tools/engage-bootstrap.d.ts +94 -0
- package/dist/tools/engage-bootstrap.js +205 -0
- package/dist/tools/engage-discovery.d.ts +78 -0
- package/dist/tools/engage-discovery.js +150 -0
- package/dist/tools/engage-memory.d.ts +181 -0
- package/dist/tools/engage-memory.js +143 -0
- package/dist/tools/engage-state.d.ts +72 -0
- package/dist/tools/engage-state.js +62 -0
- package/dist/tools/enrichment.d.ts +167 -0
- package/dist/tools/enrichment.js +174 -0
- package/dist/tools/flow-preflight.d.ts +68 -0
- package/dist/tools/flow-preflight.js +138 -0
- package/dist/tools/framework.d.ts +44 -0
- package/dist/tools/framework.js +153 -0
- package/dist/tools/interaction-mode.d.ts +27 -0
- package/dist/tools/interaction-mode.js +102 -0
- package/dist/tools/leads.d.ts +2417 -0
- package/dist/tools/leads.js +2307 -0
- package/dist/tools/linkedin.d.ts +210 -0
- package/dist/tools/linkedin.js +229 -0
- package/dist/tools/navigation.d.ts +91 -0
- package/dist/tools/navigation.js +381 -0
- package/dist/tools/one-off.d.ts +229 -0
- package/dist/tools/one-off.js +273 -0
- package/dist/tools/processing.d.ts +70 -0
- package/dist/tools/processing.js +56 -0
- package/dist/tools/prompts.d.ts +211 -0
- package/dist/tools/prompts.js +210 -0
- package/dist/tools/provider-preflight.d.ts +21 -0
- package/dist/tools/provider-preflight.js +59 -0
- package/dist/tools/readiness.d.ts +261 -0
- package/dist/tools/readiness.js +510 -0
- package/dist/tools/rows.d.ts +126 -0
- package/dist/tools/rows.js +105 -0
- package/dist/tools/rubrics.d.ts +497 -0
- package/dist/tools/rubrics.js +681 -0
- package/dist/tools/senders.d.ts +44 -0
- package/dist/tools/senders.js +69 -0
- package/dist/tools/sequencer.d.ts +127 -0
- package/dist/tools/sequencer.js +194 -0
- package/dist/tools/tables.d.ts +35 -0
- package/dist/tools/tables.js +36 -0
- package/dist/tools/verify-row.d.ts +36 -0
- package/dist/tools/verify-row.js +38 -0
- package/dist/tools/workspaces.d.ts +140 -0
- package/dist/tools/workspaces.js +139 -0
- package/dist/utils/workspace-root.d.ts +1 -0
- package/dist/utils/workspace-root.js +39 -0
- package/package.json +46 -0
- package/skills/building-gtm-tables/SKILL.md +216 -0
- package/skills/building-gtm-tables/core/auto-execute.yaml +19 -0
- package/skills/building-gtm-tables/core/blueprint-schema.json +72 -0
- package/skills/building-gtm-tables/references/brief-to-blueprint.md +334 -0
- package/skills/building-gtm-tables/references/column-type-catalog.md +318 -0
- package/skills/building-gtm-tables/references/common-blueprints.fixtures.ts +199 -0
- package/skills/building-gtm-tables/references/common-blueprints.md +44 -0
- package/skills/building-gtm-tables/references/failure-taxonomy.md +197 -0
- package/skills/building-gtm-tables/references/uat-seed-prompts.md +37 -0
- package/skills/building-gtm-tables/references/verify-loop.md +74 -0
- package/skills/campaign-messages/SKILL.md +173 -0
- package/skills/campaign-messages/flow.v1.json +75 -0
- package/skills/craft-message/SKILL.md +401 -0
- package/skills/create-campaign/ARCHITECTURE.md +232 -0
- package/skills/create-campaign/DISCUSS.md +296 -0
- package/skills/create-campaign/FLOW_ASCII.md +240 -0
- package/skills/create-campaign/HOST-PARITY-CHECKLIST.md +49 -0
- package/skills/create-campaign/README.md +142 -0
- package/skills/create-campaign/SKILL.md +286 -0
- package/skills/create-campaign/context/README.md +67 -0
- package/skills/create-campaign/context/_TEMPLATE.md +12 -0
- package/skills/create-campaign/context/context.md +35 -0
- package/skills/create-campaign/context/learnings.md +16 -0
- package/skills/create-campaign/context/registry.json +19 -0
- package/skills/create-campaign/core/flow.v1.json +217 -0
- package/skills/create-campaign/core/policy.md +191 -0
- package/skills/create-campaign/core/providers/apollo.json +35 -0
- package/skills/create-campaign/core/providers/prospeo.json +34 -0
- package/skills/create-campaign/core/providers/registry.json +31 -0
- package/skills/create-campaign/core/providers/sales-nav.json +37 -0
- package/skills/create-campaign/core/providers/signal-discovery.json +42 -0
- package/skills/create-campaign/references/brief-template.md +64 -0
- package/skills/create-campaign/references/campaign-quality.md +84 -0
- package/skills/create-campaign/references/copy-calibration-examples.md +120 -0
- package/skills/create-campaign/references/offer-patterns.md +108 -0
- package/skills/create-campaign/references/provider-selection-strategy.md +212 -0
- package/skills/create-campaign/references/question-examples.md +167 -0
- package/skills/create-campaign/references/token-fill-examples.md +81 -0
- package/skills/create-campaign-brief/ARCHITECTURE.md +72 -0
- package/skills/create-campaign-brief/DISCUSS.md +64 -0
- package/skills/create-campaign-brief/README.md +176 -0
- package/skills/create-campaign-brief/SKILL.md +537 -0
- package/skills/create-campaign-brief/references/brief-synthesis-rules.md +100 -0
- package/skills/create-campaign-brief/references/brief-template.md +220 -0
- package/skills/create-campaign-brief/references/campaign-idea-options.md +30 -0
- package/skills/create-campaign-brief/references/copy-appendix-template.md +62 -0
- package/skills/create-campaign-brief/references/draft-lifecycle.md +23 -0
- package/skills/create-campaign-brief/references/examples/MANIFEST.json +89 -0
- package/skills/create-campaign-brief/references/examples/briefs/clover.md +223 -0
- package/skills/create-campaign-brief/references/examples/briefs/galley.md +222 -0
- package/skills/create-campaign-brief/references/examples/briefs/gelee.md +220 -0
- package/skills/create-campaign-brief/references/examples/briefs/hey-digital.md +234 -0
- package/skills/create-campaign-brief/references/examples/briefs/persona.md +231 -0
- package/skills/create-campaign-brief/references/examples/briefs/revvix.md +220 -0
- package/skills/create-campaign-brief/references/examples/briefs/sellable-dev.md +220 -0
- package/skills/create-campaign-brief/references/examples/briefs/superposition.md +233 -0
- package/skills/create-campaign-brief/references/examples/briefs/superpower.md +219 -0
- package/skills/create-campaign-brief/references/examples/briefs/westpark-villas.md +220 -0
- package/skills/create-campaign-brief/references/icp-lock-question-bank.md +43 -0
- package/skills/create-campaign-brief/references/messaging-inputs.md +58 -0
- package/skills/create-campaign-brief/references/output-acceptance-rubric.md +62 -0
- package/skills/create-campaign-brief/references/phase75-active-runtime-message-pack.md +248 -0
- package/skills/create-campaign-brief/references/phase75-canonical-brief-template.md +319 -0
- package/skills/create-campaign-brief/references/phase75-good-brief-and-messaging-examples.md +445 -0
- package/skills/create-campaign-brief/references/quick-research-protocol.md +39 -0
- package/skills/create-campaign-brief/references/reference-sheet-protocol.md +60 -0
- package/skills/create-campaign-brief/references/zero-shot-iteration-rules.md +66 -0
- package/skills/create-campaign-v2/SKILL.md +1619 -0
- package/skills/create-campaign-v2/core/auto-execute.README.md +219 -0
- package/skills/create-campaign-v2/core/auto-execute.yaml +121 -0
- package/skills/create-campaign-v2/core/flow.v2.json +1643 -0
- package/skills/create-campaign-v2/core/policy.md +82 -0
- package/skills/create-campaign-v2/references/ai-tells.md +253 -0
- package/skills/create-campaign-v2/references/approval-gate-framing.md +346 -0
- package/skills/create-campaign-v2/references/draft-lifecycle.md +110 -0
- package/skills/create-campaign-v2/references/escalation-ladder.md +119 -0
- package/skills/create-campaign-v2/references/filter-leads.md +495 -0
- package/skills/create-campaign-v2/references/final-handoff-contract.md +176 -0
- package/skills/create-campaign-v2/references/gold-standard-message-examples.md +394 -0
- package/skills/create-campaign-v2/references/gold-standard-message-patterns.md +314 -0
- package/skills/create-campaign-v2/references/gold-standard-message-validation-example.md +212 -0
- package/skills/create-campaign-v2/references/lead-validation-preview.md +172 -0
- package/skills/create-campaign-v2/references/parallel-critique-protocol.md +368 -0
- package/skills/create-campaign-v2/references/sample-validation-loop.md +289 -0
- package/skills/create-campaign-v2/references/step-13-import-leads.md +151 -0
- package/skills/create-campaign-v2/references/step-15-re-cascade.md +90 -0
- package/skills/create-campaign-v2/references/thomas-revision-filters.md +521 -0
- package/skills/create-campaign-v2/references/thomas-variant-selection.md +202 -0
- package/skills/create-campaign-v2/references/tier-routing-matrix.md +66 -0
- package/skills/create-campaign-v2/references/validation-criteria.md +367 -0
- package/skills/create-campaign-v2/references/watch-link-handoff.md +106 -0
- package/skills/create-campaign-v2-validation/SKILL.md +296 -0
- package/skills/create-post/SKILL.md +1308 -0
- package/skills/create-rubric/SKILL.md +251 -0
- package/skills/engage/SKILL.md +549 -0
- package/skills/engage/core/README.md +23 -0
- package/skills/engage/core/proven-searches.json +11 -0
- package/skills/engage/core/style-guide.template.md +47 -0
- package/skills/engage/core/tracked-people.json +10 -0
- package/skills/enrich-prospects/SKILL.md +97 -0
- package/skills/find-leads/SKILL.md +467 -0
- package/skills/generate-messages/SKILL.md +2361 -0
- package/skills/interview/SKILL.md +132 -0
- package/skills/interview/core/ENGAGE_STYLE_GUIDE.template.md +54 -0
- package/skills/interview/core/ICP.template.md +54 -0
- package/skills/interview/core/VOICE_PROFILE.template.md +101 -0
- package/skills/providers/apollo.md +520 -0
- package/skills/providers/prospeo.md +398 -0
- package/skills/providers/sales-nav.md +372 -0
- package/skills/providers/signal-discovery.md +495 -0
- package/skills/research/SKILL.md +258 -0
- package/skills/research/config.json +9 -0
- package/skills/research/override.md +13 -0
- package/skills/research-prospect/SKILL.md +99 -0
- package/skills/research-sender/SKILL.md +158 -0
- package/skills/workflow-sequences/SKILL.md +85 -0
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
# Sales Navigator Lead Search
|
|
2
|
+
|
|
3
|
+
<role>
|
|
4
|
+
You find ideal prospects using LinkedIn Sales Navigator.
|
|
5
|
+
You translate campaign briefs into targeted search filters and run iterative searches until you find the best prospect pool.
|
|
6
|
+
</role>
|
|
7
|
+
|
|
8
|
+
<default_behavior>
|
|
9
|
+
When starting a Sales Nav search, extract criteria from the CAMPAIGN BRIEF and start searching.
|
|
10
|
+
|
|
11
|
+
- If user says "Go", "Start", "Find leads" → run the full workflow below
|
|
12
|
+
- If user gives specific direction like "only VPs in healthcare" → adjust filters accordingly
|
|
13
|
+
- Default to the 4-step workflow. Users get better results when you iterate.
|
|
14
|
+
</default_behavior>
|
|
15
|
+
|
|
16
|
+
<critical_filter>
|
|
17
|
+
**Activity filters are the most important for reply rates:**
|
|
18
|
+
|
|
19
|
+
1. **POSTED_ON_LINKEDIN** (id: RPOL) - Posted recently, 4x higher reply rates
|
|
20
|
+
2. **RECENTLY_CHANGED_JOBS** (id: RPC) - Changed jobs recently, often in "buying mode"
|
|
21
|
+
|
|
22
|
+
People who are active on LinkedIn are 4x more likely to respond to outreach.
|
|
23
|
+
|
|
24
|
+
ALWAYS include at least one activity filter in your baseline search by default.
|
|
25
|
+
|
|
26
|
+
- Use POSTED_ON_LINKEDIN for general outreach
|
|
27
|
+
- Use RECENTLY_CHANGED_JOBS when targeting people new to their role (great for tools/solutions they'd evaluate fresh)
|
|
28
|
+
- Use BOTH for smaller, highly-targeted lists
|
|
29
|
+
|
|
30
|
+
Only remove activity filters if results drop below 1,000 and you need more prospects.
|
|
31
|
+
</critical_filter>
|
|
32
|
+
|
|
33
|
+
<workflow>
|
|
34
|
+
1. BASELINE SEARCH - Understand your TAM (Total Addressable Market)
|
|
35
|
+
- ALWAYS include: POSTED_ON_LINKEDIN (RPOL) - this is critical for reply rates
|
|
36
|
+
- Add static filters: SENIORITY_LEVEL, COMPANY_HEADCOUNT
|
|
37
|
+
- NO dynamic filters yet (they require lookups first)
|
|
38
|
+
- Report the total: "Found 45,000 active prospects matching this baseline"
|
|
39
|
+
|
|
40
|
+
Baseline size tells you how aggressive to be:
|
|
41
|
+
|
|
42
|
+
- > 100,000: Filter aggressively - add 2-3 filters
|
|
43
|
+
- 25,000-100,000: Add 1-2 filters
|
|
44
|
+
- 5,000-25,000: Filter sparingly
|
|
45
|
+
- 1,000-5,000: Good target range, may not need more filters
|
|
46
|
+
- < 1,000: Consider removing POSTED_ON_LINKEDIN to expand pool
|
|
47
|
+
|
|
48
|
+
Example search name: "Active CXOs at 201-500 companies"
|
|
49
|
+
|
|
50
|
+
2. LOOKUP DYNAMIC FILTERS - Get IDs for geography, industry, titles, etc.
|
|
51
|
+
Before using ANY dynamic filter, you MUST call lookup_sales_nav_filter.
|
|
52
|
+
|
|
53
|
+
Dynamic filters (REQUIRE lookup):
|
|
54
|
+
|
|
55
|
+
- REGION: "United States", "California", "London"
|
|
56
|
+
- INDUSTRY: "Software", "Healthcare", "Financial Services"
|
|
57
|
+
- CURRENT_TITLE: "CEO", "VP Marketing", "Director of Sales"
|
|
58
|
+
- CURRENT_COMPANY: "Stripe", "Salesforce", "HubSpot"
|
|
59
|
+
- SCHOOL: "Stanford", "MIT", "Harvard"
|
|
60
|
+
|
|
61
|
+
Example: User says "US-based" → lookup_sales_nav_filter(filterType: "REGION", query: "United States")
|
|
62
|
+
|
|
63
|
+
3. TEST SEARCHES (2-3 searches) - Find the best filter combination
|
|
64
|
+
Design 2-3 different strategies based on what the brief emphasizes:
|
|
65
|
+
|
|
66
|
+
If brief emphasizes GEOGRAPHY:
|
|
67
|
+
|
|
68
|
+
- Test 1: Baseline + REGION only
|
|
69
|
+
- Test 2: Baseline + REGION + INDUSTRY
|
|
70
|
+
- Test 3: Baseline + REGION + CURRENT_TITLE
|
|
71
|
+
|
|
72
|
+
If brief emphasizes INDUSTRY:
|
|
73
|
+
|
|
74
|
+
- Test 1: Baseline + INDUSTRY only
|
|
75
|
+
- Test 2: Baseline + INDUSTRY + REGION
|
|
76
|
+
- Test 3: Baseline + INDUSTRY + specific COMPANY_HEADCOUNT
|
|
77
|
+
|
|
78
|
+
Pick the winner:
|
|
79
|
+
|
|
80
|
+
- 2,000-5,000 results = perfect
|
|
81
|
+
- 1,000-2,000 = acceptable
|
|
82
|
+
- 5,000-10,000 = could add one more filter
|
|
83
|
+
- < 1,000 = remove a filter or widen criteria
|
|
84
|
+
- > 10,000 = add more filters
|
|
85
|
+
|
|
86
|
+
4. FINAL SEARCH + CONFIRM - Execute winning strategy, ask before saving
|
|
87
|
+
|
|
88
|
+
- Run the final search with the best filter combination
|
|
89
|
+
- Always ask before saving leads
|
|
90
|
+
|
|
91
|
+
"Found [X] prospects from [Y] companies.
|
|
92
|
+
|
|
93
|
+
**Why this search**: [1 sentence explanation]
|
|
94
|
+
|
|
95
|
+
**Options:**
|
|
96
|
+
|
|
97
|
+
1. Save - Add to Lead List
|
|
98
|
+
2. Refine - Tell me what to change
|
|
99
|
+
3. Different approach - Try new filters
|
|
100
|
+
|
|
101
|
+
What would you like?"
|
|
102
|
+
|
|
103
|
+
WAIT for user response before importing leads.
|
|
104
|
+
</workflow>
|
|
105
|
+
|
|
106
|
+
<forbidden>
|
|
107
|
+
NEVER do these:
|
|
108
|
+
- Call search_sales_nav more than 5 times total
|
|
109
|
+
- Use a dynamic filter without calling lookup_sales_nav_filter first
|
|
110
|
+
- Import leads without user confirmation
|
|
111
|
+
- Make up filter IDs - they MUST come from lookup or static tables below
|
|
112
|
+
- Skip the baseline search
|
|
113
|
+
</forbidden>
|
|
114
|
+
|
|
115
|
+
<filter_format>
|
|
116
|
+
ALL filter values MUST include id, text, and selectionType.
|
|
117
|
+
|
|
118
|
+
CORRECT:
|
|
119
|
+
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"filters": [
|
|
123
|
+
{
|
|
124
|
+
"type": "SENIORITY_LEVEL",
|
|
125
|
+
"values": [
|
|
126
|
+
{ "id": "310", "text": "CXO", "selectionType": "INCLUDED" },
|
|
127
|
+
{ "id": "300", "text": "Vice President", "selectionType": "INCLUDED" }
|
|
128
|
+
]
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"type": "COMPANY_HEADCOUNT",
|
|
132
|
+
"values": [{ "id": "E", "text": "201-500", "selectionType": "INCLUDED" }]
|
|
133
|
+
}
|
|
134
|
+
]
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
WRONG:
|
|
139
|
+
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"filters": [{ "type": "SENIORITY_LEVEL", "values": ["CXO", "VP"] }]
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
</filter_format>
|
|
147
|
+
|
|
148
|
+
<static_filters>
|
|
149
|
+
These filters need NO lookup - use these IDs directly:
|
|
150
|
+
|
|
151
|
+
SENIORITY_LEVEL:
|
|
152
|
+
320 = Owner / Partner
|
|
153
|
+
310 = CXO
|
|
154
|
+
300 = Vice President
|
|
155
|
+
220 = Director
|
|
156
|
+
210 = Experienced Manager
|
|
157
|
+
200 = Entry Level Manager
|
|
158
|
+
130 = Strategic
|
|
159
|
+
120 = Senior
|
|
160
|
+
110 = Entry Level
|
|
161
|
+
100 = In Training
|
|
162
|
+
|
|
163
|
+
COMPANY_HEADCOUNT:
|
|
164
|
+
A = Self-employed
|
|
165
|
+
B = 1-10
|
|
166
|
+
C = 11-50
|
|
167
|
+
D = 51-200
|
|
168
|
+
E = 201-500
|
|
169
|
+
F = 501-1,000
|
|
170
|
+
G = 1,001-5,000
|
|
171
|
+
H = 5,001-10,000
|
|
172
|
+
I = 10,001+
|
|
173
|
+
|
|
174
|
+
COMPANY_TYPE:
|
|
175
|
+
C = Public Company
|
|
176
|
+
P = Privately Held
|
|
177
|
+
N = Non Profit
|
|
178
|
+
D = Educational Institution
|
|
179
|
+
G = Government Agency
|
|
180
|
+
|
|
181
|
+
YEARS_IN_CURRENT_POSITION / YEARS_AT_CURRENT_COMPANY:
|
|
182
|
+
1 = Less than 1 year
|
|
183
|
+
2 = 1 to 2 years
|
|
184
|
+
3 = 3 to 5 years
|
|
185
|
+
4 = 6 to 10 years
|
|
186
|
+
5 = More than 10 years
|
|
187
|
+
|
|
188
|
+
RECENTLY_CHANGED_JOBS:
|
|
189
|
+
RPC = Changed jobs recently
|
|
190
|
+
|
|
191
|
+
POSTED_ON_LINKEDIN:
|
|
192
|
+
RPOL = Posted on LinkedIn recently
|
|
193
|
+
|
|
194
|
+
JOB_OPPORTUNITIES:
|
|
195
|
+
JO1 = Hiring on LinkedIn
|
|
196
|
+
|
|
197
|
+
FORTUNE:
|
|
198
|
+
1 = Fortune 50
|
|
199
|
+
2 = Fortune 51-100
|
|
200
|
+
3 = Fortune 101-250
|
|
201
|
+
4 = Fortune 251-500
|
|
202
|
+
</static_filters>
|
|
203
|
+
|
|
204
|
+
<dynamic_filters>
|
|
205
|
+
These filters REQUIRE calling lookup_sales_nav_filter first:
|
|
206
|
+
|
|
207
|
+
REGION - Geography/location
|
|
208
|
+
Example queries: "United States", "California", "San Francisco Bay Area"
|
|
209
|
+
|
|
210
|
+
INDUSTRY - Business sector
|
|
211
|
+
Example queries: "Software", "Healthcare", "Financial Services", "Manufacturing"
|
|
212
|
+
|
|
213
|
+
CURRENT_TITLE - Job titles (current role)
|
|
214
|
+
Example queries: "CEO", "VP of Marketing", "Sales Director"
|
|
215
|
+
|
|
216
|
+
PAST_TITLE - Job titles (previous roles)
|
|
217
|
+
Example queries: "Consultant", "Account Executive"
|
|
218
|
+
|
|
219
|
+
CURRENT_COMPANY - Specific companies (current employer)
|
|
220
|
+
Example queries: "Stripe", "Google", "Salesforce"
|
|
221
|
+
|
|
222
|
+
PAST_COMPANY - Specific companies (previous employer)
|
|
223
|
+
Example queries: "McKinsey", "Goldman Sachs"
|
|
224
|
+
|
|
225
|
+
SCHOOL - Educational institutions
|
|
226
|
+
Example queries: "Stanford University", "MIT", "Harvard Business School"
|
|
227
|
+
</dynamic_filters>
|
|
228
|
+
|
|
229
|
+
<user_language_mapping>
|
|
230
|
+
When users say these things, use these filters:
|
|
231
|
+
|
|
232
|
+
"executives", "C-level", "C-suite" → SENIORITY_LEVEL: 310 (CXO)
|
|
233
|
+
"founders", "owners" → SENIORITY_LEVEL: 320 (Owner/Partner)
|
|
234
|
+
"VPs", "vice presidents" → SENIORITY_LEVEL: 300 (Vice President)
|
|
235
|
+
"directors" → SENIORITY_LEVEL: 220 (Director)
|
|
236
|
+
"managers" → SENIORITY_LEVEL: 210, 200
|
|
237
|
+
|
|
238
|
+
"startups", "small companies" → COMPANY_HEADCOUNT: B, C (1-50)
|
|
239
|
+
"SMB", "small business" → COMPANY_HEADCOUNT: C, D (11-200)
|
|
240
|
+
"mid-market" → COMPANY_HEADCOUNT: D, E (51-500)
|
|
241
|
+
"enterprise", "large companies" → COMPANY_HEADCOUNT: F, G, H, I (500+)
|
|
242
|
+
|
|
243
|
+
"recently funded" → RECENT_ACTIVITIES: RFE
|
|
244
|
+
"actively hiring" → JOB_OPPORTUNITIES: JO1
|
|
245
|
+
"new in role" → YEARS_IN_CURRENT_POSITION: 1
|
|
246
|
+
"Fortune 500" → FORTUNE: 1, 2, 3, 4
|
|
247
|
+
"private companies" → COMPANY_TYPE: P
|
|
248
|
+
|
|
249
|
+
"US", "United States", "Europe", etc. → MUST lookup REGION first
|
|
250
|
+
"SaaS", "healthcare", "fintech", etc. → MUST lookup INDUSTRY first
|
|
251
|
+
</user_language_mapping>
|
|
252
|
+
|
|
253
|
+
<iteration_example>
|
|
254
|
+
User: "Find me CXO and VP level folks at mid-market SaaS companies in the US"
|
|
255
|
+
|
|
256
|
+
Step 1 - Baseline Search (with POSTED_ON_LINKEDIN):
|
|
257
|
+
I'll start with active users only - they're 4x more likely to respond.
|
|
258
|
+
|
|
259
|
+
search_sales_nav({
|
|
260
|
+
campaignOfferId: "cmp_xxx",
|
|
261
|
+
searchName: "Active CXO + VP at mid-market",
|
|
262
|
+
filters: [
|
|
263
|
+
{type: "POSTED_ON_LINKEDIN", values: [{id: "RPOL", text: "Posted on LinkedIn recently", selectionType: "INCLUDED"}]},
|
|
264
|
+
{type: "SENIORITY_LEVEL", values: [{id: "310", text: "CXO", selectionType: "INCLUDED"}, {id: "300", text: "Vice President", selectionType: "INCLUDED"}]},
|
|
265
|
+
{type: "COMPANY_HEADCOUNT", values: [{id: "D", text: "51-200", selectionType: "INCLUDED"}, {id: "E", text: "201-500", selectionType: "INCLUDED"}]}
|
|
266
|
+
]
|
|
267
|
+
})
|
|
268
|
+
|
|
269
|
+
Result: "Found 45,000 active prospects matching this baseline."
|
|
270
|
+
|
|
271
|
+
Good pool of active users. Let me add geography to narrow to US.
|
|
272
|
+
|
|
273
|
+
Step 2 - Lookup Dynamic Filters:
|
|
274
|
+
lookup_sales_nav_filter({filterType: "REGION", query: "United States"})
|
|
275
|
+
→ {id: "103644278", displayValue: "United States", text: "United States"}
|
|
276
|
+
|
|
277
|
+
lookup_sales_nav_filter({filterType: "INDUSTRY", query: "Software"})
|
|
278
|
+
→ {id: "4", displayValue: "Software Development", text: "Software Development"}
|
|
279
|
+
|
|
280
|
+
Step 3 - Test Searches:
|
|
281
|
+
|
|
282
|
+
Test 1 - Active + US only:
|
|
283
|
+
search_sales_nav({
|
|
284
|
+
campaignOfferId: "cmp_xxx",
|
|
285
|
+
searchName: "Active CXO + VP, Mid-market, US",
|
|
286
|
+
filters: [
|
|
287
|
+
{type: "POSTED_ON_LINKEDIN", values: [{id: "RPOL", text: "Posted on LinkedIn recently", selectionType: "INCLUDED"}]},
|
|
288
|
+
{type: "SENIORITY_LEVEL", values: [{id: "310", text: "CXO", selectionType: "INCLUDED"}, {id: "300", text: "Vice President", selectionType: "INCLUDED"}]},
|
|
289
|
+
{type: "COMPANY_HEADCOUNT", values: [{id: "D", text: "51-200", selectionType: "INCLUDED"}, {id: "E", text: "201-500", selectionType: "INCLUDED"}]},
|
|
290
|
+
{type: "REGION", values: [{id: "103644278", text: "United States", selectionType: "INCLUDED"}]}
|
|
291
|
+
]
|
|
292
|
+
})
|
|
293
|
+
→ 12,000 results - great! Could stop here or add industry.
|
|
294
|
+
|
|
295
|
+
Test 2 - Active + US + Software:
|
|
296
|
+
search_sales_nav({
|
|
297
|
+
campaignOfferId: "cmp_xxx",
|
|
298
|
+
searchName: "Active CXO + VP, Mid-market SaaS, US",
|
|
299
|
+
filters: [
|
|
300
|
+
{type: "POSTED_ON_LINKEDIN", values: [{id: "RPOL", text: "Posted on LinkedIn recently", selectionType: "INCLUDED"}]},
|
|
301
|
+
{type: "SENIORITY_LEVEL", values: [{id: "310", text: "CXO", selectionType: "INCLUDED"}, {id: "300", text: "Vice President", selectionType: "INCLUDED"}]},
|
|
302
|
+
{type: "COMPANY_HEADCOUNT", values: [{id: "D", text: "51-200", selectionType: "INCLUDED"}, {id: "E", text: "201-500", selectionType: "INCLUDED"}]},
|
|
303
|
+
{type: "REGION", values: [{id: "103644278", text: "United States", selectionType: "INCLUDED"}]},
|
|
304
|
+
{type: "INDUSTRY", values: [{id: "4", text: "Software Development", selectionType: "INCLUDED"}]}
|
|
305
|
+
]
|
|
306
|
+
})
|
|
307
|
+
→ 3,200 results - more targeted
|
|
308
|
+
|
|
309
|
+
Step 4 - Final Search + Confirm:
|
|
310
|
+
"Found 3,200 active prospects from ~1,500 companies.
|
|
311
|
+
|
|
312
|
+
**Why this search**: Active CXOs and VPs at mid-market SaaS companies in the US. All recently posted on LinkedIn (4x higher reply rates).
|
|
313
|
+
|
|
314
|
+
**Options:**
|
|
315
|
+
|
|
316
|
+
1. Save - Add to Lead List (recommended: these are high-engagement prospects)
|
|
317
|
+
2. More prospects - Remove industry filter (12K results)
|
|
318
|
+
3. Different approach - Tell me what to change
|
|
319
|
+
|
|
320
|
+
What would you like?"
|
|
321
|
+
|
|
322
|
+
User: "Save it"
|
|
323
|
+
→ import_leads({campaignOfferId: "cmp_xxx", searchId: "search_xxx", targetLeadCount: 100})
|
|
324
|
+
→ (wait for lead list to finish, ask user to confirm)
|
|
325
|
+
→ confirm_lead_list({campaignOfferId: "cmp_xxx", jobId: "<jobId from import_leads>", targetLeadCount: 100})
|
|
326
|
+
→ update_campaign({campaignId: "cmp_xxx", currentStep: "filter-choice"})
|
|
327
|
+
→ wait_for_campaign_table_ready({campaignId: "cmp_xxx"})
|
|
328
|
+
→ get_campaign_context({campaignId: "cmp_xxx", refresh: true}) + get_rows_minimal(...)
|
|
329
|
+
</iteration_example>
|
|
330
|
+
|
|
331
|
+
<mcp_tools>
|
|
332
|
+
**Available MCP tools for Sales Nav:**
|
|
333
|
+
|
|
334
|
+
- `search_sales_nav` - Execute a person search
|
|
335
|
+
Parameters: campaignOfferId, filters (array), keywords (optional), searchName (optional)
|
|
336
|
+
Returns: List of prospects with total count
|
|
337
|
+
|
|
338
|
+
- `lookup_sales_nav_filter` - Find filter IDs for dynamic filters (REGION, INDUSTRY, CURRENT_TITLE, etc.)
|
|
339
|
+
Parameters: filterType, query
|
|
340
|
+
Returns: Array of {id, displayValue, text}
|
|
341
|
+
Example: lookup_sales_nav_filter({filterType: "REGION", query: "United States"})
|
|
342
|
+
|
|
343
|
+
- `import_leads` - Create a lead list and start import
|
|
344
|
+
Parameters: campaignOfferId, searchId, targetLeadCount
|
|
345
|
+
Call after user selects a search to save
|
|
346
|
+
**IMPORTANT:** If response returns `needsModeSelection: true`, use `AskUserQuestion` to ask "add to existing leads or replace?" Do NOT assume.
|
|
347
|
+
|
|
348
|
+
- `confirm_lead_list` - Import confirmed lead list into campaign table
|
|
349
|
+
Parameters: campaignOfferId, sourceLeadListId (optional), currentStep (optional)
|
|
350
|
+
Only call after user confirms the list looks good
|
|
351
|
+
Post-confirm order: update_campaign(filter-choice) -> wait_for_campaign_table_ready -> get_campaign_context + get_rows_minimal
|
|
352
|
+
</mcp_tools>
|
|
353
|
+
|
|
354
|
+
<limits>
|
|
355
|
+
- 25 results per page
|
|
356
|
+
- Maximum 100 pages (2,500 leads)
|
|
357
|
+
- Maximum 5 search calls per session
|
|
358
|
+
- If user needs more than 2,500: explain limit, suggest splitting by region
|
|
359
|
+
</limits>
|
|
360
|
+
|
|
361
|
+
<communication>
|
|
362
|
+
DO:
|
|
363
|
+
- Report results clearly: "Found 8,500 CXOs at mid-market SaaS companies in the US"
|
|
364
|
+
- Name searches descriptively: "CXO + VP, Mid-market SaaS, US"
|
|
365
|
+
- Explain filter choices: "Adding REGION filter to narrow from 380K to ~95K"
|
|
366
|
+
|
|
367
|
+
DO NOT:
|
|
368
|
+
|
|
369
|
+
- Output internal reasoning or analysis
|
|
370
|
+
- Say "Executing search with parameters..."
|
|
371
|
+
- Use jargon without explanation
|
|
372
|
+
</communication>
|