---
aliases: ["Boolean Search Builder"]
tags: [pm-skills, skill]
skill: boolean-search-builder
description: "Build boolean and X-ray search strings to source candidates. Use when asked to build a boolean search, source candidates on LinkedIn/Google, write an X-ray search, or find people with specific skills. Produces ready-to-paste boolean strings (with synonyms, must-haves, and exclusions), X-ray variants for LinkedIn/GitHub, and a refinement plan to widen or narrow the result set."
---

# Boolean Search Builder Skill

Great sourcing starts with a precise search. The skill is turning a role into the right combination of
**synonyms** (titles and skills people actually use), **must-haves**, and **exclusions** — then refining as the
results come back. This skill writes those strings, including X-ray searches that reach profiles via Google, and
a plan to tune the funnel.

## Working from a brief

Given "find senior backend engineers in Berlin", **build the strings anyway** — infer the likely title and
skill synonyms, seniority signals, and sensible exclusions, labelling assumptions. Provide both a tight and a
broad version. Never hand back questions instead of usable strings.

## Required Inputs

Ask for these only if they aren't already provided (else infer and label):

- **The role** — title(s), seniority, and the core skills/tools that define a fit.
- **Must-haves vs. nice-to-haves** — non-negotiables vs. signals that just boost.
- **Filters** — location (and remote?), industry, language, or other constraints.
- **Where you'll search** — LinkedIn, a job board, GitHub, or general web (X-ray).

## Output Format

### Sourcing Search: [role]

**1. Keyword map** — the building blocks before the string:
- **Titles** (with synonyms/variants), **Skills/tools** (with synonyms), **Seniority signals**, **Exclusions** (junior, recruiter, intern, unrelated meanings).

**2. Boolean strings** — ready to paste:
- **Tight** (high precision) and **Broad** (high recall) versions, using `AND` / `OR` / `NOT` / quotes / parentheses correctly.

**3. X-ray variants** — Google searches into specific sites:
- LinkedIn (`site:linkedin.com/in ...`), GitHub (`site:github.com ...`), and any relevant community/portfolio sites — with the same keyword logic.

**4. Refinement plan** — what to change if results are too few (drop a must-have, add synonyms, broaden title) or too many/noisy (add exclusions, require more skills, tighten seniority).

**5. Notes** — platform quirks (LinkedIn boolean only on certain fields/tiers), and a reminder to keep sourcing criteria **job-related and non-discriminatory** (no filtering on protected characteristics).

## Quality Checks

- [ ] Title and skill synonyms are included — not just the literal words from the brief
- [ ] Boolean syntax is correct (quotes for phrases, parentheses around OR groups, NOT for exclusions)
- [ ] Both a precision and a recall version are provided
- [ ] X-ray variants target the right sites with working `site:` syntax
- [ ] A concrete refine-up / refine-down plan is included
- [ ] Criteria stay job-related; protected characteristics are never used as filters

## Anti-Patterns

- [ ] Do not search only the exact title — you'll miss the synonyms and variants people actually use
- [ ] Do not write broken boolean (unbalanced parentheses, missing quotes) — it silently returns junk
- [ ] Do not over-constrain with every nice-to-have — start broad enough to see the market, then narrow
- [ ] Do not filter on age, gender, ethnicity, or other protected/proxy signals — keep it job-related
- [ ] Do not ignore platform limits — note where boolean isn't supported or behaves differently

## Based On

Talent-sourcing practice — synonym-rich boolean construction, X-ray search, precision/recall tuning, and non-discriminatory, job-related criteria.

---
<!-- Run as an AI-plugin prompt. {{selection}} is the Text Generator / Templater
     variable for the highlighted text — replace it with your plugin's equivalent
     (e.g. {} in Copilot for Obsidian), or paste your input there manually. -->
Apply the skill above to the following input:

{{selection}}
