Building an Automated Job Search Pipeline with AI
How I built an end-to-end automated job search system using Python, Claude AI, Qdrant RAG, and Playwright for multi-platform scraping, AI scoring, and auto-generated cover letters.
Job searching is tedious. Checking five platforms daily, tailoring cover letters for every application, and tracking everything in a spreadsheet that inevitably goes stale — it's exactly the kind of repetitive, data-heavy workflow that begs for automation.
So I automated it.
The Problem
The modern job search is a full-time job in itself. Between LinkedIn, Indeed, Glassdoor, and ZipRecruiter, there's no shortage of listings. But the bottleneck isn't finding jobs — it's evaluating fit, personalizing materials, and managing the pipeline. Most of that work is mechanical, not creative.
I wanted a system that would handle the mechanical parts while leaving the strategic decisions — which roles to pursue, which companies to prioritize, how to position myself — to me.
The Architecture
Multi-Platform Scraping
Using JobSpy, the system scrapes job listings from LinkedIn, Indeed, Glassdoor, and ZipRecruiter simultaneously. Each listing is normalized into a standard schema: title, company, description, requirements, and URL. This eliminates the need to manually check each platform and ensures nothing slips through the cracks.
AI Scoring with Claude
Every scraped job gets sent through Claude for scoring on a 0-100 scale based on four criteria: ICP match (does the role align with my ideal position profile?), skills alignment (do my qualifications match their requirements?), culture signals (does the company description suggest a good fit?), and growth potential (is there room for the kind of impact I want to make?).
Jobs scoring above 75 get flagged for action. Everything else gets logged but deprioritized — no time wasted evaluating poor-fit roles manually.
RAG-Powered Cover Letters
For flagged jobs, the system uses Qdrant RAG to dynamically generate cover letters. The vector store contains my resume, portfolio pieces, case studies, and writing samples. Each cover letter is tailored to both the job description and the specific company, pulling relevant experience and accomplishments from my knowledge base.
This is the same RAG approach I use in my multi-agent AI stack — vector search over personal documents to ground AI output in real data rather than generic templates.
Browser Automation
Playwright handles the actual submission on platforms that support programmatic form filling. For platforms that don't, the system prepares everything — completed form data, tailored cover letter, selected resume version — and creates a task in NocoDB for manual submission.
Pipeline Tracking
Everything feeds into NocoDB for status tracking and HubSpot for CRM-style pipeline management. Each entry moves through stages (Applied, Response, Interview, Offer, Rejected) with automated follow-up reminders.
Results
Over three months of running this pipeline:
- 200+ jobs scored and categorized automatically
- 45 submissions completed — 22 fully automated, 23 with manual submission
- 8 interviews secured
- ~2 hours per week spent on job searching vs. the previous 10+
The system paid for itself in time savings within the first week. More importantly, the AI scoring consistently identified roles I would have missed during manual scanning — companies I hadn't heard of but that matched my profile better than the big-name postings I would have prioritized.
Technical Stack Summary
The pipeline combines Python for orchestration, JobSpy for scraping, Claude for scoring and cover letter generation, Qdrant for vector-based document retrieval, Playwright for browser automation, NocoDB for task management, and HubSpot for pipeline CRM.
If you're interested in automating LinkedIn specifically, I covered that in a separate deep-dive.
Key Takeaways
Automate the mechanical, not the strategic. The system handles scraping, scoring, and form-filling. I still decide which roles to pursue and how to position myself in interviews.
RAG beats templates every time. Generic cover letters get ignored. Cover letters grounded in your actual work — pulled dynamically from a vector store — feel authentic because they are.
Track everything. The NocoDB pipeline isn't just for organization. The data it generates (response rates by platform, score correlation with interview rates) feeds back into optimizing the system over time.
Edward Chalupa is a digital marketing specialist and founder of Whtnxt, a digital marketing and automation consultancy. Connect with him on LinkedIn or explore more at echalupa.com.