Skip to content

Mithurn/Linkedin_Job_Automation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

20 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


JOB-EZ
JOB-EZ: AI-Powered Job Application Automation

An intelligent LinkedIn automation bot that streamlines your job search with AI-powered form filling, stealth technology, and smart resume management.

Python Playwright Google Gemini
LinkedIn Anti-Detection Production Ready

Problem β€’ Solution β€’ Demo β€’ Features β€’ Tech Stack β€’ Installation β€’ Usage β€’ Roadmap


🎬 Demo

Bot in Action

JOB-EZ Demo

Automated LinkedIn Easy Apply in action - from job search to application submission

Application Tracker

Job Tracker Excel

Comprehensive Excel tracker with job details, status, and timestamps

Key Highlights

  • ⚑ Speed: Applies to 50+ jobs in under 30 minutes
  • 🎯 Accuracy: 95%+ form completion rate
  • πŸ€– Stealth: Human-like behavior avoids detection
  • πŸ“Š Tracking: Complete application history in Excel

πŸ’Ό Problem Statement

"Job seekers spend 3-4 hours daily filling repetitive application forms."

The modern job search process is broken:

  • πŸ“ Repetitive Form Filling - Same information across hundreds of applications
  • ⏰ Time Consuming - Manual data entry for each Easy Apply form
  • πŸ€– Bot Detection - LinkedIn flags automated applications
  • πŸ“„ Resume Management - Tailoring resumes for each position is tedious
  • πŸ“Š No Tracking - Hard to keep track of applications and responses

πŸ’‘ Our Mission

Build an intelligent automation system that handles the entire job application process while maintaining human-like behavior to avoid detection. A single configuration file powers hundreds of applications with smart form filling and AI-driven resume optimization.


πŸš€ AI-Driven Solution

🎭 Stealth Automation Engine

Advanced browser automation with anti-detection technology that mimics human behavior.

  • βœ… Persistent Chrome profile for authenticity
  • βœ… Human-like typing, scrolling, and mouse movements
  • βœ… Random delays and reading patterns
  • βœ… Disables automation detection flags

🧠 Smart Form Intelligence

AI-powered form field detection and intelligent auto-fill system.

  • βœ… Context-aware field matching
  • βœ… Multi-step form navigation (Contact β†’ Resume β†’ Review β†’ Submit)
  • βœ… Dropdown and radio button handling
  • βœ… Tracks unfilled fields for continuous improvement

πŸ“„ AI Resume Optimizer

Google Gemini-powered resume tailoring for each job application.

  • βœ… Analyzes job descriptions
  • βœ… Tailors resume content automatically
  • βœ… Supports multiple resume versions
  • βœ… PDF parsing and generation

πŸ“Š Application Tracker

Comprehensive Excel-based tracking system for all applications.

  • βœ… Real-time application logging
  • βœ… Job details and timestamps
  • βœ… Status tracking (Success/Failed/Skipped)
  • βœ… Unfilled fields tracker for optimization

✨ Features

πŸ€– Intelligent Automation

Feature Description
Easy Apply Detection Automatically finds and clicks Easy Apply buttons
Multi-Step Forms Handles complex multi-page application forms
Smart Field Filling Matches form fields to your profile intelligently
Resume Upload Automatically uploads appropriate resume
Error Recovery Handles failed applications gracefully

🎭 Anti-Detection Technology

Feature Description
Human Behavior Simulation Random typing speeds, mouse movements, scrolling
Reading Patterns Simulates reading job descriptions
Variable Delays Random wait times between actions
Browser Fingerprinting Uses real Chrome profile with persistent cookies
Navigator Spoofing Hides automation markers from detection

πŸ“Š Tracking & Analytics

Feature Description
Job Tracker Excel file with all application details
Unfilled Fields Log Tracks questions that need manual answers
Detailed Logging Complete console logs with timestamps
Success Metrics Track application success/failure rates

πŸ› οΈ Tech Stack

Backend Architecture

  • Python 3.10+ - Core development language
  • Playwright - Browser automation framework
  • Chromium - Persistent browser context for stealth

AI & Intelligence

Module Technology Purpose
Resume AI Google Gemini API AI-powered resume tailoring
Form Intelligence Pattern Matching Smart field detection and filling
Behavior Simulation Custom Algorithms Human-like interaction patterns

