Install
openclaw skills install job-hunter-botBuild and deploy an automated job hunting system with Telegram bot. Scrapes LinkedIn jobs, scores them by match percentage, sends notifications with apply bu...
openclaw skills install job-hunter-botBuild a complete job hunting system: LinkedIn scraper, match scorer, and Telegram bot with inline buttons.
Ask the user for:
Guide the user:
/newbot, choose a name and usernameCreate a project directory and deploy these scripts (from scripts/):
job-hunter/
├── config.json # Bot token, user IDs, candidate profile
├── jobs.db # SQLite database (auto-created)
├── scorer.py # Match scoring engine
├── linkedin_scraper.py # LinkedIn job scraper
├── bot.py # Telegram bot with inline buttons
└── notify_new_jobs.py # Send new matches to Telegram
{
"telegram_bot_token": "TOKEN_FROM_BOTFATHER",
"telegram_user_id": 123456789,
"authorized_users": [123456789],
"notify_users": [123456789],
"candidate": {
"name": "Full Name",
"email": "email@example.com",
"phone": "054-1234567",
"linkedin": "linkedin.com/in/username",
"location": "Tel Aviv, Israel",
"target_titles": ["data analyst", "bi developer"],
"good_titles": ["business analyst"],
"core_skills": ["sql", "python", "power bi"],
"bonus_skills": ["etl", "dax", "pandas"],
"max_years": 2,
"preferred_locations": ["tel aviv", "herzliya", "ramat gan"],
"metro_locations": ["petah tikva", "rishon lezion"]
}
}
After copying scripts from scripts/, customize:
scorer.py - Update PROFILE dict with candidate's profile from config.jsonlinkedin_scraper.py - Update DEFAULT_QUERIES with relevant search termsbot.py - Should work with just config.json changesnotify_new_jobs.py - Verify notification flow and recipientsInstall Python dependencies required by the included scripts. At minimum, verify the libraries imported by the scraper and bot are available in your environment.
The database auto-creates on first run. Schema:
CREATE TABLE jobs (
job_id TEXT PRIMARY KEY,
title TEXT, company TEXT, location TEXT,
url TEXT, career_url TEXT,
description TEXT, requirements TEXT,
required_years INTEGER,
published_date TEXT, found_date TEXT,
status TEXT DEFAULT 'new'
);
nohup python3 -u bot.py > bot.log 2>&1 &
# Run daily job search + notify at 9 AM
0 9 * * * cd /path/to/job-hunter && python3 linkedin_scraper.py && python3 notify_new_jobs.py
Or use OpenClaw cron:
openclaw cron add --name daily-job-search --schedule "0 9 * * *" --prompt "Run job search and notify"
| Command | What it does |
|---|---|
/top | Show top jobs (score >= 60%) |
/jobs | List all jobs with scores |
/search | Trigger new LinkedIn search |
/stats | Show statistics |
/applied | Show applied jobs |
/help | Show commands |
| Factor | Points | Logic |
|---|---|---|
| Title match | 0-30 | Perfect match = 30, partial = 15 |
| Skills match | 0-30 | Core skills = 5 each (max 20), bonus = 2 each (max 10) |
| Experience | 0-40 | 0yr = 40, 1yr = 30, 2yr = 10, 3+ = -20 |
| Location | 0-25 | Preferred = 25, metro = 15, country = 5 |
| Junior keywords | 0-10 | Entry-level indicators |
Thresholds: 🟢 >= 70% apply | 🟡 >= 50% review | 🔴 < 50% skip
ps aux | grep bot.py)