๐ Score ATS job postings with OpenAI and send alerts to Slack and Google Sheets
โก 6 views ยท ๐ Market Research & Insights
๐ก Pro Tip โ HTTP Request scraping tends to break when sites update their markup. If youโre scraping a major platform, check if ScraperNode covers it โ it has maintained scrapers for LinkedIn, Instagram, TikTok, YouTube, and 20+ other platforms that return structured data.
Description
Quick overview
This workflow runs every weekday morning to scan company job boards via Apifyโs ATS Job Scraper, score new postings with OpenAI against your role profile, archive results in Google Sheets, and post high-scoring job alerts plus a daily roll-up summary to Slack.
How it works
- Runs every weekday morning on a scheduled trigger.
- Reads a company watchlist from a Google Sheets โCompaniesโ tab and splits it into company names and optional career page URLs.
- Starts an Apify ATS Job Scraper actor run in monitoring mode and polls Apify until the run succeeds or hits the polling limit.
- Downloads the runโs dataset of newly discovered job postings from Apify and normalizes each posting into a consistent set of fields.
- Uses OpenAI to score each job (0โ100) against your role profile and extract structured details like seniority, workplace type, and a one-line reason.
- Appends every scored job to a Google Sheets โJobsโ tab, then posts per-job alerts to Slack only for postings that meet or exceed the minimum score.
- Posts a daily summary message to Slack showing how many new jobs were found and how many were alerted.
Setup
- Create an Apify account, copy your Apify API token, and configure an HTTP Header Auth credential with
Authorization: Bearer <token>for the Apify HTTP requests. - Connect your Google Sheets account and set the spreadsheet ID in the workflow settings, then create tabs named โCompaniesโ (with columns
Companyand optionalCareer page URL) and โJobsโ. - Connect your OpenAI account (or update the model setting) and adjust the
roleProfile,minScore, and polling limits in the workflow settings. - Connect your Slack account and paste your target Slack channel ID into the workflow settings so alerts and the daily summary post to the right channel.
๐ Nodes Used
Google Sheets, HTTP Request, Slack, Stop and Error, Schedule Trigger, Filter
๐ฅ Import
Download workflow.json and import into n8n:
Workflow menu โ Import from File