This project is an intelligent job application automation system designed to streamline the job search process by scraping job listings, generating personalized cover letters, sending automated emails, and tracking job applications in a Google Sheets dashboard.
The AI Job Application Automation project provides a fully automated solution for job seekers. It scrapes job listings from multiple job boards, processes the job data, generates personalized cover letters, sends automated emails with attachments, and tracks application statuses in a Google Sheets dashboard. This system helps users stay organized throughout their job application process and ensures timely follow-ups.
- Job Scraping: Automatically scrapes job listings from adzuna.com based on predefined search queries.
- Cover Letter Generation: Creates personalized cover letters based on the job title, company, job description, and experience extracted from uploaded CVs.
- Email Sending: Sends emails with the generated cover letters and uploaded CVs to the relevant job applications.
- Job Tracking Dashboard: Tracks job application status in a Google Sheets dashboard for easy reference.
- Streamlit Dashboard: Provides a real-time, interactive web dashboard for tracking job application statuses.
- Python 3.x: The primary programming language for the automation logic.
- Streamlit: A micro web framework used to build the web dashboard.
For more details on the required libraries, refer to the requirements.txt
file.
The project is organized into the following directories and modules:
AI-Job-Application-Automation/
├── config/ # Configuration files (e.g., .env, SMTP settings)
├── database/ # Database-related files (e.g., job application records)
├── env/ # Virtual environment folder (excluded from Git)
├── src/ # Source code for core modules
│ ├── job_scraper.py # Scrapes job listings from job boards
│ ├── nlp_processing.py # Processes job descriptions and generates personalized content
│ ├── cover_letter_generator.py# Generates cover letters based on scraped job data
│ ├── email_sender.py # Sends emails with cover letters and attachments to job applications
│ ├── Google_sheet_integration.py# Provides a real-time dashboard to track job application statuses using Flask
├── static/ # Static files (CSS, JS, images)
├── templates/ # HTML templates for the Flask web app
├── uploads/ # Uploaded files (e.g., resumes, job data)
├── __pycache__/ # Python bytecode (auto-generated)
├── .gitignore # Files to be ignored by Git
├── LICENSE # License for your project
├── README.md # Project info and instructions
└── requirements.txt # Python dependencies
Ensure you have the following tools installed:
- Python 3.x: The primary programming language for the project.
- pip: Python package manager.
-
Open VS Code.
-
Open the terminal in VS Code by navigating to Terminal > New Terminal.
-
Clone the repository by running:
git clone https://github.com/hydropython/AI-Job-Application-Automation.git cd AI-Job-Application-Automation
Install the required Python libraries by running:
pip install -r requirements.txt
This will install all necessary libraries, including BeautifulSoup, gspread, Streamlit, pandas, and others required for the project.
-
Go to the Google Developers Console.
-
Create a project in Google Cloud Console
-
Enable Google Sheets API and Google Drive API
-
Configure OAuth consent screen (set to "Testing" mode)
-
Create OAuth 2.0 credentials (Desktop App type)
-
Download as client_secret.json in /auth folder
- Set up an SMTP email provider (e.g., Gmail).
- Update the
email_sender.py
script with your SMTP server details and email credentials.
Once the setup is complete, start the automation process by running:
streamlit run dashboard.py
This will:
✅ Scrape job listings
✅ Generate personalized cover letters
✅ Send emails automatically
✅ Track job application statuses in Google Sheets
✅ *Search Jobs: Define your target roles/locations
✅ Generate Materials: Upload CV to create cover letters
Apply: Send applications directly from the dashboard
All Google integrations use OAuth 2.0
Email credentials are never stored in plaintext
User data remains private (no cloud storage)
This project is licensed under the MIT License. See the LICENSE
file for details.
For issues or questions, please open an issue.
The detail report https://app.readytensor.ai/publications/create/a0TkAcBrpkX1/documentation