Loading repository data…
Loading repository data…
711634 / repository
AI-powered job hunting agent that scrapes LinkedIn daily, scores roles against your resume using Groq LLM, and emails you the top matches — free with GitHub Actions.
An automated AI agent that scrapes LinkedIn daily, scores jobs against your resume, tailors your CV bullets for top matches, and emails you the results every morning — completely free.
Click Fork → Create fork
docs.google.com/spreadsheets/d/THIS_PART/editGo to Settings → Secrets and variables → Actions → New repository secret
| Secret | Value | Required? |
|---|---|---|
API_KEY | Your Groq API key (gsk_...) | ✅ |
API_BASE | https://api.groq.com/openai/v1 | ✅ |
LLM_MODEL | llama-3.3-70b-versatile | ✅ |
EMAIL_SENDER | Your Gmail address | ✅ |
EMAIL_PASSWORD | Gmail App Password | ✅ |
EMAIL_RECEIVER | Email to receive reports | ✅ |
RESUME_TEXT | Your full resume as plain text | ✅ |
SCORE_THRESHOLD | Minimum score to include (e.g. 50) | ✅ |
GOOGLE_SHEET_ID | ID from your Google Sheet URL | ✅ |
GCP_CREDENTIALS_JSON | Paste entire contents of your service account JSON | ✅ |
CRITERIA | Optional extra scoring instructions | Optional |
RESUME_FILE_ID | File ID from Google Drive resume URL | Optional |
Edit main.py to change search terms, location, or thresholds:
SEARCH_TERMS = [
"Junior Product Manager",
"Graduate Finance Analyst",
"Junior Business Analyst",
"Graduate Operations Analyst",
"Junior Data Analyst",
"Graduate Scheme Finance",
"Associate Product Manager",
"Strategy and Operations Analyst",
"GTM Associate",
"Operations Associate",
"Graduate Customer Success Manager",
"Business Development Associate",
"Graduate Consultant",
]
LOCATIONS = ["London, England"]
RESULT_LIMIT = 15 # per search term
HOURS_OLD = 24
SCORE_THRESHOLD = 50 # minimum score to appear in email
TAILOR_THRESHOLD = 75 # minimum score to generate tailored CV bullets
Every daily run appends matched jobs to your sheet with these columns:
| Date | Score | Title | Company | YoE | Reason | URL | Applied? |
|---|
Manually update the Applied? column as you go to track your pipeline.
Runs daily at 8:00 AM UTC (8:00 AM GMT / 9:00 AM BST in summer).
To change, edit .github/workflows/linkedin-job-sniper.yml:
- cron: '0 8 * * *' # 8am UTC daily
For educational purposes only. Web scraping may violate LinkedIn's Terms of Service. Use responsibly and at your own risk.
Misbah — built on top of the original LinkedInJobSniper by Tao.
Powered by Python, LangChain, Groq & GitHub Actions ☕