I know how hard it is to search for a job. I personally had to apply to over 3000 jobs to get an internship and full time job. And this is exactly why, I provide all my resources and information for free. and I hope that even 1% of this can help you in your career. At the same time, I do this all by myself and don’t have anyone to help or any marketing budget to work with. So, if you find this article helpful, consider supporting me :
By making a donation through buymeacoffee
becoming a paid member of substack
or subscribing to my Youtube page.
If you need interview prep + coaching , happy to help as well and you can schedule time here
Automate Your Job Search with N8N
Recently, I discovered that you could automate your job search with N8N. And so, I decided to research on this and it is indeed true. You can definitely automate your job search with N8N and you can even do it for free for a few days with its Trial version.
You can literally apply for 1000+ jobs daily in an hour, craft personalized messages , send cold DMs and basically spend time upskilling while letting AI apply for you.
So, how is it done?
Firstly, you need to create an N8N account : Link
Here you need to enter your sign up account information. Note : it did require work email for me . But i think your gmail should also work.
Resources I used :
Directory with 20+ workflows : Link
Apply to 1000+ jobs daily video : Link
Automate your job search with Linkedin and N8N : Link
Automate entire Linkedin Job Search with AI and N8N : Link
Get Job Alerts for free when job match score is greater than 75% : Link
Download the above file locally and on N8N , click on import from file and add the json file.
Step-by-Step Workflow (Detailed)
Node 1: Schedule Trigger
Purpose: Initiates the entire workflow automatically without manual intervention.
Configuration: Set to execute once every 24 hours, ensuring the system checks for new job postings on a daily basis.
Benefit: Guarantees timely updates and prevents missing out on recent opportunities.
Node 2: Scrape Last 24 Hours Job
Function: Uses an HTTP Request node to send a query to LinkedIn’s job search endpoint.
Parameters: The request includes:
Keywords: Specific job titles, technologies, or skills (e.g., "Data Scientist", "Python", "Machine Learning").
Locations: Targeted geographic regions (e.g., "New York", "Remote").
Time Filter: Restricts results to jobs posted within the last 24 hours.
Goal: Gather the latest and most relevant job postings.
Node 3: Extract Job Links
Function: Employs a Python script within a Code node to:
Parse LinkedIn’s HTML response.
Identify and extract unique job posting URLs.
Tools: Uses BeautifulSoup or similar HTML parsing libraries.
Outcome: Generates a clean list of valid job links for processing in later steps.
Node 4: Split Out
Purpose: Breaks down the consolidated list of job links into individual link items.
Reason: Enables separate processing for each job posting, making it possible to fetch detailed info per link.
Node 5: Loop Over Items & Wait
Function: Iterates over each extracted job link in sequence.
Rate Control: Implements a controlled delay (e.g., 1–3 seconds) between requests to:
Prevent triggering LinkedIn’s anti-scraping protections.
Reduce server strain.
Benefit: Ensures a stable and reliable data retrieval process.
Node 6: Scrape Each Job
Function: Sends an HTTP request to each job’s dedicated page.
Goal: Retrieve full job content, including all details not present in the search results list (e.g., complete description, benefits, and company culture notes).
Node 7: Parse
Function: Processes the HTML content from each job page using BeautifulSoup.
Extracted Data Points:
Job Title (e.g., "Software Engineer")
Company Name (e.g., "Google")
Location (e.g., "San Francisco, CA")
Full Job Description (text content)
Direct Application Link (to apply on LinkedIn or company’s site)
Node 8: OpenAI
Purpose: Evaluates the relevance of each job against the candidate’s profile.
Process:
Sends the job description and candidate’s resume details as input to OpenAI’s GPT-3.5-turbo model.
Requests the model to compute a relevance score (e.g., match percentage).
Output: Receives a JSON object containing:
Match Score (numerical percentage, 0–100)
Optional reasoning or analysis text.
Node 9: Edit Fields
Function: Cleans and formats the JSON data returned from OpenAI for easy filtering.
Example: Converts
"match_score": "85%"
to a standardized numeric value like85
.
Node 10: Conditional Logic (If)
Purpose: Filters job postings based on a predefined relevance threshold.
Example Setting: Threshold = 75% match.
Logic:
If match ≥ threshold: Keep the job for notification.
If match < threshold: Discard from results.
Node 11: Telegram Notification
Purpose: Notifies the user in real time about high-relevance job matches.
Content of Message:
Job Title
Company Name
Location
Match Score
Direct Application Link
Benefit: Delivers actionable job leads instantly to the user’s Telegram chat, enabling faster application submission.
GET TELEGRAM API KEYS : Link
GET CHATGPT API KEYS : Link
Credits : https://medium.com/@pechimuthu77