Data Management

  • Pandas - Data manipulation and analysis
  • OpenPyXL - Excel file generation with formatting
  • PyPDF2 - Resume parsing and extraction
  • Python-dotenv - Secure environment variable management

Security & Configuration

  • Environment Variables - Secure credential storage
  • Git Ignore - Protected sensitive data
  • User Config - Customizable profile and answers

πŸ“¦ Project Structure

JOB-EZ/
β”œβ”€β”€ main.py                      # Main entry point
β”œβ”€β”€ setup_login.py               # LinkedIn authentication setup
β”œβ”€β”€ requirements.txt             # Python dependencies
β”œβ”€β”€ .env                        # Environment variables (not tracked)
β”œβ”€β”€ .gitignore                  # Git exclusions
β”œβ”€β”€ data/
β”‚   β”œβ”€β”€ chrome_profile/         # Persistent browser profile
β”‚   β”œβ”€β”€ logs/                   # Application logs
β”‚   β”œβ”€β”€ resumes/                # Resume files
β”‚   β”œβ”€β”€ job_tracker.xlsx        # Application history
β”‚   └── unfilled_fields_tracker.xlsx  # Optimization data
└── src/
    β”œβ”€β”€ bot.py                  # Core automation logic
    β”œβ”€β”€ config.py               # Configuration settings
    β”œβ”€β”€ llm_engine.py           # AI resume tailoring
    β”œβ”€β”€ logger.py               # Logging utilities
    β”œβ”€β”€ resume_manager.py       # Resume handling
    β”œβ”€β”€ utils.py                # Humanization utilities
    β”œβ”€β”€ user_config.py          # User profile (not tracked)
    └── user_config_example.py  # Template for user config

πŸš€ Installation

Prerequisites

  • βœ… Python 3.10 or higher
  • βœ… Google Chrome browser
  • βœ… LinkedIn account
  • βœ… Google Gemini API key (optional, for resume AI)

Step 1: Clone Repository

git clone https://github.com/Mithurn/JOB-EZ.git
cd JOB-EZ

Step 2: Install Dependencies

# Install Python packages
pip3 install -r requirements.txt

# Install Playwright browsers
playwright install

Step 3: Configuration

Create .env file in root directory:

GEMINI_API_KEY="your_gemini_api_key_here"
LINKEDIN_USERNAME="your_linkedin_email"
LINKEDIN_PASSWORD="your_linkedin_password"

Create src/user_config.py from template:

cp src/user_config_example.py src/user_config.py

Edit src/user_config.py with your details:

PROFILE = {
    "first_name": "John",
    "last_name": "Doe",
    "email": "john@example.com",
    "phone": "+1234567890",
    "city": "San Francisco",
    # ... add more fields
}

ANSWERS = {
    "authorized to work": "Yes",
    "require sponsorship": "No",
    # ... add more Q&A pairs
}

Step 4: LinkedIn Authentication

python3 setup_login.py

This opens a browser window where you log into LinkedIn. Session cookies are saved for future use.


πŸ’» Usage

Basic Usage

python3 main.py

What Happens:

  1. πŸ” Job Discovery - Loads your LinkedIn job search results
  2. 🎯 Smart Application - Clicks Easy Apply and navigates forms
  3. ✍️ Auto-Fill - Fills all form fields from your profile
  4. πŸ“Ž Resume Upload - Uploads appropriate resume version
  5. βœ… Submit - Completes application (or dry-run mode)
  6. πŸ“Š Track - Logs to Excel tracker

Configuration Options

Edit src/config.py:

DRY_RUN = True              # Test mode (doesn't submit)
MAX_APPLICATIONS = 50       # Limit applications per run
CHROME_USER_DATA = "..."    # Browser profile path

Advanced Features

Multiple Resume Support: Place resumes in data/resumes/:

  • resume_fullstack.pdf
  • resume_frontend.pdf
  • resume_backend.pdf

Custom Form Answers: Add to user_config.py:

ANSWERS = {
    "years of experience": "3",
    "bachelor degree": "Yes",
    "willing to relocate": "No",
}

🎯 How It Works

Phase 1: Stealth Launch

πŸš€ Launch Chrome with anti-detection settings
   β†’ Persistent profile (real cookies & history)
   β†’ Disable automation flags
   β†’ Inject JavaScript navigator spoofing

Phase 2: Job Discovery

πŸ” Navigate to LinkedIn job search URL
   β†’ Scrape Easy Apply job listings
   β†’ Extract job details (title, company, URL)
   β†’ Filter already-applied jobs

