An r/smallGRP thread distinguished tools (find a candidate) from systems (find, qualify, enrich, reach out, follow up). This walks the system, not the tool list.
Prerequisites
- n8n
- Scavio API key
- Apify API key (LinkedIn-tolerant scrapers)
- Hunter API key
- Smartlead/Lemlist account
- ICP definition (role, skills, location, seniority)
Walkthrough
Step 1: Define ICP as a JSON object, not a vibes brief
Auditable.
// ICP: { role: 'Senior Rust Backend', skills: ['rust','tokio','async','axum'], location: ['EU','US-remote-friendly'], seniority: '5-10y', exclude: ['recent layoff orgs'] }Step 2: Discovery via Scavio dorks
Multi-source candidate finding.
// site:github.com user-card senior rust 2024-2026
// site:medium.com author rust async 2026
// site:linkedin.com/in head of platform rust EU 2026
// site:reddit.com/r/rust comment by 2025-2026Step 3: Apify pull for LinkedIn profile depth (TOS-tolerant actor)
When Scavio surfaces a LinkedIn URL.
// Apify LinkedIn Profile Scraper actor — verify TOS posture for your jurisdiction.Step 4: LLM-rubric qualification (skill match, recency, fit notes)
JSON-output rubric.
// LLM: 'Score 0-100 against ICP. Return { score, reason, fit_notes }.'Step 5: Hunter for email find/validate per qualified candidate
Drop accept-all, disposable.
GET https://api.hunter.io/v2/email-finder?domain={candidate.company}&first_name={...}&last_name={...}Step 6: Smartlead campaign with personalized opener
Open + value + ask.
// Open: reference a specific GH project or post Scavio surfaced. Value: role fit. Ask: 15 min call.Step 7: Reply triage back into n8n: book / nurture / disqualify
Loop close.
// Smartlead reply webhook → n8n → tag in CRM/Sheets → assign next action.Python Example
# Per-recruit-cycle: 50 candidates × (3 Scavio + 1 Apify + 1 Hunter + 1 Smartlead send) = ~$2-5 per finalist contacted.JavaScript Example
// Same in TS via the same vendor SDKs.Expected Output
End-to-end recruiter system: 200-500 candidates discovered/week, ~10-30% qualified, personalized outreach to ~50 contacted, replies routed back to source-of-truth.