Get the file
Join Discord and open #freebies. The flow file and setup help are there.
This workflow collects public job listings, asks Claude to score them against one candidate profile, and emails the listings that clear a score. The workflow name in the file is AI candidate matcher: single role. It matches listings. It does not offer a role, a placement, or an interview. It is free. There is no form on this page. You import it into your own n8n and run it there.
The flow file and setup help are in #freebies on our Discord.

Two schedules, plus an error branch. They do not depend on each other.
Every 3 Hours Trigger starts Set Search Queries. The query in the file is YOUR ROLE KEYWORD until you replace it. From there it fetches three feeds:
/jobs/in/), using your app id and key. Change the country in that URL if India is the wrong one.Merge Job Sources joins them. Normalize and Deduplicate Jobs drops listings older than 90 days and keeps one row per id. Upsert Jobs to Pool writes the Supabase jobs table.
Daily Morning Trigger uses cron 0 8 * * *, which is 08:00 on your n8n clock. Set Role Configuration holds a single profile: an id (role-1), an email ([email protected]), a function keyword, locations, min_score of 75, and a profile paragraph you rewrite. Nothing personal is baked in.
Fetch Pool Shortlist takes up to 15 fresh listings whose title matches the function keyword. Get Already Matched IDs drops listings already stored for this role. Create Scoring Batches sends what remains to Claude (claude-haiku-4-5) through $env.ANTHROPIC_API_KEY, 20 at a time. With a shortlist of 15, that is usually one call. Filter Scored Jobs keeps listings at or above min_score. Save Job Matches writes user_job_matches. Send Email Digest sends the score, title, company, location, link, and fit line through Resend.
Error Trigger formats the workflow name, the node, the message, and an execution link, then Send Alert Notification posts it through Resend. Wire this workflow as its own error workflow in n8n settings if you want that branch to fire.
YOUR_SUPABASE_URL and YOUR_SUPABASE_SERVICE_ROLE_KEY. The service role key skips row security, so keep it in n8n. You need a jobs table and a user_job_matches table. The notes in the file name the columns.ANTHROPIC_API_KEY. The Claude node reads $env.ANTHROPIC_API_KEY.YOUR_RESEND_API_KEY, a from address, the profile email, and YOUR_ALERT_EMAIL for the error branch.Greenhouse, Lever, Ashby, and RemoteOK need no account. Replace every placeholder before you turn the workflow on.
This file reads secrets with $env. n8n 2.x blocks that by default. If a node stops with an env access error, use the n8n env access fix.
Four steps. The file in #freebies is rup-candidate-matcher.json.
Join Discord and open #freebies. The flow file and setup help are there.
In n8n, use Import from File and pick the JSON from #freebies.
Create the Supabase tables, paste the Supabase, Adzuna, and Resend values, set ANTHROPIC_API_KEY, and rewrite Set Role Configuration and the search keyword.
Run the daily branch from Daily Morning Trigger. You should get a digest of listings that cleared the score, or no mail if nothing did.
No. It matches public job listings to one profile and emails the ones that clear a score. It does not submit applications.
This file scores one profile stored in Set Role Configuration. The job matcher flow loops people stored in a job_seekers table. Use this one when you have a single candidate to run each morning.
Listings at or above min_score. The file sets that to 75. Change it on Set Role Configuration.
The URL is Adzuna's India search, /jobs/in/. Change the country code in that URL if you need a different market.
Goat O Mate is a community of builders shipping marketing and AI automations together.
Join Discord