Build an automated ICP qualification + outreach pipeline with LinkedIn Sales Navigator and n8n

I built a workflow that pulls Sales Navigator searches from Notion, scrapes profiles with the Periodix node, scores each one with Claude, writes personalized outreach, and splits everything into Validated / Rejected Google Sheets - fully automated, runs on a schedule.

What’s in the workflow:

  • Schedule Trigger pulls pending Sales Nav search URLs from Notion

  • Periodix node scrapes each URL — handles all LinkedIn rate limiting automatically

  • Claude scores every profile against your ICP criteria

  • Score ≥ 5 → Claude writes a custom connection request + M1 message → Validated sheet with score, reasoning, and ready-to-send messaging

  • Below 5 → Rejected sheet with score and reasoning so you can audit and tune your ICP definition

  • Notion marks the URL as done so it never runs twice

The output is a table where validated leads arrive with everything ready — score, why they fit, and personalized messages. Rejected leads show score + reasoning so you can QA your criteria without re-running everything.

Pricing: $10 for the first 1,000 search results, then $10 per 2,000 after that. $49/month for unlimited volume. Multi-account discounts available.

The same node works across 6 LinkedIn surfaces:

Posts search — get everyone writing about your topic right now. Warm, intent-based leads updated daily.

Jobs search — find companies hiring SDRs, RevOps, GTM roles. Active hiring = active growth = buying signal.

Companies search (Classic + Sales Nav) — target account lists by industry, size, keyword.

People search (Classic) — broader prospecting without Sales Navigator.

All six return structured items so everything downstream — AI enrichment, CRMs, sheets, Slack alerts — just works.

Docs + recipes: https://docs.actions.periodix.net/docs/getting-started

Happy to share the workflow JSON drop a comment.

2 Likes

Using Claude to score and write personalized outreach in one pass is a clean design - keeps the AI context tight and avoids multiple model calls. One thing worth adding: a deduplication step before the Periodix scraping node (using n8n’s static workflow data or a Notion filter checking a “processed” property) so re-running on the same search doesn’t re-score and re-send to profiles you already outreached. Would love to see the JSON!

1 Like

Great point on deduplication - we actually handle it at the Notion level. Each search URL has a “Done” property, and once a URL is processed, Notion marks it so it never runs again. That said, profile-level deduplication (checking if a specific person was already outreached across different searches) is a smart next step worth adding.

Here’s the JSON