__ __ ___ __ __ _ ____ __
/ /___ / /_ / | __ __/ /_____ ____ ___ ____ _/ /_(_)___ ____ / __ )____ / /_
__ / / __ \/ __ \/ /| |/ / / / __/ __ \/ __ `__ \/ __ `/ __/ / __ \/ __ \/ __ / __ \/ __/
/ /_/ / /_/ / /_/ / ___ / /_/ / /_/ /_/ / / / / / / /_/ / /_/ / /_/ / / / / /_/ / /_/ / /_
\____/\____/_.___/_/ |_\__,_/\__/\____/_/ /_/ /_/\__,_/\__/_/\____/_/ /_/_____/\____/\__/
π github.com/alhamrizvi-cloud/JobAutomationBot
Automated Cybersecurity Job Application System β finds and applies to penetration testing, ethical hacking, and security analyst jobs across LinkedIn, Naukri, web job boards, and via email.
job_bot/
βββ main.py β Orchestrator + CLI entry point
βββ linkedin_bot.py β LinkedIn Easy Apply automation
βββ naukri_bot.py β Naukri.com login + auto apply
βββ email_sender.py β SMTP email applications with resume
βββ job_scraper.py β Scrape Indeed, TimesJobs, Internshala
βββ config.py β All settings (reads from .env)
βββ tracker.py β CSV-based application tracker
βββ notifier.py β Telegram + email notifications
βββ logger.py β Shared logging setup
βββ requirements.txt β Python dependencies
βββ .env.example β Credentials template
βββ .gitignore
βββ resume.pdf β β¬
Place YOUR resume here
βββ logs/
β βββ job_bot.log
βββ data/
βββ applied_jobs.csv β Auto-created tracker
βββ email_targets.csv β Companies to email (edit this!)
python --version # Should be 3.11 or highergit clone github.com/alhamrizvi-cloud/JobAutomationBot
cd JobAutomationBotpython -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate.bat # Windowspip install -r requirements.txt
playwright install chromiumcp .env.example .envOpen .env in any text editor and fill in:
- Your name, phone, email
- LinkedIn login credentials
- Naukri login credentials
- Gmail + App Password (see Gmail Setup below)
- Telegram Bot token (optional)
Place your resume as resume.pdf in the job_bot/ folder.
python main.py # Full run (all modules)
python main.py --stats # Check stats anytimeGmail requires an App Password (not your normal password) for SMTP.
- Go to https://myaccount.google.com/security
- Enable 2-Step Verification if not already on
- Go to https://myaccount.google.com/apppasswords
- Select App: Mail | Device: Windows Computer
- Click Generate
- Copy the 16-character password into
.envasEMAIL_PASSWORD
Edit data/email_targets.csv (auto-created on first run):
company,contact_email,role,job_link
Infosys,hr@infosys.com,Security Analyst,https://infosys.com/careers/123
TCS,security.hiring@tcs.com,Penetration Tester,https://tcs.com/jobs/456Then run:
python main.py --email- Open Telegram and message
@BotFather - Send
/newbotand follow prompts β copy the Bot Token - Message
@userinfobotto get your Chat ID - Add both to
.env
You'll receive instant notifications when jobs are applied or errors occur.
python main.py --scheduleRuns every day at the time set in config.py (SCHEDULE_TIME = "09:00").
Keep the terminal open or run in a screen / tmux session.
crontab -eAdd this line to run at 9 AM every day:
0 9 * * * cd /path/to/job_bot && /path/to/venv/bin/python main.py >> logs/cron.log 2>&1
- Open Task Scheduler β Create Basic Task
- Trigger: Daily at 9:00 AM
- Action: Start Program
- Program:
C:\path\to\venv\Scripts\python.exe - Arguments:
C:\path\to\job_bot\main.py
python main.py # Run all modules
python main.py --schedule # Schedule daily runs
python main.py --linkedin # LinkedIn only
python main.py --naukri # Naukri only
python main.py --email # Email campaign only
python main.py --scrape # Scrape + display (no apply)
python main.py --stats # Show application statisticsAll applications are saved to data/applied_jobs.csv:
job_title, company, platform, status, date_applied, job_link
Penetration Tester, SecureTech, LinkedIn, Applied, 2024-07-01 09:15:00, https://...
SOC Analyst, Wipro, Naukri, Applied, 2024-07-01 09:18:33, https://...
The bot automatically skips jobs you've already applied to.
| Setting | Default | Description |
|---|---|---|
JOB_KEYWORDS |
8 keywords | Cybersecurity job title filters |
LOCATION_FILTERS |
India/Mumbai/Remote | Location targets |
MAX_APPLICATIONS_PER_RUN |
20 | Safety cap per session |
DELAY_BETWEEN_APPS_SEC |
(5, 15) | Random delay range |
HEADLESS_BROWSER |
True | Set False to watch browser |
SCHEDULE_TIME |
"09:00" | Daily run time |
-
Terms of Service: LinkedIn and Naukri prohibit automated access. Use only for personal job searching and keep MAX_APPLICATIONS low.
-
Rate Limiting: The bot includes random delays. Don't remove them.
-
Account Safety: LinkedIn may temporarily restrict accounts if too many actions are detected. Start with
MAX_APPLICATIONS_PER_RUN = 5and increase gradually. -
CAPTCHA: Both platforms may show CAPTCHAs. Set
HEADLESS_BROWSER = Falseto solve them manually when needed. -
Credentials: Never share your
.envfile or commit it to GitHub.
"No module named playwright"
pip install playwright && playwright install chromiumLinkedIn login fails / CAPTCHA
# In config.py, set:
HEADLESS_BROWSER = False
# Then run and solve CAPTCHA manuallyGmail SMTP authentication error
- Make sure you're using an App Password, not your Gmail password
- Ensure 2-Step Verification is enabled on your Google account
No jobs found
- Check your internet connection
- The site's HTML structure may have changed β check logs for details
- Fill your LinkedIn profile completely before running the bot
- Upload your resume to Naukri profile manually once before using the bot
- Add a professional photo to all platforms
- Keep
resume.pdfupdated with certifications (CEH, CompTIA Security+, etc.) - Add CTF wins (TryHackMe, HackTheBox) to your profiles
Built with β€οΈ for aspiring cybersecurity professionals
π github.com/alhamrizvi-cloud/JobAutomationBot