Sleep at 11 PM. Wake up to 100+ job applications sent. Zero manual effort.
Built by Kottana Indra Kiran — Full Stack + AI Engineer
JobBot is a fully automated job application pipeline that runs every night while you sleep:
- Scrapes 200–500 fresh jobs from LinkedIn, Naukri, Wellfound, and Internshala
- Filters jobs using AI keyword matching against your skill profile
- Generates a custom ATS-optimized resume per job description using Claude AI
- Writes a personalized cover letter for every application
- Auto-applies via Playwright (LinkedIn Easy Apply + Naukri)
- Cold emails recruiters directly using Gmail API
- Logs every application to Google Sheets
- Sends you a Gmail digest — wake up to a full report of what was applied overnight
Your Profile (profile.json)
│
▼
┌─────────────────────┐
│ Job Scraper │ ← LinkedIn RSS, Naukri, Wellfound, Internshala
└────────┬────────────┘
│ 200–500 raw jobs
▼
┌─────────────────────┐
│ Smart Filter │ ← Dedup + keyword match score + freshness
└────────┬────────────┘
│ Top 100 quality matches
▼
┌─────────────────────┐
│ Claude AI │ ← ATS Resume generator + Cover letter
└────────┬────────────┘
│
┌────┴──────┐
▼ ▼
Playwright Gmail API
Auto-Apply Cold Email
│ │
└─────┬─────┘
▼
Google Sheets Logger
│
▼
Gmail Digest to You
- Full Stack Developer
- Software Development Engineer (SDE)
- Java Developer
- Frontend Developer / React Developer
- AI Engineer / ML Engineer
- Backend Developer
Location: Any city in India + Remote
| Component | Tool | Cost |
|---|---|---|
| Job scraping | requests + BeautifulSoup + LinkedIn RSS |
✅ Free |
| ATS resume AI | Claude API (claude-sonnet) |
✅ Free tier |
| Cover letter AI | Claude API | ✅ Free tier |
| Auto-apply bot | Playwright (headless Chromium) |
✅ Free |
| Email outreach | Gmail API (OAuth2) | ✅ Free (500/day) |
| Application tracker | Google Sheets API + gspread |
✅ Free |
| Scheduler | GitHub Actions (cron) | ✅ Free (2000 min/mo) |
| PDF generation | reportlab + python-docx |
✅ Free |
Total monthly cost: ₹0
jobbot/
├── .github/
│ └── workflows/
│ └── nightly_jobbot.yml # GitHub Actions cron scheduler
├── jobbot/
│ ├── profile.json # Your details — edit this once
│ ├── scraper.py # Scrapes jobs from all sources
│ ├── filter.py # Dedup + match scoring
│ ├── resume_gen.py # Claude AI ATS resume generator
│ ├── cover_gen.py # Claude AI cover letter generator
│ ├── apply_bot.py # Playwright auto-apply bot
│ ├── email_bot.py # Gmail API cold email sender
│ ├── sheets_logger.py # Google Sheets tracker
│ ├── digest.py # Nightly Gmail summary
│ └── main.py # Orchestrates everything
├── resumes/ # Generated PDF resumes (gitignored)
├── logs/ # Run logs (gitignored)
├── .env.example # Environment variable template
├── requirements.txt # All dependencies
└── README.md
git clone https://github.com/kottanaindrakiran/-jobbot.git
cd -jobbot
pip install -r requirements.txt
playwright install chromiumEdit jobbot/profile.json with your details:
{
"name": "Your Name",
"email": "your@gmail.com",
"phone": "9876543210",
"github": "https://github.com/yourusername",
"linkedin": "https://linkedin.com/in/yourprofile",
"target_roles": ["Full Stack Developer", "React Developer", "SDE"],
"skills": { ... },
"projects": [ ... ]
}Copy .env.example to .env and fill in:
cp .env.example .envANTHROPIC_API_KEY=your_key_here
LINKEDIN_EMAIL=your@email.com
LINKEDIN_PASSWORD=yourpassword
NAUKRI_EMAIL=your@email.com
NAUKRI_PASSWORD=yourpassword
GMAIL_CREDENTIALS_JSON=path/to/credentials.json
GOOGLE_SHEETS_CREDENTIALS=path/to/service_account.json
GOOGLE_SHEET_ID=your_sheet_id
MY_EMAIL=your@gmail.com| API | Where | Guide |
|---|---|---|
| Anthropic API Key | console.anthropic.com | Free tier available |
| Gmail API OAuth2 | Google Cloud Console → APIs → Gmail API | Enable + download credentials.json |
| Google Sheets API | Same Google Cloud project → Sheets API | Enable + create service account |
cd jobbot
python main.pyAdd these secrets to your GitHub repo → Settings → Secrets:
ANTHROPIC_API_KEY
LINKEDIN_EMAIL
LINKEDIN_PASSWORD
NAUKRI_EMAIL
NAUKRI_PASSWORD
GMAIL_CREDENTIALS_JSON
GOOGLE_SHEETS_CREDENTIALS
GOOGLE_SHEET_ID
Push to main → GitHub Actions runs every night at 11:30 PM IST automatically.
Gmail subject: JobBot Report — 2026-05-20 — 94 applications sent
JobBot Nightly Report — 20 May 2026
Summary:
- Auto-applied (LinkedIn/Naukri): 76
- Cold emails sent: 18
- Failed/skipped: 6
- Total: 94
Top companies applied tonight:
1. Razorpay — Full Stack Developer (match: 87%)
2. Zepto — React Developer (match: 84%)
3. PhonePe — Java Developer (match: 81%)
...
View full tracker: [Google Sheet link]
Every job is logged automatically:
| Date | Company | Role | Source | Method | Match % | Status |
|---|---|---|---|---|---|---|
| 20-May | Razorpay | Full Stack Dev | EasyApply | 87% | Applied | |
| 20-May | Zepto | React Dev | Naukri | EasyApply | 84% | Applied |
| 20-May | SaaS Startup | AI Engineer | Wellfound | 79% | Applied |
In profile.json you can tune:
target_roles— which roles to searchsalary_expectation— used in screening questionslocation_preference— "Remote" / "Any" / specific cityskills— used for ATS keyword matching score
In filter.py:
MIN_MATCH_SCORE— default 30%, raise to get fewer but better matchesMAX_JOBS_PER_RUN— default 100
- LinkedIn rate limiting — bot sleeps 5–10s between applications, mimics human behavior
- Credentials security — never commit
.envorcredentials.json(already in.gitignore) - Gmail limit — Gmail API allows 500 emails/day free, bot respects this
- ATS resumes — Claude generates truthful resumes, only reorganizes and keyword-matches your real profile
- LinkedIn ToS — use at your own discretion; bot uses slow, human-like interactions
For each job, Claude gets:
- Your full profile (skills, projects, experience)
- The exact job description
Claude returns a resume where:
- Your skills are reordered to match JD keywords
- Most relevant projects are highlighted first
- Keywords from the JD appear naturally
- Everything stays 100% truthful — no hallucinations
Kottana Indra Kiran — B.Tech CSE, SRM IST Chennai (2026)
- 🐙 GitHub: kottanaindrakiran
- 💼 LinkedIn: indra-kiran-kottana
- 🏆 LeetCode: kottanaindrakiran
- 📧 Email: kottanaindrakiran@gmail.com
MIT License — free to use, modify, and distribute.
Built because applying to jobs manually is a waste of time. Let the bot grind while you build.