Skip to content
This repository was archived by the owner on Dec 11, 2025. It is now read-only.

Alexandria-s-Design/Job-Search-Automation-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Job Search Automation for Instructional Design & E-Learning

Autonomous job search and application system designed specifically for instructional design and e-learning development positions. Upload your materials, configure your preferences, and let AI agents find and apply to jobs for you.

🎯 Key Features

  • Autonomous Job Discovery: Automatically scrapes job boards daily for relevant positions
  • AI-Powered Matching: Scores jobs based on how well they match your profile
  • Smart Application System: Auto-fills applications with your materials
  • Resume Customization: AI tailors your resume for each job
  • Cover Letter Generation: Creates personalized cover letters
  • Application Tracking: Tracks all applications, responses, and interviews
  • Daily Notifications: Email digests of new opportunities
  • Analytics Dashboard: Track your job search metrics

πŸš€ Quick Start

1. Upload Your Materials

Place your files in the user_materials/ folder:

user_materials/
β”œβ”€β”€ resumes/
β”‚   └── your_resume.pdf          # Your primary resume
β”œβ”€β”€ cover_letters/
β”‚   └── template.txt             # Cover letter template (optional)
β”œβ”€β”€ portfolio/
β”‚   └── portfolio_link.txt       # Link to your portfolio
└── credentials/
    └── certifications.pdf       # Any certifications

2. Configure Your Search

Edit config/config.yaml to set:

  • Your target roles (instructional designer, e-learning developer, etc.)
  • Your skills and experience
  • Location preferences
  • Salary requirements
  • Which job boards to search
  • Automation settings (auto-apply on/off)

3. Set Up Environment

# Install Python 3.9+
python --version

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

# Configure environment variables
cp .env.example .env
# Edit .env with your credentials
nano .env  # or use your preferred editor

4. Run the System

# Test run (finds jobs but doesn't apply)
python scripts/run_daily_scrape.py --test

# Full automated run
python scripts/run_daily_scrape.py

# Set up daily automation (cron job)
crontab -e
# Add: 0 9 * * * cd /path/to/project && /path/to/venv/bin/python scripts/run_daily_scrape.py

πŸ“‹ Configuration

Basic Setup (config/config.yaml)

user_profile:
  target_roles:
    - "Instructional Designer"
    - "E-Learning Developer"

  key_skills:
    - "Articulate Storyline"
    - "ADDIE Model"
    - "LMS"

search_criteria:
  remote_only: true
  salary_minimum: 60000

automation:
  auto_apply:
    enabled: true           # Set to true for autonomous applications
    max_applications_per_day: 20
    min_match_score: 0.7   # Only apply to jobs that match 70%+

Environment Variables (.env)

# AI for resume/cover letter customization
ANTHROPIC_API_KEY=your_key_here

# Email notifications
EMAIL_FROM=your@email.com
EMAIL_PASSWORD=your_app_password
EMAIL_TO=your@email.com

🎨 Features in Detail

1. Job Discovery

The system searches these job boards:

  • LinkedIn (Easy Apply jobs)
  • Indeed
  • Instructional Design Central
  • EdTech.com
  • Teamed for Learning

2. Smart Filtering

Jobs are automatically filtered based on:

  • Keyword matching (your skills and target roles)
  • Location requirements
  • Salary range
  • Employment type
  • Experience level
  • Remote/on-site preference

3. AI Matching

Each job gets a match score (0-1) based on:

  • How many of your skills are mentioned
  • Whether the title matches your target roles
  • Job requirements alignment

4. Automated Application

When auto_apply: enabled: true:

  1. System finds matching jobs (above min_match_score)
  2. Customizes your resume using AI
  3. Generates a personalized cover letter
  4. Fills out the application
  5. Submits (if easy_apply_only: true)
  6. Tracks in database

5. Application Tracking

All applications are tracked with:

  • Application date
  • Status (submitted, viewed, rejected, interview, offer)
  • Resume and cover letter used
  • Response tracking
  • Follow-up reminders

6. Analytics

Track your job search progress:

  • Total jobs discovered
  • Applications submitted
  • Response rate
  • Interview conversion rate
  • Time to offer

πŸ“ Project Structure

job-search-automation/
β”œβ”€β”€ user_materials/         # πŸ‘ˆ PUT YOUR FILES HERE
β”‚   β”œβ”€β”€ resumes/
β”‚   β”œβ”€β”€ cover_letters/
β”‚   β”œβ”€β”€ portfolio/
β”‚   └── credentials/
β”œβ”€β”€ config/
β”‚   └── config.yaml        # Main configuration
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ scrapers/          # Job board scrapers
β”‚   β”œβ”€β”€ filters/           # Job filtering logic
β”‚   β”œβ”€β”€ database/          # Database operations
β”‚   β”œβ”€β”€ notifications/     # Email/Slack notifications
β”‚   └── utils/             # Helper functions
β”œβ”€β”€ scripts/               # Runnable scripts
β”œβ”€β”€ data/                  # Database and exports
β”œβ”€β”€ logs/                  # Log files
└── README.md             # This file

