Automating Job Applications with AI

 When applying to multiple positions, tailoring your resume and outreach emails can be time-consuming. To streamline this process, I built a pipeline that automatically scrapes job listings, compares them against my resume, and generates personalized outreach emails. 

The Problem

 Manually searching for positions and customizing outreach is inefficient. And after several months of applying through normal means with no responses or emails being lost in the systems. I wanted a program that could:

  • Continuously pull in relevant job postings.
  • Match them against my resume automatically.
  • Generate ready-to-send outreach emails for the best-fit positions.

This would let me focus my energy on interviewing and networking, rather than endless copy-pasting.

Job Scraping with Apify

 Using the Apify platform, my script scrapes fresh listings from Indeed based on a target role (e.g., Data Analyst) and location (Claremore, OK). Each job posting is saved with details like:

  • Title 
  • Company
  • Location
  • Salary range
  • Job description 

All of this is stored in JSON for further processing.

Domain & Email Enrichment with Hunter.io

 Reaching out directly to hiring managers or recruiters often requires finding valid company emails.

  • Step 1: The script queries Hunter.io with the company name to retrieve the company domain.
  • Step 2: Using the domain, it fetches associated professional email addresses.

If a domain isn’t available, it falls back to company-based lookups. This makes it much easier to build contact lists without manual digging.

Resume Matching with OpenAI

 The heart of the system is an AI-driven resume matcher. For each job description, I use OpenAI’s GPT-4o-mini model to compare the posting with my resume text. The AI outputs a match score (0–100) representing how closely my skills and experience align with the role.

  • A 70+ score is considered a strong match.
  • Jobs meeting this threshold are flagged for outreach.

This eliminates guesswork and ensures I focus on the positions where I’m most competitive.

Outreach Email Generation

 For strong matches, the script automatically generates personalized outreach emails. Each email includes:

  • The correct job title (positionName).
  • The correct company name (company).
  • A professional template highlighting my background and education.

The emails are compiled into a Word document (outreach_emails.docx) so they’re ready to customize and send.

Technologies & Skills Used

  • Python (requests, logging, csv, docx, openai)
  • Apify Client for job scraping
  • Hunter.io API for domain & email enrichment
  • OpenAI API for AI-driven resume matching
  • Automation Design (rate limiting, error handling, fallbacks)
  • AI Tools for error correction and deeper insights

The Outcome

 With this system in place, the job search process becomes much more efficient:

  • I get a prioritized list of roles that fit my background. 
  • I have recruiter-ready contact info enriched from Hunter.io.
  • I receive AI-drafted outreach emails that are professional and consistent. 

What once took hours per day is now condensed into a single automated workflow.

Why This Project Matters

 Beyond streamlining my own job search, this project demonstrates key technical strengths:

  • Data engineering: scraping, cleaning, and enriching datasets.
  • API integration: combining multiple third-party services in a real-world workflow.
  • Applied AI: using large language models to solve a practical, non-academic problem.
  • Automation & productivity: designing systems that save time and reduce manual effort.
  • Integrated usage of AI: using and integrating modern tech in the workflow.
     

This is exactly the type of problem-solving I enjoy — using technology to automate tedious processes and unlock more value from data.

Next steps

While this project was successful there are few issues I can see appearing in the future. 

  • Add a "Memory": I don't want to send emails to the same company multiple times.
  • More Data: include scrapers from other job boards (LinkdIn).
  • Web Dashboard: Making the product more user friendly.

Copyright © 2025 Zyler Wies - All Rights Reserved.

This website uses cookies.

We use cookies to analyze website traffic and optimize your website experience. By accepting our use of cookies, your data will be aggregated with all other user data.

Accept