Sharing a workflow I built as part of a cold outreach pipeline. This one handles the first step — cleaning and filtering lead exports before they go into sequences.
## What it does
1. **CSV Upload** — accepts any lead export via Form Trigger (Apollo, Hunter, LinkedIn Sales Navigator, ZoomInfo, hand-built spreadsheet)
2. **ICP Filter** — filters by your criteria: title, industry, company size. Edit the filter node to match your target
3. **Deduplication** — checks each lead against your existing Google Sheet contacts. If the email already exists, it's skipped
4. **Clean Append** — new leads only get added to your sheet, ready for outreach
## Stack
- n8n (self-hosted or cloud free tier)
- Google Sheets
- No paid APIs
## How to use
1. Import the JSON into n8n
2. Connect your Google Sheets credentials
3. Set your ICP filter criteria in the filter node
4. Upload a CSV via the form trigger
5. Clean leads appear in your sheet
5 nodes, dead simple. Takes about 5 minutes to set up.
## The workflow JSON
https://gist.github.com/CelestChief/1fd8072cf06b70578103a4a53ddfdf23
## Context
I use this daily to clean Apollo exports before running email sequences. It's the first piece of a 3-workflow outreach pipeline I built (sourcing → email sequence → reply handling). Sharing this one standalone because it's useful on its own even if you have a completely different outreach setup.
Happy to answer questions about the build or how I'm using it in the larger pipeline.