# Sales nav search builder Human Guide

## What This Is For
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. It gives the agent a clearer input/output frame for go-to-market work: what context to ask for, what decisions to make, and what usable artifact to return.

Use this as a human-readable version of the Sales nav search builder agent skill. It is meant for marketers, operators, founders, and other non-coders who want the workflow without reading agent-specific implementation instructions.

## When To Use This
- Use this when you need a repeatable process for sales nav search builder.
- Use this when the task needs judgment, examples, constraints, or a clear output format rather than a one-off prompt.
- Use this when you want to hand an AI assistant enough context to produce a usable marketing artifact.

## When Not To Use This
- Do not use this when you only need a quick factual answer.
- Do not use this when the work depends on private data you cannot share with the assistant.
- Do not use this as a replacement for legal, compliance, financial, or medical review.

## What You Need Before Starting
- The goal or business outcome you want.
- The audience, customer segment, or market context.
- Any source material the assistant should respect, such as notes, briefs, examples, URLs, or brand guidance.
- Constraints such as tone, length, channel, deadline, region, or approval requirements.
- A clear definition of what a good final answer should look like.

## Step-By-Step Workflow
1. State the job clearly: "Use the Sales nav search builder guide to help me with..."
2. Add context: audience, goal, offer, channel, source material, and constraints.
3. Ask the assistant to identify missing inputs before producing the final output.
4. Have the assistant follow the skill-specific guidance below.
5. Review the result against the final checklist and ask for revisions where needed.

## Skill-Specific Guidance
- `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)
- Build a JSON spec using the inline content below.
- Pipe the spec to the builder via stdin and capture the URL:
- `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.

## Decision Points And Nuance
The original skill emphasizes: Authority — read this first, Workflow, Spec format (complete), Region presets (USE THESE for multi-country targeting), LinkedIn native regions (preferred — single ID), Custom country composition (only when user wants a non-standard subset), EMEA core — 20 countries (narrower than native EMEA, B2B SaaS focus), Western Europe — 12 countries (no native equivalent), LATAM core — 5 countries (different from native South America: includes Mexico), Industry presets (USE THESE for vertical targeting).

Use these questions to steer the work:
- What is the intended audience or buyer?
- What source material must be preserved?
- What should the assistant optimize for: clarity, persuasion, accuracy, speed, creativity, or conversion?
- What examples represent the desired quality bar?
- What should the assistant avoid?

## Common Mistakes
- **You do NOT need to consult these files** — they're already inlined here:
- **Field rules** (complete — do not consult spec-schema.md):
- For DACH, Benelux, Nordics, NorAm, APAC, MENA, Oceania — use the native single-ID above. Don't compose.
- Boolean search (authoritative — do not consult boolean-search.md or validate_boolean.py)
- The script prints the URL to stdout. Warnings go to stderr; errors fail the build.
- 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.**
- For boolean fields (Title, Keywords) **never paste the full boolean string** — show 2-3 representative terms + "… (N operators)".
- **`{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):

## Copy-And-Paste Prompt
```text
Use the Sales nav search builder human guide.

My goal:
[Describe the business outcome]

Audience:
[Describe who this is for]

Context and source material:
[Paste notes, examples, links, or existing copy]

Constraints:
[Tone, length, channel, timeline, must-include items, must-avoid items]

Before producing the final output, ask me for any missing information that would materially improve the result.
```

## Final Checklist
- [ ] The output matches the original goal.
- [ ] The audience and context are reflected in the answer.
- [ ] Important constraints and source material were preserved.
- [ ] The assistant made the relevant decisions explicit.
- [ ] The final artifact is ready to use, review, or hand to the next person.

## Source
This guide was generated from the lagrowthmachine/gtm-system skill entry for `sales-nav-search-builder`.

## Source Skill Notes
These notes preserve the nuance from the original skill. Use them as supporting reference when the workflow above feels too generic.

# Sales Nav Search Builder

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](https://lagrowthmachine.com).

## 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").

## 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.

## 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.

## 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.

### LinkedIn native regions (preferred — single ID)

When the user names one of these, use the single ID directly in `values:`. No country composition needed.

| User says | ID | LinkedIn 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 |
