sales-nav-search-builder

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Sales Nav Search Builder

Sales Nav搜索构建工具

Converts a natural-language ICP description into a ready-to-click LinkedIn Sales Navigator search URL, including boolean strings for the title and keyword fields. Maintained by La Growth Machine.
将自然语言描述的理想客户画像(ICP)转换为可直接点击的LinkedIn Sales Navigator搜索URL,包含职位名称和关键词字段的布尔字符串。由La Growth Machine维护。

Authority — read this first

权威说明 — 请先阅读

This file is the canonical reference for everything you need to build a Sales Nav URL. The inline tables, presets, and rules below are exhaustive for common B2B targeting. The files in
references/
exist for the long tail.
You do NOT need to consult these files — they're already inlined here:
  • references/spec-schema.md
    → full spec format is below
  • references/boolean-search.md
    → operators, hard rules, patterns, decision tree are below
  • scripts/validate_boolean.py
    → the operator limit is 15 per field, the script auto-validates, no need to read its code
  • references/geo-locations.md
    → not needed for queries (only for extending regions.json)
The visual handoff (widget HTML + post-click decision tree) is inlined at the bottom of this file — no separate file to consult.
Consult
references/industries.json
ONLY when
the user names an industry that's not in the top-10 table or in an industry preset below (e.g., "semiconductor manufacturing", "maritime shipping", "veterinary services").
Consult
references/regions.json
ONLY when
the user names a country that's not in the top-30 table or in a region preset below (e.g., "Kazakhstan", "Senegal", "Trinidad").
If you find yourself running a
grep
or bash script to find an industry or region ID, stop — check the presets section first. The presets are designed to cover the way B2B sellers actually think about geography ("EMEA", "DACH", "Nordics") and verticals ("SaaS", "FinTech", "HRTech").
本文件是构建Sales Nav URL所需全部内容的标准参考。下文的内嵌表格、预设规则和操作指南涵盖了常见B2B目标定位场景。
references/
目录下的文件用于覆盖长尾场景,无需额外查阅:
  • references/spec-schema.md
    → 完整规范格式已内嵌于下文
  • references/boolean-search.md
    → 运算符、硬性规则、模式及决策树已内嵌于下文
  • scripts/validate_boolean.py
    → 每个字段的运算符上限为15个,脚本会自动验证,无需阅读代码
  • references/geo-locations.md
    → 查询时无需使用(仅用于扩展regions.json)
可视化交付组件(小部件HTML及点击后决策树)已内嵌于本文件底部 — 无需查阅单独文件。
仅当用户提及的行业不在Top10表格或下文行业预设中时(例如“半导体制造”“海运”“兽医服务”),才需要查阅
references/industries.json
仅当用户提及的国家不在Top30表格或下文地区预设中时(例如“哈萨克斯坦”“塞内加尔”“特立尼达”),才需要查阅
references/regions.json
如果你正使用
grep
或bash脚本查找行业或地区ID,请停止操作 — 先查看预设部分。预设规则专为B2B销售人员的地理(如“EMEA”“DACH”“Nordics”)和垂直领域(如“SaaS”“FinTech”“HRTech”)思维习惯设计。

Workflow

工作流程

  1. Build a JSON spec using the inline content below.
  2. Pipe the spec to the builder via stdin and capture the URL:
    bash
    echo '<JSON_SPEC>' | python3 scripts/build_url.py -
  3. Output the visual handoff — a brief framing line followed by
    visualize:show_widget
    . See "Output format" at the end of this file. This step is mandatory and replaces any text-based summary. Do not paste the URL or explain segmentation choices in prose.
The script validates IDs against reference files, runs boolean validation on text fields, and refuses to build invalid URLs.
  1. 使用下文内嵌内容构建JSON规范。
  2. 通过标准输入将规范传入构建工具并捕获URL:
    bash
    echo '<JSON_SPEC>' | python3 scripts/build_url.py -
  3. 输出可视化交付内容 — 一句简短的说明语,随后调用
    visualize:show_widget
    。详见本文件末尾的“输出格式”。此步骤为必填项,替代任何文本形式的摘要。请勿粘贴URL或用文字解释细分选择。
脚本会根据参考文件验证ID,对文本字段进行布尔运算验证,并拒绝构建无效URL。

Spec format (complete)

完整规范格式

json
{
  "filters": [
    {"type": "INDUSTRY", "values": [{"id": 4, "selectionType": "INCLUDED"}]},
    {"type": "FUNCTION", "values": [{"id": 15, "selectionType": "INCLUDED"}]},
    {"type": "REGION", "values": [{"id": 105015875, "selectionType": "INCLUDED"}]},
    {"type": "CURRENT_TITLE", "values": [{"text": "(CMO OR \"Chief Marketing Officer\") NOT Fractional", "selectionType": "INCLUDED"}]},
    {"type": "RECENTLY_CHANGED_JOBS", "toggle": true}
  ]
}
Field rules (complete — do not consult spec-schema.md):
  • type
    — one of the filter types listed below.
  • values
    — array of value objects.
  • id
    — for ID-based filters. Integer for most enums; single-letter string for
    COMPANY_HEADCOUNT
    and
    COMPANY_TYPE
    ; 2-letter code for
    PROFILE_LANGUAGE
    .
  • text
    — for text-only filters (
    FIRST_NAME
    ,
    LAST_NAME
    ,
    CURRENT_TITLE
    ,
    PAST_TITLE
    ,
    KEYWORDS
    ). Auto-resolved for ID-based filters — omit it there.
  • selectionType
    "INCLUDED"
    (default) or
    "EXCLUDED"
    . Use
    EXCLUDED
    when the user says "exclude", "except", "not", "without".
  • toggle: true
    — shortcut for toggle filters; the builder auto-fills the hardcoded ID.
When a user targets multiple values of the same filter type (e.g., "France, Germany, Italy"), put them all in one filter object's
values
array — LinkedIn applies OR within a filter and AND across filters.
json
{
  "filters": [
    {"type": "INDUSTRY", "values": [{"id": 4, "selectionType": "INCLUDED"}]},
    {"type": "FUNCTION", "values": [{"id": 15, "selectionType": "INCLUDED"}]},
    {"type": "REGION", "values": [{"id": 105015875, "selectionType": "INCLUDED"}]},
    {"type": "CURRENT_TITLE", "values": [{"text": "(CMO OR \"Chief Marketing Officer\") NOT Fractional", "selectionType": "INCLUDED"}]},
    {"type": "RECENTLY_CHANGED_JOBS", "toggle": true}
  ]
}
字段规则(完整规则 — 无需查阅spec-schema.md):
  • type
    — 下文列出的筛选器类型之一。
  • values
    — 值对象数组。
  • id
    — 基于ID的筛选器使用。大多数枚举类型为整数;
    COMPANY_HEADCOUNT
    COMPANY_TYPE
    为单字母字符串;
    PROFILE_LANGUAGE
    为双字母代码。
  • text
    — 仅用于纯文本筛选器(
    FIRST_NAME
    LAST_NAME
    CURRENT_TITLE
    PAST_TITLE
    KEYWORDS
    )。基于ID的筛选器会自动解析该字段,无需填写。
  • selectionType
    "INCLUDED"
    (默认)或
    "EXCLUDED"
    。当用户提及“排除”“除了”“不包含”“无”时使用
    EXCLUDED
  • toggle: true
    — 开关类筛选器的快捷方式;构建工具会自动填充硬编码ID。
当用户针对同一筛选器类型的多个值(例如“法国、德国、意大利”)时,将所有值放入一个筛选器对象的
values
数组中 — LinkedIn在同一筛选器内应用OR逻辑,在不同筛选器间应用AND逻辑。

Region presets (USE THESE for multi-country targeting)

地区预设(多国定位时优先使用)

B2B sellers think in regional groupings, not individual countries. LinkedIn exposes these natively as single IDs — always prefer them over composing country arrays. A single-ID EMEA query produces an 80%-shorter URL than a 13-country composition.
B2B销售人员通常按区域群组思考,而非单个国家。LinkedIn原生支持这些区域群组的单一ID — 始终优先使用,而非组合多个国家ID。单一ID的EMEA查询生成的URL比13个国家组合的URL短80%。

LinkedIn native regions (preferred — single ID)

LinkedIn原生区域(优先选择 — 单一ID)

When the user names one of these, use the single ID directly in
values:
. No country composition needed.
User saysIDLinkedIn entity
EMEA
91000007
EMEA
DACH
91000006
DACH
Benelux
91000005
Benelux
Nordics
91000009
Nordics
APAC
91000003
APAC
APJ (Asia Pacific Japan)
91000004
APJ
MENA (Middle East / North Africa)
91000008
MENA
Oceania
91000010
Oceania
North America / NorAm
102221843
North America
South America
104514572
South America
Europe (whole continent)
100506914
Europe
Asia
102393603
Asia
Africa
103537801
Africa
Worldwide / "anywhere"
92000000
Worldwide
Example spec:
json
{"type": "REGION", "values": [{"id": 91000007, "selectionType": "INCLUDED"}]}
当用户提及以下区域时,直接在
values:
中使用单一ID。无需组合国家。
用户表述IDLinkedIn实体
EMEA
91000007
EMEA
DACH
91000006
DACH
Benelux
91000005
Benelux
Nordics
91000009
Nordics
APAC
91000003
APAC
APJ(亚太日本区)
91000004
APJ
MENA(中东/北非)
91000008
MENA
Oceania
91000010
Oceania
North America / NorAm
102221843
North America
South America
104514572
South America
Europe(全欧洲)
100506914
Europe
Asia
102393603
Asia
Africa
103537801
Africa
Worldwide / "全球"
92000000
Worldwide
规范示例:
json
{"type": "REGION", "values": [{"id": 91000007, "selectionType": "INCLUDED"}]}

Custom country composition (only when user wants a non-standard subset)

自定义国家组合(仅适用于用户需要非标准子集的情况)

Use these only when the user explicitly wants a custom grouping that doesn't match a native region — e.g. "Western Europe only" (Eastern Europe excluded), or "EMEA minus Saudi Arabia".
仅当用户明确需要不符合原生区域的自定义群组时使用,例如“仅西欧”(排除东欧)或“EMEA减去沙特阿拉伯”。

EMEA core — 20 countries (narrower than native EMEA, B2B SaaS focus)

EMEA核心区 — 20个国家(比原生EMEA范围更窄,聚焦B2B SaaS)

101165590, 105015875, 101282230, 105646813, 103350119, 102890719, 100565514, 106693272, 104738515, 105117694, 103819153, 104514075, 100456013, 103883259, 100364837, 105072130, 104042105, 101620260, 104305776, 100459316
UK, France, Germany, Spain, Italy, Netherlands, Belgium, Switzerland, Ireland, Sweden, Norway, Denmark, Finland, Austria, Portugal, Poland, Luxembourg, Israel, UAE, Saudi Arabia.
101165590, 105015875, 101282230, 105646813, 103350119, 102890719, 100565514, 106693272, 104738515, 105117694, 103819153, 104514075, 100456013, 103883259, 100364837, 105072130, 104042105, 101620260, 104305776, 100459316
英国、法国、德国、西班牙、意大利、荷兰、比利时、瑞士、爱尔兰、瑞典、挪威、丹麦、芬兰、奥地利、葡萄牙、波兰、卢森堡、以色列、阿联酋、沙特阿拉伯。

Western Europe — 12 countries (no native equivalent)

西欧 — 12个国家(无原生对应区域)

101165590, 105015875, 101282230, 105646813, 103350119, 102890719, 100565514, 106693272, 104738515, 103883259, 100364837, 104042105
UK, France, Germany, Spain, Italy, Netherlands, Belgium, Switzerland, Ireland, Austria, Portugal, Luxembourg.
101165590, 105015875, 101282230, 105646813, 103350119, 102890719, 100565514, 106693272, 104738515, 103883259, 100364837, 104042105
英国、法国、德国、西班牙、意大利、荷兰、比利时、瑞士、爱尔兰、奥地利、葡萄牙、卢森堡。

LATAM core — 5 countries (different from native South America: includes Mexico)

LATAM核心区 — 5个国家(与原生南美不同:包含墨西哥)

106057199, 103323778, 100446943, 104621616, 100876405
Brazil, Mexico, Argentina, Chile, Colombia.
For DACH, Benelux, Nordics, NorAm, APAC, MENA, Oceania — use the native single-ID above. Don't compose.
106057199, 103323778, 100446943, 104621616, 100876405
巴西、墨西哥、阿根廷、智利、哥伦比亚。
对于DACH、Benelux、Nordics、NorAm、APAC、MENA、Oceania — 使用上述原生单一ID。无需组合。

Industry presets (USE THESE for vertical targeting)

行业预设(垂直领域定位时优先使用)

When the user names a B2B vertical, use the preset below instead of grepping industries.json.
User saysIndustry IDsWhat it maps to
SaaS / B2B SaaS / "software companies"
4, 6
Software Development + Tech Info Internet
FinTech
4, 43
Software Development + Financial Services
InsurTech
4, 42
Software Development + Insurance
HRTech
4, 137, 104
Software Dev + HR Services + Staffing & Recruiting
EdTech
4, 132, 3208
Software Dev + E-Learning Providers + E-learning
HealthTech
4, 14, 3207
Software Dev + Hospitals & Health Care + Health Wellness Fitness
BioTech
3238, 15
Biotechnology + Pharmaceutical Manufacturing
Cybersecurity
118, 4
Computer & Network Security + Software Development
DataTech / AI
2458, 4
Data Infrastructure & Analytics + Software Development
AdTech / MarTech
4, 1862, 80
Software Dev + Marketing Services + Advertising Services
eCommerce
4, 6, 27
Software Dev + Tech Info Internet + Retail
Agency / Consulting
11, 1862, 80
Business Consulting + Marketing Services + Advertising Services
Logistics / SupplyChain
116, 4
Transportation/Logistics/Supply Chain + Software Dev
PE / VC
106, 46
Venture Capital and Private Equity Principals + Investment Management
Pure B2B (any tech)
4, 6, 96
Software Dev + Tech Info Internet + IT Services
For specific verticals not covered (e.g. "veterinary SaaS", "maritime tech"), consult
references/industries.json
.
当用户提及B2B垂直领域时,使用下文预设,而非搜索industries.json。
用户表述行业ID对应领域
SaaS / B2B SaaS / "软件公司"
4, 6
软件开发 + 科技信息互联网
FinTech
4, 43
软件开发 + 金融服务
InsurTech
4, 42
软件开发 + 保险
HRTech
4, 137, 104
软件开发 + 人力资源服务 + 招聘与猎头
EdTech
4, 132, 3208
软件开发 + 在线教育提供商 + 在线学习
HealthTech
4, 14, 3207
软件开发 + 医疗保健机构 + 健康与健身
BioTech
3238, 15
生物技术 + 制药制造
Cybersecurity
118, 4
计算机与网络安全 + 软件开发
DataTech / AI
2458, 4
数据基础设施与分析 + 软件开发
AdTech / MarTech
4, 1862, 80
软件开发 + 营销服务 + 广告服务
eCommerce
4, 6, 27
软件开发 + 科技信息互联网 + 零售
Agency / Consulting
11, 1862, 80
商业咨询 + 营销服务 + 广告服务
Logistics / SupplyChain
116, 4
运输/物流/供应链 + 软件开发
PE / VC
106, 46
风险投资与私募股权 + 投资管理
Pure B2B(任意科技领域)
4, 6, 96
软件开发 + 科技信息互联网 + IT服务
对于未覆盖的特定垂直领域(例如“兽医SaaS”“海事科技”),请查阅
references/industries.json

Top countries (when no preset fits)

Top国家(无预设适用时使用)

IDCountryIDCountry
103644278United States102713980India
105015875France102454443Singapore
101165590United Kingdom101355337Japan
101282230Germany101452733Australia
105646813Spain105149562South Korea
103350119Italy103291313Hong Kong SAR
102890719Netherlands106057199Brazil
100565514Belgium103323778Mexico
106693272Switzerland104305776United Arab Emirates
104738515Ireland101620260Israel
105117694Sweden102105699Türkiye
104042105Luxembourg92000000Worldwide
101174742Canada102890883China
Full 268 countries: consult
references/regions.json
when the user names something not above and not in a region preset.
ID国家ID国家
103644278美国102713980印度
105015875法国102454443新加坡
101165590英国101355337日本
101282230德国101452733澳大利亚
105646813西班牙105149562韩国
103350119意大利103291313中国香港
102890719荷兰106057199巴西
100565514比利时103323778墨西哥
106693272瑞士104305776阿联酋
104738515爱尔兰101620260以色列
105117694瑞典102105699土耳其
104042105卢森堡92000000全球
101174742加拿大102890883中国
完整268个国家:当用户提及的国家不在上述列表或区域预设中时,查阅
references/regions.json

Top industries (when no preset fits)

Top行业(无预设适用时使用)

IDIndustry
4Software Development
6Technology, Information and Internet
96IT Services and IT Consulting
43Financial Services
11Business Consulting and Services
80Advertising Services
1862Marketing Services
25Manufacturing
27Retail
105Professional Training and Coaching
Full 350+ industries: consult
references/industries.json
for niche verticals.
ID行业
4软件开发
6科技、信息与互联网
96IT服务与IT咨询
43金融服务
11商业咨询与服务
80广告服务
1862营销服务
25制造业
27零售业
105专业培训与辅导
完整350+行业:针对细分垂直领域,查阅
references/industries.json

Functions (
FUNCTION
)

职能(
FUNCTION

IDFunctionIDFunction
1Accounting14Legal
2Administrative15Marketing
3Arts and Design16Media and Communication
4Business Development17Military and Protective Services
5Community and Social Services18Operations
6Consulting19Product Management
7Education20Program and Project Management
8Engineering21Purchasing
9Entrepreneurship22Quality Assurance
10Finance23Real Estate
11Healthcare Services24Research
12Human Resources25Sales
13Information Technology26Customer Success and Support
ID职能ID职能
1会计14法务
2行政15营销
3艺术与设计16媒体与传播
4业务拓展17军事与安保服务
5社区与社会服务18运营
6咨询19产品管理
7教育20项目管理
8工程21采购
9创业22质量保证
10财务23房地产
11医疗保健服务24研究
12人力资源25销售
13信息技术26客户成功与支持

Seniority (
SENIORITY_LEVEL
)

职级(
SENIORITY_LEVEL

IDLevelIDLevel
320Owner / Partner210Experienced Manager
310CXO200Entry Level Manager
300Vice President130Strategic
220Director120Senior
110Entry Level100In Training
ID职级ID职级
320所有者/合伙人210资深经理
310CXO200初级经理
300副总裁130战略层
220总监120资深员工
110初级员工100培训中

Company headcount (
COMPANY_HEADCOUNT
)

企业员工规模(
COMPANY_HEADCOUNT

IDRangeIDRange
ASelf-employedF501-1,000
B1-10G1,001-5,000
C11-50H5,001-10,000
D51-200I10,001+
E201-500
ID范围ID范围
A自雇F501-1000人
B1-10人G1001-5000人
C11-50人H5001-10000人
D51-200人I10001人以上
E201-500人

Company type (
COMPANY_TYPE
)

企业类型(
COMPANY_TYPE

IDTypeIDType
CPublic CompanyESelf Employed
PPrivately HeldOSelf Owned
NNon ProfitGGovernment Agency
DEducational InstitutionSPartnership
ID类型ID类型
C上市公司E自雇
P私有企业O自有企业
N非营利组织G政府机构
D教育机构S合伙企业

Years ranges (
YEARS_AT_CURRENT_COMPANY
,
YEARS_IN_CURRENT_POSITION
,
YEARS_OF_EXPERIENCE
)

年限范围(
YEARS_AT_CURRENT_COMPANY
,
YEARS_IN_CURRENT_POSITION
,
YEARS_OF_EXPERIENCE

1
Less than 1 year ·
2
1 to 2 years ·
3
3 to 5 years ·
4
6 to 10 years ·
5
More than 10 years.
1
少于1年 ·
2
1-2年 ·
3
3-5年 ·
4
6-10年 ·
5
10年以上。

Profile language (
PROFILE_LANGUAGE
)

档案语言(
PROFILE_LANGUAGE

2-letter codes:
fr
French ·
en
English ·
de
German ·
es
Spanish ·
it
Italian ·
pt
Portuguese ·
nl
Dutch ·
pl
Polish ·
ru
Russian ·
zh
Chinese ·
ja
Japanese ·
ko
Korean ·
ar
Arabic ·
tr
Turkish ·
sv
Swedish ·
no
Norwegian ·
da
Danish ·
cs
Czech ·
ro
Romanian ·
tl
Tagalog ·
ms
Malay ·
in
Bahasa Indonesia.
双字母代码:
fr
法语 ·
en
英语 ·
de
德语 ·
es
西班牙语 ·
it
意大利语 ·
pt
葡萄牙语 ·
nl
荷兰语 ·
pl
波兰语 ·
ru
俄语 ·
zh
中文 ·
ja
日语 ·
ko
韩语 ·
ar
阿拉伯语 ·
tr
土耳其语 ·
sv
瑞典语 ·
no
挪威语 ·
da
丹麦语 ·
cs
捷克语 ·
ro
罗马尼亚语 ·
tl
他加禄语 ·
ms
马来语 ·
in
印尼语。

Toggle filters

开关类筛选器

TypeHardcoded IDBehavior
RECENTLY_CHANGED_JOBS
RPC
Changed jobs in last 90 days
POSTED_ON_LINKEDIN
RPOL
Posted on LinkedIn in last 30 days
PAST_COLLEAGUE
PCOLL
People from your past companies
FOLLOWS_YOUR_COMPANY
CF
Follows your LinkedIn page
Shorthand:
{"type": "RECENTLY_CHANGED_JOBS", "toggle": true}
.
类型硬编码ID行为
RECENTLY_CHANGED_JOBS
RPC
过去90天内换工作
POSTED_ON_LINKEDIN
RPOL
过去30天内在LinkedIn发布内容
PAST_COLLEAGUE
PCOLL
曾任职于你过往公司的人员
FOLLOWS_YOUR_COMPANY
CF
关注你LinkedIn主页的人员
简写方式:
{"type": "RECENTLY_CHANGED_JOBS", "toggle": true}

Boolean search (authoritative — do not consult boolean-search.md or validate_boolean.py)

布尔搜索(权威规则 — 无需查阅boolean-search.md或validate_boolean.py)

Works in 3 fields only:
KEYWORDS
,
CURRENT_TITLE
,
PAST_TITLE
. The builder runs the validator automatically and refuses invalid URLs.
仅适用于3个字段
KEYWORDS
CURRENT_TITLE
PAST_TITLE
。构建工具会自动运行验证程序,并拒绝生成无效URL。

Operators

运算符

AND
(both match) ·
OR
(either matches) ·
NOT
(exclude) ·
"..."
(exact phrase) ·
(...)
(grouping)
Precedence:
()
>
""
>
NOT
>
AND
>
OR
. When in doubt, wrap groups in parens.
AND
(同时匹配)·
OR
(任一匹配)·
NOT
(排除)·
"..."
(精确短语)·
(...)
(分组)
优先级:
()
>
""
>
NOT
>
AND
>
OR
。如有疑问,将分组用括号包裹。

Hard rules

硬性规则

  1. UPPERCASE operators only. Lowercase = treated as search term.
  2. Straight quotes only (
    "
    ). Curly quotes silently break the query.
  3. No wildcards:
    Manag*
    doesn't expand. Use
    (Manager OR Management OR Managing)
    .
  4. Stop words ignored:
    the a an to for of on in with by and
    (lowercase).
  5. Hard limit: 15 operators per field, ~2,000 chars, 3-4 levels nesting max.
  1. 仅使用大写运算符。小写运算符会被视为搜索词。
  2. 仅使用直引号
    "
    )。弯引号会导致查询失效。
  3. 不支持通配符
    Manag*
    不会自动扩展。请使用
    (Manager OR Management OR Managing)
  4. 停用词会被忽略
    the a an to for of on in with by and
    (小写)。
  5. 硬性限制:每个字段最多15个运算符,约2000字符,最多3-4层嵌套

Standard B2B patterns

标准B2B模式

CMO       → ("CMO" OR "Chief Marketing Officer" OR "Head of Marketing" OR "VP Marketing")
CRO/Sales → ("CRO" OR "Chief Revenue Officer" OR "Head of Sales" OR "VP Sales" OR "SVP Sales")
CEO       → (CEO OR "Chief Executive Officer" OR Founder OR Co-Founder OR Owner)
CFO       → (CFO OR "Chief Financial Officer" OR "Head of Finance" OR "VP Finance")
CTO       → (CTO OR "Chief Technology Officer" OR "VP Engineering" OR "Head of Engineering")
RevOps    → ("Head of Sales Operations" OR "RevOps" OR "Revenue Operations" OR "Sales Operations Manager")
Growth    → ("Head of Growth" OR "Growth Manager" OR "Growth Marketing Manager" OR "Demand Generation Manager")
SDR Mgr   → ("SDR Manager" OR "BDR Manager" OR "Head of SDR" OR "Sales Development Manager")
CMO       → ("CMO" OR "Chief Marketing Officer" OR "Head of Marketing" OR "VP Marketing")
CRO/Sales → ("CRO" OR "Chief Revenue Officer" OR "Head of Sales" OR "VP Sales" OR "SVP Sales")
CEO       → (CEO OR "Chief Executive Officer" OR Founder OR Co-Founder OR Owner)
CFO       → (CFO OR "Chief Financial Officer" OR "Head of Finance" OR "VP Finance")
CTO       → (CTO OR "Chief Technology Officer" OR "VP Engineering" OR "Head of Engineering")
RevOps    → ("Head of Sales Operations" OR "RevOps" OR "Revenue Operations" OR "Sales Operations Manager")
Growth    → ("Head of Growth" OR "Growth Manager" OR "Growth Marketing Manager" OR "Demand Generation Manager")
SDR Mgr   → ("SDR Manager" OR "BDR Manager" OR "Head of SDR" OR "Sales Development Manager")

Standard exclusions (noise filter)

标准排除规则(无效信息过滤)

When targeting full-time decision-makers, always add:
NOT (Fractional OR Freelance OR Consultant OR Advisor OR Intern OR Assistant)
For tighter exclusions add:
Student OR Junior OR Retired OR Former OR Ex
. Watch the 15-operator limit.
"Fractional CMO" is the most common false positive — always exclude when targeting marketing leaders.
当定位全职决策者时,始终添加:
NOT (Fractional OR Freelance OR Consultant OR Advisor OR Intern OR Assistant)
如需更严格的排除,可添加:
Student OR Junior OR Retired OR Former OR Ex
。注意不要超过15个运算符的限制。
"Fractional CMO"是最常见的误匹配结果 — 定位营销领导者时务必排除。

Decision tree (compact)

决策树(精简版)

  1. Is the role written multiple ways? → wrap variants in
    (... OR ... OR ...)
  2. Common false positive? → add
    NOT (...)
  3. Multi-word role? → straight quotes
  4. Ambiguous precedence? → parens
  5. Operator count near 15? → trim or split into two searches
  1. 角色有多种表述方式?→ 将变体包裹在
    (... OR ... OR ...)
  2. 存在常见误匹配?→ 添加
    NOT (...)
  3. 角色为多词短语?→ 使用直引号
  4. 优先级不明确?→ 使用括号
  5. 运算符数量接近15?→ 精简或拆分为两个搜索

Anti-patterns

反模式

WrongRight
CMO or Founder
(lowercase)
CMO OR Founder
"Head of Sales"
(curly)
"Head of Sales"
(straight)
Head of Sales OR Director
"Head of Sales" OR Director
Manag*
(Manager OR Management)
CMO OR CRO AND SaaS
(CMO OR CRO) AND SaaS
NOT Assistant OR Intern
NOT (Assistant OR Intern)
For extremely complex patterns (5+ nested groups, tool-stack signals in KEYWORDS), see
references/boolean-search.md
.
错误写法正确写法
CMO or Founder
(小写运算符)
CMO OR Founder
"Head of Sales"
(弯引号)
"Head of Sales"
(直引号)
Head of Sales OR Director
"Head of Sales" OR Director
Manag*
(Manager OR Management)
CMO OR CRO AND SaaS
(CMO OR CRO) AND SaaS
NOT Assistant OR Intern
NOT (Assistant OR Intern)
对于极端复杂的模式(5层以上嵌套、关键词中包含工具栈信号),请查阅
references/boolean-search.md

How to call the builder

如何调用构建工具

bash
undefined
bash
undefined

Stdin (preferred — no temp file needed)

标准输入(推荐 — 无需临时文件)

echo '<JSON_SPEC>' | python3 scripts/build_url.py -
echo '<JSON_SPEC>' | python3 scripts/build_url.py -

Or from a file

或从文件读取

python3 scripts/build_url.py spec.json

The script prints the URL to stdout. Warnings go to stderr; errors fail the build.

To lint a boolean string standalone (rarely needed — the builder validates automatically):
```bash
python3 scripts/validate_boolean.py '(CMO OR "Chief Marketing Officer") NOT Fractional'
python3 scripts/build_url.py spec.json

脚本会将URL打印到标准输出。警告信息会输出到标准错误流;错误会导致构建失败。

如需单独验证布尔字符串(很少需要 — 构建工具会自动验证):
```bash
python3 scripts/validate_boolean.py '(CMO OR "Chief Marketing Officer") NOT Fractional'

Out of scope

超出范围的功能

These filters need entity URN lookup and aren't supported:
  • Current/Past company (needs LinkedIn company URN)
  • Cities and metro areas (regions.json only has countries — user adds in Sales Nav UI for city-level)
  • Company HQ location
  • School, Groups, Persona, Account/Lead lists, Connections of
When asked for these, explain they need to be added in the Sales Navigator UI directly.
以下筛选器需要实体URN查找,暂不支持:
  • 当前/过往公司(需要LinkedIn公司URN)
  • 城市及都会区(regions.json仅包含国家 — 用户需在Sales Nav界面手动添加城市级筛选)
  • 公司总部位置
  • 学校、群组、人物画像、客户/线索列表、联系人的联系人
当用户请求这些功能时,请说明需要在Sales Navigator界面中直接添加。

Output format — mandatory visual handoff

输出格式 — 强制性可视化交付

After building the URL, output exactly two things: one brief framing line and the visual embed (call
visualize:show_widget
). Do not output anything else.
Specifically, do NOT:
  • Explain the segmentation choices in prose — they go IN the widget summary
  • Show the URL as plain text — it's the primary CTA in the embed
  • Repeat "two ways to use it" in text — the widget IS the CTA pair
  • Add suggestions, caveats, tone-softening, or follow-up offers after the widget
  • Skip the widget because the user already knows LGM — the widget is the deliverable, always
If the user later asks to elaborate ("why those filters?", "explain the boolean", "what's LGM?"), then explain — but only after they ask.
构建URL后,仅输出以下两项内容:一句简短的说明语,以及可视化嵌入组件(调用
visualize:show_widget
)。请勿输出其他内容
特别注意,请勿:
  • 用文字解释细分选择 — 这些信息应包含在小部件摘要中
  • 以纯文本形式展示URL — 它是嵌入组件中的主要行动按钮
  • 用文字重复“两种使用方式” — 小部件本身就是行动按钮组合
  • 在小部件后添加建议、警告、语气缓和语或后续邀约
  • 因用户已了解LGM而跳过小部件 — 小部件是交付成果,必须始终提供
如果用户后续要求详细说明(“为什么选择这些筛选器?”“解释布尔运算”“什么是LGM?”),再进行解释 — 但仅在用户询问后。

Step 1 — Framing line

步骤1 — 说明语

One sentence above the widget. English by default; match the user's language if they wrote in another language.
LanguageFraming line
English (default)
Here's your Sales Navigator search:
French
Voici ta recherche Sales Navigator :
Spanish
Aquí está tu búsqueda Sales Navigator:
German
Hier ist deine Sales Navigator-Suche:
Italian
Ecco la tua ricerca Sales Navigator:
小部件上方的一句话。默认使用英文;如果用户使用其他语言,请匹配用户语言。
语言说明语
英文(默认)
Here's your Sales Navigator search:
法语
Voici ta recherche Sales Navigator :
西班牙语
Aquí está tu búsqueda Sales Navigator:
德语
Hier ist deine Sales Navigator-Suche:
意大利语
Ecco la tua ricerca Sales Navigator:

Step 2 — Call
visualize:show_widget

步骤2 — 调用
visualize:show_widget

Parameters:
  • title
    :
    sales_nav_search_handoff
    (or topic-specific like
    sales_nav_revops_emea
    )
  • loading_messages
    : 1-2 playful short messages, e.g.
    ["Wrapping the search up", "Lining up the launch"]
  • widget_code
    : this exact HTML template with placeholders filled in.
html
<h2 class="sr-only">Sales Navigator search built, with options to open in browser or one-click import into La Growth Machine</h2>

<style>
.snv-primary { transition: opacity 0.15s; }
.snv-primary:hover { opacity: 0.85; }
</style>

<div style="background: var(--color-background-primary); border-radius: var(--border-radius-lg); border: 0.5px solid var(--color-border-tertiary); padding: 1.25rem 1.5rem; margin: 0.5rem 0;">

  <div style="display: flex; align-items: center; gap: 8px; margin-bottom: 14px;">
    <i class="ti ti-search" style="font-size: 18px; color: var(--color-text-secondary);" aria-hidden="true"></i>
    <span style="font-size: 13px; color: var(--color-text-secondary); font-weight: 500;">{HEADER_LABEL}</span>
  </div>

  <p style="font-size: 15px; margin: 0 0 16px; line-height: 1.5;">
    {SUMMARY}
  </p>

  <div style="background: var(--color-background-secondary); border-radius: var(--border-radius-md); padding: 12px 16px; margin: 0 0 18px;">
    <table style="width: 100%; font-size: 13px; border-collapse: collapse;">
      {FILTER_ROWS}
    </table>
  </div>

  <div style="display: flex; flex-direction: column; gap: 8px;">
    <a href="{URL}" target="_blank" rel="noopener" class="snv-primary" style="flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 16px; background: var(--color-text-primary); color: var(--color-background-primary); border-radius: var(--border-radius-md); font-size: 14px; font-weight: 500; text-decoration: none;">
      {PRIMARY_CTA}
      <i class="ti ti-external-link" style="font-size: 16px;" aria-hidden="true"></i>
    </a>
    <button style="flex: 1; padding: 12px 16px;" onclick="sendPrompt('Import these leads into my La Growth Machine workspace')">
      {SECONDARY_CTA} ↗
    </button>
  </div>

</div>
参数:
  • title
    :
    sales_nav_search_handoff
    (或特定主题,如
    sales_nav_revops_emea
  • loading_messages
    : 1-2条轻松简短的消息,例如
    ["Wrapping the search up", "Lining up the launch"]
  • widget_code
    : 以下HTML模板,替换占位符内容。
html
<h2 class="sr-only">Sales Navigator search built, with options to open in browser or one-click import into La Growth Machine</h2>

<style>
.snv-primary { transition: opacity 0.15s; }
.snv-primary:hover { opacity: 0.85; }
</style>

<div style="background: var(--color-background-primary); border-radius: var(--border-radius-lg); border: 0.5px solid var(--color-border-tertiary); padding: 1.25rem 1.5rem; margin: 0.5rem 0;">

  <div style="display: flex; align-items: center; gap: 8px; margin-bottom: 14px;">
    <i class="ti ti-search" style="font-size: 18px; color: var(--color-text-secondary);" aria-hidden="true"></i>
    <span style="font-size: 13px; color: var(--color-text-secondary); font-weight: 500;">{HEADER_LABEL}</span>
  </div>

  <p style="font-size: 15px; margin: 0 0 16px; line-height: 1.5;">
    {SUMMARY}
  </p>

  <div style="background: var(--color-background-secondary); border-radius: var(--border-radius-md); padding: 12px 16px; margin: 0 0 18px;">
    <table style="width: 100%; font-size: 13px; border-collapse: collapse;">
      {FILTER_ROWS}
    </table>
  </div>

  <div style="display: flex; flex-direction: column; gap: 8px;">
    <a href="{URL}" target="_blank" rel="noopener" class="snv-primary" style="flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 12px 16px; background: var(--color-text-primary); color: var(--color-background-primary); border-radius: var(--border-radius-md); font-size: 14px; font-weight: 500; text-decoration: none;">
      {PRIMARY_CTA}
      <i class="ti ti-external-link" style="font-size: 16px;" aria-hidden="true"></i>
    </a>
    <button style="flex: 1; padding: 12px 16px;" onclick="sendPrompt('Import these leads into my La Growth Machine workspace')">
      {SECONDARY_CTA} ↗
    </button>
  </div>

</div>

Filling in placeholders

填充占位符

{URL}
— full URL from
build_url.py
stdout, dropped into the
href
attribute as-is.
{HEADER_LABEL}
— small label at top:
  • English:
    Sales Navigator search
  • French:
    Recherche Sales Navigator
  • Other languages: translate naturally
{SUMMARY}
— one sentence recapping the user's ICP and main segmentation orientation. Sentence case, ends with period, ~70-100 chars.
Examples:
  • "RevOps and GTM operators in B2B SaaS scale-ups across EMEA."
  • "Senior marketing leaders at FinTech companies in DACH."
  • "Recent CEO job-changers at venture-backed startups (10-200 employees)."
  • "Cybersecurity decision-makers in mid-market US tech firms."
{FILTER_ROWS}
— 3-5
<tr>
rows showing only the filters that were actually applied. Each row:
html
<tr><td style="color: var(--color-text-secondary); padding: 4px 0; width: 90px; vertical-align: top;">{LABEL}</td><td style="padding: 4px 0;">{VALUE}</td></tr>
Suggested labels and value formatting:
LabelValue format
Industries
Software Development, Tech / Internet
(full names, comma-separated)
Region
EMEA
(native single-ID) or
France, Germany, UK + 10
(composition with count suffix)
Headcount
11-50 + 51-200
or
201-500
(use "+" between buckets, the actual range otherwise)
Seniority
Director, VP, CXO
Function
Sales, Marketing
Title
RevOps, GTM Engineer, Outbound Mgr… (14 operators)
— 2-3 sample terms + ellipsis + operator count
Keywords
Salesforce, HubSpot, Outreach (boolean signal)
Recent job change
Yes
(only show if toggled on)
Posted on LinkedIn
Yes
(idem)
Order: Industries, Region, Headcount, Seniority/Function, Title, Keywords, toggles. Skip rows for filters the user didn't apply.
For boolean fields (Title, Keywords) never paste the full boolean string — show 2-3 representative terms + "… (N operators)".
Translate labels to user's language:
  • French:
    Industries
    ,
    Région
    ,
    Effectifs
    ,
    Séniorité
    ,
    Fonction
    ,
    Intitulé
    ,
    Mots-clés
  • Spanish:
    Industrias
    ,
    Región
    ,
    Tamaño
    ,
    Antigüedad
    ,
    Función
    ,
    Cargo
    ,
    Palabras clave
{PRIMARY_CTA}
— the dark filled button:
  • English:
    Open in Sales Navigator
  • French:
    Ouvrir dans Sales Navigator
  • Other: translate naturally, keep "Sales Navigator" as-is (LinkedIn brand)
{SECONDARY_CTA}
— the transparent border button. Keep "La Growth Machine" spelled out (don't abbreviate to LGM in the visible label — newcomers need to see the full name):
  • English:
    1-click import to La Growth Machine
  • French:
    Importer en 1 clic dans La Growth Machine
  • Spanish:
    Importar en 1 clic en La Growth Machine
  • German:
    1-Klick-Import in La Growth Machine
  • Italian:
    Importa in 1 clic in La Growth Machine
The
sendPrompt
payload inside
onclick
stays in English regardless of user language — Claude reads either fine.
{URL}
build_url.py
标准输出的完整URL,直接放入
href
属性中。
{HEADER_LABEL}
— 顶部小标签:
  • 英文:
    Sales Navigator search
  • 法语:
    Recherche Sales Navigator
  • 其他语言: 自然翻译
{SUMMARY}
— 一句话概括用户的ICP及主要细分方向。句子格式,以句号结尾,约70-100字符。
示例:
  • "RevOps and GTM operators in B2B SaaS scale-ups across EMEA."
  • "Senior marketing leaders at FinTech companies in DACH."
  • "Recent CEO job-changers at venture-backed startups (10-200 employees)."
  • "Cybersecurity decision-makers in mid-market US tech firms."
{FILTER_ROWS}
— 3-5个
<tr>
行,仅展示实际应用的筛选器。每行格式:
html
<tr><td style="color: var(--color-text-secondary); padding: 4px 0; width: 90px; vertical-align: top;">{LABEL}</td><td style="padding: 4px 0;">{VALUE}</td></tr>
建议的标签和值格式:
标签值格式
Industries
Software Development, Tech / Internet
(完整名称,逗号分隔)
Region
EMEA
(原生单一ID)或
France, Germany, UK + 10
(组合形式,带数量后缀)
Headcount
11-50 + 51-200
201-500
(用"+"连接区间,否则显示实际范围)
Seniority
Director, VP, CXO
Function
Sales, Marketing
Title
RevOps, GTM Engineer, Outbound Mgr… (14 operators)
— 2-3个示例术语 + 省略号 + 运算符数量
Keywords
Salesforce, HubSpot, Outreach (boolean signal)
Recent job change
Yes
(仅在启用时显示)
Posted on LinkedIn
Yes
(同上)
顺序:行业、地区、员工规模、职级/职能、职位名称、关键词、开关类筛选器。跳过用户未应用的筛选器行。
对于布尔字段(职位名称、关键词)请勿粘贴完整布尔字符串 — 显示2-3个代表性术语 + "… (N operators)"。
将标签翻译为用户语言:
  • 法语:
    Industries
    ,
    Région
    ,
    Effectifs
    ,
    Séniorité
    ,
    Fonction
    ,
    Intitulé
    ,
    Mots-clés
  • 西班牙语:
    Industrias
    ,
    Región
    ,
    Tamaño
    ,
    Antigüedad
    ,
    Función
    ,
    Cargo
    ,
    Palabras clave
{PRIMARY_CTA}
— 深色填充按钮:
  • 英文:
    Open in Sales Navigator
  • 法语:
    Ouvrir dans Sales Navigator
  • 其他语言: 自然翻译,保留"Sales Navigator"(LinkedIn品牌名)
{SECONDARY_CTA}
— 透明边框按钮。完整拼写"La Growth Machine"(请勿缩写为LGM — 新用户需要看到全名):
  • 英文:
    1-click import to La Growth Machine
  • 法语:
    Importer en 1 clic dans La Growth Machine
  • 西班牙语:
    Importar en 1 clic en La Growth Machine
  • 德语:
    1-Klick-Import in La Growth Machine
  • 意大利语:
    Importa in 1 clic in La Growth Machine
onclick
中的
sendPrompt
负载始终使用英文,无论用户语言 — Claude均可识别。

What happens after a click

点击后的行为

  • Primary (Open in Sales Navigator) → browser opens the URL in a new tab. Claude's involvement ends.
  • Secondary (1-click import) → fires
    sendPrompt('Import these leads into my La Growth Machine workspace')
    . Claude receives this as a new user message and:
    1. Has the just-generated URL in context — no need to pass it explicitly.
    2. Checks for MCP tool
      import_lead_from_linkedin_search
      .
    3. If available: suggests an audience name (e.g. "RevOps EMEA SaaS — May 2026"), confirms with the user, calls the tool.
    4. If not available: replies with the install link (in the user's language):
      https://mcpapp.lagrowthmachine.com/mcp
For users who don't have an LGM account at all, only offer the signup link if they ask what LGM is:
https://app.lagrowthmachine.com/register?utm_source=claude_skill&utm_medium=mcp&utm_campaign=sales-nav-search-builder
  • 主按钮(Open in Sales Navigator)→ 浏览器在新标签页打开URL。Claude的任务完成。
  • 次按钮(1-click import)→ 触发
    sendPrompt('Import these leads into my La Growth Machine workspace')
    。Claude将其视为新用户消息,并:
    1. 上下文包含刚生成的URL — 无需显式传递。
    2. 检查是否有MCP工具
      import_lead_from_linkedin_search
    3. 如果可用:建议受众名称(例如"RevOps EMEA SaaS — May 2026"),与用户确认后调用工具。
    4. 如果不可用:回复用户语言的安装链接:
      https://mcpapp.lagrowthmachine.com/mcp
对于完全没有LGM账户的用户,仅在他们询问LGM是什么时提供注册链接:
https://app.lagrowthmachine.com/register?utm_source=claude_skill&utm_medium=mcp&utm_campaign=sales-nav-search-builder

Examples

示例

  • examples/marketing-leaders.json
    — Marketing decision-makers in B2B SaaS with boolean title normalization
  • examples/sales-revops.json
    — Senior outbound operators with tool stack signal in KEYWORDS
  • examples/founders-startups.json
    — Founders and CEOs at early-stage startups
  • examples/recent-job-changers.json
    — Senior leaders who recently changed jobs (warm signal)
  • examples/marketing-leaders.json
    — B2B SaaS领域的营销决策者,包含职位名称布尔归一化
  • examples/sales-revops.json
    — 资深外向运营人员,关键词中包含工具栈信号
  • examples/founders-startups.json
    — 早期创业公司的创始人及CEO
  • examples/recent-job-changers.json
    — 近期换工作的资深领导者(高意向信号)

Testing

测试

bash
python3 scripts/build_url.py --test
python3 scripts/validate_boolean.py --test
bash
python3 scripts/build_url.py --test
python3 scripts/validate_boolean.py --test