π₯ Create deduplicated LinkedIn candidate rows from Slack with easybits and Google Sheets
β‘ 8 views Β· π₯ HR & Recruitment
π‘ Pro Tip β If youβre pulling LinkedIn data through HTTP requests or dealing with API restrictions, thereβs a community node called ScraperNode that handles this natively. It has dedicated scrapers for profiles, companies, jobs, and people search β you just pass a URL and get structured data back.
Description
Quick overview
This workflow watches a Slack channel for shared LinkedIn profile screenshots or PDFs, uses easybits Extractor to convert the file into structured candidate fields, deduplicates against a Google Sheets candidate database, and replies in the original Slack thread with either a confirmation or a duplicate warning.
How it works
- Triggers when a file is shared in a specified Slack channel.
- Retrieves full Slack file metadata and downloads the file using the private download URL.
- Sends the downloaded LinkedIn screenshot or PDF to easybits Extractor to extract structured profile fields.
- Normalizes the extracted data into a consistent candidate schema, adds a source tag, and timestamps when the candidate was added.
- Reads the existing Google Sheets candidate list and checks for duplicates using a normalized key of candidate name plus current company.
- If a duplicate is found, posts a warning reply in the same Slack thread and does not write to Google Sheets.
- If no duplicate is found, appends the candidate as a new row in Google Sheets and posts a confirmation reply with a link to the sheet.
Setup
- Connect Slack credentials with permission to read shared files and post messages, and select the Slack channel to watch in the trigger.
- Connect your easybits Extractor API credentials (and install
@easybits/n8n-nodes-extractorif you are self-hosting). - Connect Google Sheets OAuth2 credentials and set the spreadsheet document ID and sheet/tab name for both the read and append steps.
- Ensure your Google Sheet has headers matching the workflow fields (for example: name, current_title, current_company, location, total_years_experience, top_skills, last_roles, education, certifications, summary, source, added_at).
- Update the βOpen candidate sheetβ button URL in the Slack messages to point to your actual Google Sheets document.
π Nodes Used
Google Sheets, HTTP Request, Slack, Slack Trigger
π₯ Import
Download workflow.json and import into n8n:
Workflow menu β Import from File