πŸ› οΈ Usage Examples

Find Jobs Without Applying

# Just discover and filter jobs
python scripts/run_daily_scrape.py --no-apply

# View filtered jobs
python scripts/view_jobs.py --min-score 0.7

Apply to Jobs Manually

# Find and rank jobs
python scripts/run_daily_scrape.py --no-apply

# Review top matches
python scripts/view_jobs.py --top 10

# Apply to specific job
python scripts/apply_to_job.py --job-id abc123

Full Automation

# Apply to all jobs above threshold
python scripts/run_daily_scrape.py --auto-apply

# Or set in config.yaml:
automation:
  auto_apply:
    enabled: true

Check Status

# View all applications
python scripts/view_applications.py

# View statistics
python scripts/view_stats.py

# Export to CSV
python scripts/export_data.py --table applications --output my_apps.csv

βš™οΈ Advanced Configuration

Custom Job Board

Add custom scrapers in src/scrapers/:

from .base_scraper import BaseScraper

class CustomBoardScraper(BaseScraper):
    def scrape(self, keywords):
        # Your scraping logic
        pass

n8n Workflow Integration

Import workflows from n8n_workflows/ for:

  • Automated daily job discovery
  • Application status tracking
  • Follow-up reminders

AI Customization

Configure AI behavior in config/config.yaml:

ai:
  provider: "anthropic"
  model: "claude-3-5-sonnet-20241022"

  prompts:
    resume_customization: |
      Your custom prompt here...

πŸ“Š Dashboard

View your progress:

# Terminal dashboard
python scripts/dashboard.py

# Export to Google Sheets
python scripts/export_to_sheets.py

⚠️ Important Warnings

Legal & Terms of Service

  • LinkedIn and Indeed have policies against automation
  • Risk of account restriction or ban
  • Use at your own risk
  • Consider using browser extensions (lower risk) instead of scrapers

Best Practices

  1. Start with auto_apply: false to test the system
  2. Review first 20 applications manually for quality control
  3. Use min_match_score: 0.7+ to only apply to relevant jobs
  4. Limit applications with max_applications_per_day
  5. Monitor your email for responses
  6. Update your materials regularly
  7. Network in parallel - don't rely solely on automation

Rate Limiting

Built-in protections:

  • 3-5 second delays between requests
  • Max 50 requests per hour per site
  • Random user agents
  • Respects robots.txt

πŸ”’ Privacy & Security

  • All data stored locally (SQLite database)
  • Credentials in .env file (not committed to git)
  • Self-hosted option (no data sent to third parties)
  • Sensitive files in .gitignore

πŸ“š Documentation

See docs/ folder for detailed guides:

  • setup_guide.md - Detailed setup instructions
  • scraper_guide.md - How to add custom scrapers
  • troubleshooting.md - Common issues and solutions

🀝 Contributing

This is a personal automation tool, but feel free to:

  • Fork and customize for your needs
  • Submit issues for bugs
  • Share improvements

πŸ“§ Support

For issues:

  1. Check logs/ for error messages
  2. Review docs/troubleshooting.md
  3. Open an issue with logs

πŸ“ˆ Roadmap

  • Web dashboard UI
  • More job board integrations
  • Interview scheduling automation
  • Salary negotiation insights
  • Chrome extension for manual applications
  • Mobile notifications

πŸŽ“ Instructional Design Specific Features

Specialized Job Boards

Pre-configured scrapers for:

  • Instructional Design Central
  • The eLearning Designer's Academy
  • EdTech.com
  • Teamed for Learning

Skills Matching

Optimized for ID/e-learning skills:

  • Articulate Storyline/Rise
  • Adobe Captivate
  • Camtasia
  • ADDIE/SAM/Agile
  • SCORM/xAPI
  • LMS platforms
  • Video production
  • Graphic design tools

Portfolio Integration

Automatically include portfolio links in applications from user_materials/portfolio/

πŸ“„ License

MIT License - Use at your own risk

⚑ Quick Tips

  1. First Time Setup: Run with --test flag first
  2. Quality Over Quantity: Use higher match scores (0.7-0.8)
  3. Monitor Daily: Check email for responses
  4. Update Materials: Keep resume current in user_materials/
  5. Track Everything: Use the database to analyze what works

🎯 Success Metrics

Typical results (varies by experience/market):

  • Jobs discovered: 50-100 per day
  • Applications sent: 10-20 per day (with auto-apply)
  • Response rate: 5-10%
  • Interview rate: 2-5%
  • Time saved: 10-15 hours per week

Ready to automate your job search?

  1. Upload your resume to user_materials/resumes/
  2. Configure config/config.yaml with your preferences
  3. Set up .env with your credentials
  4. Run python scripts/run_daily_scrape.py --test
  5. Review results and enable auto-apply when ready

Need help? Check the docs or open an issue!

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors