Build 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/):
text
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
json
{
"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:
sql
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'
);
bash
nohup python3 -u bot.py > bot.log 2>&1 &
bash
# 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:
text
openclaw cron add --name daily-job-search --schedule "0 9 * * *" --prompt "Run job search and notify"
CommandWhat it does/topShow top jobs (score >= 60%)/jobsList all jobs with scores/searchTrigger new LinkedIn search/statsShow statistics/appliedShow applied jobs/helpShow commands
FactorPointsLogicTitle match0-30Perfect match = 30, partial = 15Skills match0-30Core skills = 5 each (max 20), bonus = 2 each (max 10)Experience0-400yr = 40, 1yr = 30, 2yr = 10, 3+ = -20Location0-25Preferred = 25, metro = 15, country = 5Junior keywords0-10Entry-level indicators
Thresholds: 🟢 >= 70% apply | 🟡 >= 50% review | 🔴 < 50% skip
ps aux | grep bot.py)