From nrev-workflows
Use when the user wants to build a workflow that assembles a list of target entities — companies, people, LinkedIn posts, or jobs — from search criteria ("find me...", "build a list of...", "who are the...", or an ICP description without specific names or domains). Covers route selection, Apollo vs RocketReach search node choice, filter availability, and the fork-qualify-rejoin company qualification pattern.
How this skill is triggered — by the user, by Claude, or both
Slash command
/nrev-workflows:list-buildingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
List building covers everything from "I have nothing" to "I have a qualified list of entities to work with." The output is a table of entities with enough identifiers (linkedin_url, domain, email, name) for downstream operations. It answers: **who or what am I targeting?**
List building covers everything from "I have nothing" to "I have a qualified list of entities to work with." The output is a table of entities with enough identifiers (linkedin_url, domain, email, name) for downstream operations. It answers: who or what am I targeting?
Invoke list building when:
{{domain}} template)Decompose the prompt into individual criteria BEFORE selecting a route or nodes. When the request is ambiguous, present the planned route briefly and confirm with the user before building.
| Person-level criteria | Company-level criteria |
|---|---|
| Title, role, function keywords | Industry, vertical, business model |
| Seniority (director, VP, C-suite) | Headcount / employee count |
| Location (city, country) | Revenue, funding stage, funding recency |
| Department | Tech stack, tools used |
| Years of experience | Pricing model, growth model |
| Education / alma mater | HQ location |
Verify against the live node schema with get_node_type — never fabricate filter names or settings. Reference matrix:
| Criterion | Apollo Search People | RocketReach Search People | Search Company | If unavailable → |
|---|---|---|---|---|
| Title/role keywords | Yes (fuzzy via include_similar_titles) | Yes | — | — |
| Seniority | Yes | Yes | — | — |
| Person location | Yes | Yes | — | — |
| Company domains | Yes | Yes | — | — |
| Employee count | Yes | Yes | Yes | — |
| Revenue range | Yes (min/max) | Yes | — | — |
| Years of experience | No | Yes | — | Use RocketReach |
| Department | No | Yes | — | Use RocketReach |
| Company funding stage | No | Yes | Recency only | RocketReach or Enrich + AI |
| Funding round type ("raised Series B") | No | — | Recency only | Enrich Company → Ask AI classification |
| Industry keywords | — | — | Yes | — |
| Company location | Yes (org location) | Yes | Yes | — |
| Business model | No | No | No | AI + web research |
| Pricing model | No | No | No | AI + web research |
| Tech stack / tools used | No | No | No | Get Company Technology → Filter, or AI + web |
| Growth model (PLG, sales-led) | No | No | No | AI + web research |
| Composite ICP fit | No | No | No | AI + web research with rubric |
| Post content / topic | No | No | No | Google Search site:linkedin.com/posts, or fetch posts → AI |
| Persona beyond title ("strategic budget holders") | No | No | No | Classifier/Ask AI on title + headline (Path A) |
Native filter detail (confirm with get_node_type before configuring):
If ANY criterion is unavailable as a native filter, it is the complexity driver. State it explicitly in the plan: "The criterion '[X]' is not available as a platform search filter on any node. It requires [AI + web research / enrichment + filter / Google Search], which forces the workflow into [Route 2a / Route 1 with AI / Route 3]." State the expected volume at each stage (e.g. "10,000 people → ~2,500 unique companies → ~1,500 after pre-filter → AI on 1,500").
| User's starting point / prompt characteristics | Route | Flow |
|---|---|---|
| Company-level criteria drive the search and are expressible as Search Company filters, then find people within | Route 1 — Company First | Search Companies → qualify → Search People within qualified domains |
| Company-level criteria drive the search but include non-searchable criteria | Route 1 with AI qualification | Search Companies broadly → Enrich → AI + web qualify → Filter → Search People within survivors |
| Person-level criteria only, all resolvable by search filters | Route 2 — People First | Search People → optional Path A persona classification |
| Person-level criteria drive the search, but one or more company-level criteria are NOT search filters | Route 2a — People First with Company Qualification | Fork-qualify-rejoin (below) |
| Criteria too niche/unconventional for platform search ("music tour managers", "Instagram fitness influencers") | Route 3 — Google Search | Google Search with site: operators → parse → enrich → classify |
| Posts from specific companies (have or can obtain company LinkedIn ID) | Route 4 — LinkedIn Post Search | Get Company Profile → Search Posts by company_id |
For topic-based post discovery ("posts about AI in sales"), use Google Search with site:linkedin.com/posts [topic], NOT Route 4.
Search node selection:
| User criteria includes | Node |
|---|---|
| Fuzzy title matching across naming conventions | Apollo (include_similar_titles: true — "Revenue Operations" also matches "Rev Ops Manager", "Director of RevOps") |
| Past employment history needed in output | Apollo |
| Years of experience / company funding stage / granular revenue / department | RocketReach |
| Simple title + location + seniority | Either — Apollo is default |
Enrich broadly at search time. The search node is often the only place to request enrichment fields. Include everything downstream needs: grouping/merge keys (org_primary_domain, org_linkedin_url, org_founded_year), person identifiers (linkedin_url, email), context fields (title, headline, seniority, city). There is no second pass.
The most architecturally complex pattern. Used when person-level criteria drive the search BUT company-level criteria require AI judgment (e.g. "B2B SaaS companies").
Search People (broad criteria, high limit e.g. 10,000)
↓
┌──────────────────┬──────────────────────────┐
↓ ↓
[Raw people results] [Group Data by company keys — dedupe]
↓ ↓
│ [Deterministic Filter — valid domain,
│ founded year, exclude VC, etc.]
│ ↓
│ [Limit — cap companies for AI cost]
│ ↓
│ [Ask AI with web research:
│ "Is this a B2B SaaS company?"]
│ ↓
│ [Filter — keep qualified companies]
↓ ↓
└──────────────────┬──────────────────────────┘
↓
[Merge — INNER JOIN on company keys]
↓
[People from qualified companies only]
org_primary_domain, org_linkedin_url, org_founded_year) collapses thousands of people rows to unique companies (count aggregation shows people per company). Apply cheap deterministic pre-filters (domain contains ".", founded year, exclude VC industry tags), then a Limit cap, then Ask AI with web research returning structured output (qualification + reason).| Use case | Query pattern |
|---|---|
| People on LinkedIn | site:linkedin.com/in [role/criteria] [location] |
| LinkedIn posts by topic | site:linkedin.com/posts [topic] after:[date] |
| Company pages | site:linkedin.com/company [industry/criteria] |
| Twitter/X profiles | site:twitter.com [role/criteria] |
Use quoted phrases for exact matching (site:linkedin.com/in "tour manager" avoids "travel manager" contamination). Add after:YYYY-MM-DD for recency. After Google Search, always parse profile URLs and enrich to get structured data before downstream processing.
Only for company-specific post discovery with a resolvable company LinkedIn ID: Get Company Profile first to resolve company_id, then Search Posts with it.
Path A — Individual Classify + Filter (dominant post-search pattern): classify each row individually (people by persona, companies by ICP fit, Google results by relevance), then Filter.
reason in classification output — near-free, invaluable for debugging.title + headline for people; full description for jobs.Path B — Group Synthesise: for merging overlapping lists from multiple sources, deduplicating entities (Apollo + Google Search), or producing company-level summaries from people-first searches. Group by entity key columns with unique aggregation; the grouping key sets the level of analysis.
edit_workflow (add_node), run it alone with run_node on a low limit, inspect get_node_output, and only then build downstream segments. Check search_plays for an existing play before building from scratch.is_seen is_empty anti-join to skip already-processed entities.List building ends with a table of entities with identifiers. Researching them in depth is Research; scoring/ranking is Qualification; picking specific ones is Nomination; acting on them is GTM Automations.
npx claudepluginhub nurturev/nrev-mcp --plugin nrev-workflowsGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.