⬡ Hub
Skip to content

AI_Job_Agent

AI Job Application Agent

An intelligent automation agent that automatically searches for job openings on multiple platforms and applies on your behalf.

🎯 Features

  • Multi-Platform Support: LinkedIn, Naukri, Hirist, and Remote job boards
  • Intelligent Job Matching: Filters jobs based on your preferences
  • Auto-Fill Applications: Automatically fills application forms
  • AI-Powered Q&A: Answers application questions intelligently (optional)
  • Application Tracking: Maintains database of applied jobs
  • Duplicate Prevention: Avoids applying to the same job twice
  • Stealth Mode: Human-like behavior to avoid detection

📋 Supported Platforms

  1. LinkedIn - Easy Apply jobs
  2. Naukri.com - Instant Apply jobs
  3. Hirist.com - Tech jobs
  4. Remote Job Boards - Himalayas, Remotive, etc.

🚀 Installation

Prerequisites

  • Python 3.9 or higher
  • Google Chrome browser
  • ChromeDriver (automatically managed)

Step 1: Clone or Download

# If you have the zip file, extract it
unzip AI_Job_Agent.zip
cd AI_Job_Agent
# Windows
python -m venv venv
venv\Scripts\activate

# Linux/Mac
python3 -m venv venv
source venv/bin/activate

Step 3: Install Dependencies

pip install -r requirements.txt

Step 4: Configure Environment Variables

# Copy the example env file
cp .env.example .env

# Edit .env file and add your credentials
# Use any text editor (notepad, vim, nano, etc.)

Step 5: Configure Your Profile

# Edit config.yaml file with your details:
# - Personal information
# - Work experience
# - Skills
# - Job preferences
# - Resume path

⚙️ Configuration

1. User Profile (config.yaml)

Edit config.yaml and update:

  • Personal details (name, email, phone)
  • Work experience
  • Skills
  • Resume path
  • Job preferences (titles, locations, salary)

2. Platform Credentials (.env)

Add your login credentials in .env:

LINKEDIN_EMAIL=your.email@example.com
LINKEDIN_PASSWORD=your_password

NAUKRI_EMAIL=your.email@example.com
NAUKRI_PASSWORD=your_password

3. AI Integration (Optional)

To enable AI-powered question answering:

  1. Get API key from OpenAI or Google Gemini
  2. Add to .env:
GEMINI_API_KEY=your_api_key
  1. Enable in config.yaml:
ai_settings:
  enabled: true
  provider: "gemini"

📖 Usage

Basic Usage

Apply to jobs on all platforms:

python main.py

Platform-Specific

Apply only on LinkedIn:

python main.py --platform linkedin

Apply on specific platform:

python main.py --platform naukri
python main.py --platform hirist
python main.py --platform remote

Limit Applications

Apply to maximum 20 jobs:

python main.py --max-apps 20

Dry Run (Test Mode)

Test without actually applying:

python main.py --dry-run

Configure Profile Interactively

python main.py --config

📁 Project Structure

AI_Job_Agent/
├── main.py                 # Entry point
├── requirements.txt        # Dependencies
├── config.yaml            # Configuration
├── .env                   # Credentials (DO NOT SHARE)
├── README.md              # This file
├── config/
│   ├── settings.py        # Settings manager
│   ├── user_profile.py    # Profile configuration
│   └── qa_bank.py         # Question-answer bank
├── scrapers/
│   ├── base_scraper.py    # Base scraper class
│   ├── linkedin_scraper.py
│   ├── naukri_scraper.py
│   ├── hirist_scraper.py
│   └── remote_jobs_scraper.py
├── automation/
│   ├── form_filler.py     # Form auto-fill
│   ├── login_handler.py   # Login automation
│   └── application_submitter.py
├── ai/
│   ├── question_answerer.py  # AI Q&A
│   └── resume_tailor.py      # Resume customization
├── database/
│   ├── db_manager.py      # Database operations
│   └── models.py          # Data models
├── utils/
│   ├── logger.py          # Logging
│   └── helpers.py         # Utility functions
├── data/
│   ├── jobs.db            # SQLite database
│   └── logs/              # Log files
└── resumes/
    └── default_resume.pdf  # Your resume

⚠️ Important Considerations

  1. Terms of Service: Using automation may violate platform ToS
  2. Rate Limiting: Respect platform limits to avoid bans
  3. Accuracy: Review auto-filled information for accuracy
  4. Authenticity: Be prepared to discuss all applications

Best Practices

  1. Start Slow: Begin with 10-20 applications per day
  2. Review Settings: Double-check configuration before running
  3. Monitor Logs: Check data/logs/app.log for issues
  4. Update Resume: Keep your resume current
  5. Customize Answers: Review and update Q&A responses

Security

  1. Never Share .env: Keep credentials private
  2. Use Strong Passwords: Secure your accounts
  3. Regular Updates: Keep dependencies updated
  4. Secure Storage: Protect database files

🛠️ Troubleshooting

Issue: ChromeDriver Error

Solution: The package auto-downloads ChromeDriver, but if issues occur:

pip install --upgrade undetected-chromedriver

Issue: Login Fails

Solutions: 1. Check credentials in .env 2. Disable 2-factor authentication temporarily 3. Try manual login first to verify 4. Check for CAPTCHA requirements

Issue: No Jobs Found

Solutions: 1. Verify job search criteria in config.yaml 2. Broaden search locations or titles 3. Check platform availability 4. Review logs for errors

Issue: Application Fails

Solutions: 1. Run in non-headless mode (headless: false in config) 2. Check screenshot in data/screenshots/ 3. Review error logs 4. Slow down automation (increase delays)

📊 Viewing Results

Check Applied Jobs

# View database
sqlite3 data/jobs.db "SELECT * FROM applications ORDER BY applied_at DESC LIMIT 10;"

Application Statistics

from database.db_manager import DatabaseManager

db = DatabaseManager()
count = db.get_applications_count(days=1)
print(f"Applications today: {count}")

🔄 Updates and Maintenance

Update Dependencies

pip install --upgrade -r requirements.txt

Backup Data

# Backup database
cp data/jobs.db data/jobs_backup_$(date +%Y%m%d).db

🤝 Support

For issues or questions:

  1. Check troubleshooting section
  2. Review logs in data/logs/
  3. Check configuration files
  4. Test with --dry-run flag

⚖️ Disclaimer

This tool is for educational purposes. Users are responsible for:

  1. Complying with platform Terms of Service
  2. Ensuring accuracy of applications
  3. Following local employment laws
  4. Maintaining professional conduct

The authors are not responsible for: - Account suspensions - Application rejections
- Legal issues - Data privacy violations

📝 License

This project is provided as-is for personal use only.

🎓 Learning Resources


Version: 1.0.0
Last Updated: November 2025

Happy Job Hunting! 🎯

Files and Subdirectories