Automatically scrapes job boards every 6 hours for roles matching your skills & relocation to Canada, then emails new matches with enhanced scoring and confidence levels.
- Multi-Source Scraping: Indeed, JobBank Canada, and Glassdoor
- Smart Matching: TF-IDF based similarity scoring with your skills
- Relocation Detection: Advanced keyword analysis with confidence levels
- Duplicate Prevention: SQLite database prevents re-sending jobs
- Beautiful Emails: Rich HTML templates with job statistics
- Configurable: Easy customization of skills, keywords, and thresholds
- Error Resilient: Comprehensive error handling and logging
git clone <your-repo-url>
cd canada-relocation-job-alertAdd these secrets to your GitHub repository:
| Secret | Description | Example |
|---|---|---|
SENDGRID_API_KEY |
Your SendGrid API key | SG.xxxxxxxxxxxxx |
EMAIL_FROM |
Verified sender email in SendGrid | alerts@yourdomain.com |
TARGET_EMAIL |
Your target email | your.email@gmail.com |
You can customize the bot behavior with these optional secrets:
| Variable | Default | Description |
|---|---|---|
MIN_MATCH_SCORE |
70 |
Minimum job match score (0-100) |
REQUEST_TIMEOUT |
10 |
HTTP request timeout in seconds |
REQUEST_DELAY |
1.0 |
Delay between requests in seconds |
MAX_JOBS_PER_SOURCE |
5 |
Max jobs to fetch per source |
The workflow runs automatically every 6 hours. You can also trigger it manually from the Actions tab.
Edit config.py to match your profile:
SKILLS_KEYWORDS = [
"Prisma Access", "PanOS", "DLP", "DataDog", "Kibana", "Grafana",
"AWS", "SRE", "Linux", "Kubernetes", "Python", "API",
# Add your specific skills here
]The bot looks for these phrases to detect relocation opportunities:
RELOCATION_PHRASES = [
"visa sponsorship", "lmia", "work permit", "relocation package",
"flight", "housing", "dependent documentation", "immigration support",
# Add more specific terms if needed
]- Scraping: Fetches jobs from multiple sources using respectful delays
- Matching: Uses TF-IDF vectorization to compare job descriptions with your skills
- Scoring: Applies additional factors (location, seniority, remote work)
- Relocation Detection: Analyzes text for immigration/relocation indicators
- Filtering: Only sends jobs above the minimum score threshold
- Deduplication: Checks database to avoid re-sending jobs
- Email: Sends beautiful HTML digest with job details and statistics
- Match Score: Percentage match with your skills
- Relocation Confidence: High/Medium/Low based on keyword analysis
- Relocation Indicators: Shows specific phrases found
- Statistics: Summary of new jobs and confidence levels
- Direct Apply Links: One-click application buttons
No jobs found:
- Check if job sites are accessible from GitHub Actions
- Verify search terms in
config.py - Check logs in GitHub Actions for errors
Emails not sending:
- Verify SendGrid API key is correct
- Ensure sender email is verified in SendGrid
- Check GitHub Actions logs for email errors
Poor job matches:
- Update
SKILLS_KEYWORDSinconfig.py - Adjust
MIN_MATCH_SCOREthreshold - Review job sources and search terms
Check GitHub Actions logs for detailed error information and debugging.
pip install -r requirements.txt
python worker.py- Create new crawler file in
crawler/directory - Implement
get_<source>_jobs()function - Add import to
crawler/aggregator.py - Update search terms in
config.py
CREATE TABLE jobs (
id TEXT PRIMARY KEY,
title TEXT,
company TEXT,
location TEXT,
url TEXT,
match_score REAL,
relocation_detected INTEGER,
date_added TEXT
);Feel free to submit issues and enhancement requests!
MIT License - feel free to use this for your own job search automation.