🚀 AI Job Search Automation Agent (Day 23)
"Most people don’t fail job interviews. They fail before they even apply."
🌊 The Signal vs. Noise Revolution
Job hunting today isn’t about effort. It’s about signal vs noise.
You are up against:
- ❌ Hundreds of generic listings.
- ❌ "Spray and pray" applicants.
- ❌ Zero feedback loops.
- ❌ Hours of manual copy-pasting.
- ❌ Recruiter fatigue (6 seconds per resume).
This Agent is your unfair advantage.
It doesn't just "search" for jobs. It is a fully autonomous Recruitment & Application Engine that works for you. It scrapes, analyzes, rates, and even writes your cover letters while you sleep. By the time you wake up, the best opportunities are already waiting for you in a clean, organized spreadsheet.
📉 The Old Way vs. 📈 The Agent Way
The "Grind" The AI Agent Search manually for hours Autopilot: Pulls jobs 24/7 via RSS triggers Read vague descriptions Deep Analysis: Extraction of real benefits & requirements Apply to everything Smart Filter: Applies only if you're a Top Match (>4/5) Generic, weak cover letters Hyper-Personalized: Writes custom letters for each role Spreadsheet chaos Structured Data: Clean, auto-updated Google Sheet database Missed opportunities Instant Action: Catches jobs within minutes of posting
🧠 End-to-End Workflow Analysis
This isn't just a simple script. It's a sophisticated n8n workflow designed to mimic a human recruiter's decision-making process.
The Architecture of Automation
The agent operates in a linear, logical flow, ensuring high-quality output at every step.
1. The Ear (RSS Trigger)
- Node:
RSS Read - Function: Constantly monitors job boards (LinkedIn, Indeed, etc. via RSS) for new listings.
- Configuration: Fetches every X minutes.
- Why: Speed is key. Be the first to know when a role drops.
2. The Eye (HTTP Scraper)
- Node:
HTTP Request - Function: Visits the actual job URL and scrapes the entire page content.
- Why: RSS feeds often truncate descriptions or only show the "preview". We need the full text to find hidden requirements (e.g., "Must be located in MST time zone").
- Technical: Uses standard GET request.
3. The Analyst (Data Extraction)
- Node:
OpenAI(GPT-4o-mini) - Function: Reads the raw HTML text and extracts structured data:
- Company Name: Normalized name.
- Benefits: 401k, Health, Remote policy, Unlimited PTO.
- Core Job Description: Summarized to Top Right Menu (
...) ->Import from File-> Select the JSON.
- Save: Name it "Job Search Agent" or "Career Copilot".
Phase 2: Configure Credentials
🔑 OpenAI
- Open any OpenAI node (e.g.,
OpenAI). - Click
Credential to connect with. - Select
Create New. - Name:
OpenAI Job Search. - Paste your OpenAI API Key (starts with
sk-...). - Click
Save.
📊 Google Sheets
- Open the
Google Sheetsnode. - Create a new credential using
Google Sheets OAuth2 API. - Setup Guide:
- Go to Google Cloud Console.
- Create a Project.
- Enable Google Sheets API.
- Go to Credentials -> Create Credentials -> OAuth Client ID.
- Authorized Redirect URI: Copy this from the n8n credential window (e.g.,
https://your-n8n.com/oauth2/callback). - Copy Client ID and Client Secret back to n8n.
- Click
Connect my accountand potential approval screens.
Phase 3: The "Brain Transplant" (Crucial Step)
The agent needs to know WHO it is applying for. By default, it uses "Alex Morgan" (a placeholder profile). You must change this.
[!IMPORTANT] YOU MUST UPDATE THE RESUME DATA OR THE AGENT WILL APPLY AS SOMEONE ELSE!
Update the Rater:
- Double-click the
OpenAI1(Rating) node. - Look at the
Messages->Values->Content. - Find the text block starting with
📄 SAMPLE RESUME/Alex Morgan. - DELETE everything from
Alex Morgandown to the end of the resume section. - PASTE your actual resume text (Experience, Skills, Education).
- Optional: Tweak the scoring logic in the System Prompt.
- Example: Change "1 point for remote" to "5 points for remote" if remote is non-negotiable for you.
Update the Writer:
- Double-click the
OpenAI2(Writer) node. - Look at the
Messages->Values->Content. - Again, find the
📄 SAMPLE RESUMEsection. - Replace it with your resume text.
- Pro Tip: Add a line in the System Prompt like: "Tone should be professional but enthusiastic," or "Keep it under 200 words."
Phase 4: Google Sheet Setup
- Create a NEW Google Sheet.
- Name the tab
Sheet1(default). - Create the following headers in Row 1:
- A1:
Title - B1:
Link - C1:
Date - D1:
Company Name - E1:
Benefits - F1:
Job Description - G1:
Rating - H1:
Cover Letter
- A1:
- Copy the Spreadsheet ID from the URL (the long string between
/d/and/edit). - In the n8n
Google Sheetsnode:- Mode:
List(orID). - Paste the ID into
Document ID. - Ensure
Sheet Namematches your tab name. - Verify
Map Data Automaticallyis ON or manually map the columns as per the JSON.
- Mode:
Phase 5: The RSS Trigger
- Go to LinkedIn Job Search.
- Search for your dream job (e.g., "AI Engineer", "Remote", "United States").
- Filter by "Past 24 hours" to keep it fresh.
- Copy the URL.
- Use a tool to generate an RSS feed:
- Open the
RSS Readnode in n8n. - Paste your new RSS URL.
🔧 Advanced Customization
Once you have the basics running, here is how to make it World Class.
1. Multi-Language Support
Applying to jobs in Germany or Japan?
- Action: In the
OpenAI2(Writer) node, add to the System Prompt:"Detect the language of the job description. Write the cover letter in the SAME language."
- Result: Automatically switches between English, German, French, etc.
2. The "Dealbreaker" Filter
Want to ignore jobs under a certain salary or requiring "5+ years experience"?
- Action: In
OpenAI(Analyst) node, add extraction fields formin_salaryandyears_experience. - Action: Add an
Ifnode after the Analyst.- Logic:
If min_salary > 100000AND `years_experience 4.
- Logic:
- Message: "🚨 NEW 5/5 JOB MATCH: [Title] at [Company]! Link: [Link]"
4. Direct Resume Tailoring (Expert Mode)
Instead of just a cover letter, rewrite your resume summary.
- Action: Add another OpenAI node.
- Prompt: "Rewrite my resume 'Summary' section to explicitly highlight keywords found in this job description: {{Job Description}}."
- Output: Save the new Summary text to the Sheet for manual addition to your CV.
📡 Node Configuration Reference
For those debugging, here are the default settings for every node in the workflow.
| Node Name | Node Type | Key Function | Critical Settings |
|---|---|---|---|
| Schedule Trigger | n8n-nodes-base.scheduleTrigger | Triggers the flow | Interval: Every 1 Hour (Adjustable) |
| RSS Read | n8n-nodes-base.rssFeedRead | Fetches jobs | URL: Your LinkedIn RSS Link |
| Limit | n8n-nodes-base.limit | Prevents loop spam | Max Items: 3 (Testing), 50 (Production) |
| HTTP Request | n8n-nodes-base.httpRequest | Scrapes content | URL: {{json.link}}, Method: GET |
| OpenAI | @n8n/n8n-nodes-langchain.openAi | Extracts Data | Model: gpt-4o-mini, Format: JSON |
| OpenAI1 (Rating) | @n8n/n8n-nodes-langchain.openAi | Rates Job | Model: gpt-4o-mini, Scores: 1-5 Scale |
| OpenAI2 (Writer) | @n8n/n8n-nodes-langchain.openAi | Write Letter | Model: gpt-4o-mini, Resume: REQUIRED |
| Google Sheets | n8n-nodes-base.googleSheets | Saves Data | Operation: appendOrUpdate, Dedupe: Link |
Pro Tip: If
HTTP Requestfails (403 Forbidden), try adding aUser-Agentheader mimicking a browser.
❓ Troubleshooting & FAQ
Q: The workflow fails at the Google Sheets node.
A: Check your OAuth permissions. Re-authenticate. Also, ensure the header row in your Sheet EXACTLY matches the column names in the n8n node settings. Case sensitivity matters!
Q: All my ratings are coming back as 0 or 1.
A: Your scoring criteria might be too strict, or, more likely, you didn't update the Resume in the Prompt. If the AI thinks you are "Alex Morgan" (Marketing Student) but you are applying for "Senior Python Dev", you will get a 0. Update Phase 3.
Q: RSS Feed says "Forbidden" or "Empty".
A: LinkedIn constantly changes their structure. Try regenerating the RSS feed link using a different service (RSS.app usually works best). Alternatively, use the internal
n8n Triggerfor sites that support it.
Q: How much does this cost to run?
A:
gpt-4o-miniis extremely cheap. Processing 100 jobs might cost you ~$0.05. It is effectively free compared to the value provided.
Q: Can I use Local LLMs (Ollama)?
A: YES! Swap the
OpenAInodes forOllamanodes in n8n. Usellama3ormistral. Note: Reasoning capabilities for "Scoring" might be slightly lower than GPT-4.
📊 Revenue & Time ROI Model
How much is this agent worth? Let's break it down.
Time Savings (Monthly)
| Task | Manual (Human) | With Agent (AI) | Savings |
|---|---|---|---|
| Finding Jobs | 10 Hours | 0 Hours | 10 Hrs |
| Reading Junk | 5 Hours | 0.5 Hours | 4.5 Hrs |
| Writing Letters | 15 Hours | 0 Hours | 15 Hrs |
| Tracking Apps | 2 Hours | 0 Hours | 2 Hrs |
| TOTAL | 32 Hours | ~0.5 Hours | 31.5 Hours Saved |
Potential Revenue Impact
If your time is worth $50/hr:
- Monthly Value Created: $1,575
- Yearly Value Created: $18,900
Plus, by applying faster and with better letters, you increase your interview rate by an estimated 300%.
🚀 300% Higher Interview Rate = Faster Hired = $$$
📚 Glossary
- n8n: The workflow automation tool connecting apps.
- RSS: "Really Simple Syndication" - a web feed that allows users and applications to access updates to websites in a standardized, computer-readable format.
- OpenAI API: The interface allowing this agent to "think" using GPT models.
- JSON: JavaScript Object Notation - the file format used to share this workflow.
- Scraper: A bot that extracts content from a webpage.
- Prompt Engineering: The art of asking the AI the right question to get the best answer.
🎥 Gallery & Visuals
The Dashboard (Output)
Your Google Sheet becomes a command center. Sort by Rating to focus only on the 5/5 jobs.
The Logic (Node Graph)
Visualizing the decision tree.
Future Roadmap
- Auto-Apply: Integration with LinkedIn Easy Apply (via Puppeteer).
- Email Alerts: Slack/Email notification for 5/5 matches.
- Resume Tailoring: Rewriting the Resume PDF itself for each job.
- Interview Prep: Generating interview questions based on the JD.
🌟 Why I Built This
"People don’t lack talent — they lack time, clarity, and feedback. Job search is a decision system, not a numbers game."
I built this for Day 23 of my 30 Days, 30 AI Agents Challenge to prove that automation can bring humanity back to hiring by letting you focus on the interview, not the paperwork.
🤝 Connect & Customization
If you want this agent customized for your specific industry or workflow:
- Comment: "Agent 23"
- DM Me: For personal setup help.
- Follow: For the next 7 agents!
#30Days30AIAgents #BuildInPublic #AIForCareers #n8n #JobSearch #Automation #OpenAI #CareerTech
Built with ❤️ by the Ai agent bros Team