Phase 3: Smart Application

🎯 For each job:
   β†’ Click Easy Apply button
   β†’ Wait for modal to load
   β†’ Enter multi-step form loop:
      ✍️ Fill text inputs (name, email, phone)
      βœ… Select radio buttons (Yes/No questions)
      πŸ“‹ Handle dropdowns (experience, education)
      πŸ“Ž Upload resume
      ➑️ Click Next/Review/Submit
   β†’ Track result to Excel

Phase 4: Optimization

πŸ“Š Log unfilled fields to tracker
   β†’ Analyze which questions weren't auto-filled
   β†’ Suggest additions to user_config.py
   β†’ Continuous improvement loop

πŸ“ˆ Sample Use Cases

Smart Form Filling

  • Input Field: "First Name"
  • Bot Action: Fills "John" from PROFILE["first_name"]

Intelligent Matching

  • Input Field: "Years of Python Experience"
  • Bot Logic: Matches keyword "python" β†’ Fills from PROFILE["python"]

Question Answering

  • Input Question: "Are you authorized to work in the US?"
  • Bot Logic: Matches "authorized to work" β†’ Selects "Yes" from ANSWERS

Resume Upload

  • Job Title: "Full Stack Developer"
  • Bot Action: Uploads resume_fullstack.pdf

πŸ”§ Recent Updates

Latest Improvements (Dec 2025)

  • βœ… Modal Detection Fix - Waits for Easy Apply modal before interaction
  • βœ… Scoped Button Search - Searches within modal instead of entire page
  • βœ… Enhanced Click Logic - Direct Playwright clicks with proper error handling
  • βœ… Better Wait Times - Improved delays between form steps
  • βœ… Debug Output - Shows available buttons when stuck
  • βœ… Error Recovery - Graceful handling of missing fields

Bug Fixes

  • πŸ› Fixed infinite resume upload loop
  • πŸ› Fixed "Next" button not being detected
  • πŸ› Fixed modal loading timeout issues
  • πŸ› Fixed button search finding wrong elements

🚧 Troubleshooting

Import Errors (Pylance)

Issue: VS Code shows import warnings
Solution: Environment mismatch - packages installed in different Python version
Fix:

# Use the Python where packages are installed
which python3
pip3 list | grep playwright

Modal Not Loading

Issue: Jobs being skipped with "No modal" message
Solution: Job requires external application (not Easy Apply)
Note: Bot automatically skips these

Unfilled Fields

Issue: Some form fields not auto-filled
Solution: Check data/unfilled_fields_tracker.xlsx
Fix: Add missing fields to src/user_config.py

Bot Detection

Issue: LinkedIn showing CAPTCHA or "unusual activity"
Solution: Reduce application speed, increase delays
Fix: Adjust human_sleep() timing in src/utils.py


πŸ›£οΈ Future Roadmap

Phase 1: Enhancement (Q1 2026)

  • πŸ” Multi-platform support (Indeed, Glassdoor)
  • 🧠 ML-based field prediction
  • πŸ“§ Email integration for application tracking
  • πŸ”” Real-time notifications

Phase 2: Intelligence (Q2 2026)

  • πŸ€– Advanced AI resume generation
  • πŸ“Š Application analytics dashboard
  • 🎯 Job match scoring
  • πŸ’¬ Auto-reply to recruiter messages

Phase 3: Scale (Q3 2026)

  • ☁️ Cloud deployment option
  • πŸ‘₯ Multi-user support
  • πŸ“± Mobile app companion
  • 🌐 Web dashboard interface

πŸ‘¨β€πŸ’» Developer

Mithurn Jeromme

Full-Stack Developer & AI Automation Specialist


⚠️ Disclaimer

Educational & Research Purposes Only

This tool is designed for:

  • βœ… Learning browser automation
  • βœ… Understanding AI-powered workflows
  • βœ… Personal productivity enhancement

Important Notes:

  • ⚠️ Use responsibly and ethically
  • ⚠️ Respect LinkedIn's Terms of Service
  • ⚠️ Be mindful of automation rate limits
  • ⚠️ Automated activity may violate platform policies

The developer is not responsible for misuse or policy violations.


πŸ“œ License

MIT License - See LICENSE file for details


⭐ Star this repo if JOB-EZ helps your job search!

"Automate the boring stuff, focus on landing your dream job"

GitHub stars GitHub forks

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages