A job hunting assistant that helps you find and analyze job opportunities. It fetches job listings from various sources, analyzes them against your resume, and provides match scores and detailed analyses.
- Job Fetcher: Automatically fetches job listings from multiple sources
- Resume Analysis: Analyzes job descriptions against your resume
- Match Scoring: Provides a score (0-100) for each job based on your resume match
- Detailed Analysis: Gives detailed explanations for the match scores
- Storage Management: Efficiently manages job data, analysis results, and resume content
- Modular Design: Clean separation of concerns with dedicated modules for each functionality
- Environment Configuration: Flexible configuration through environment variables and command-line arguments
the-pudim-hunter/
โโโ data/ # Data storage directory
โ โโโ job_data.csv # Fetched job listings
โ โโโ job_analysis.csv # Analysis results
โ โโโ resume.txt # Your resume content
โโโ analysis_helper.py # OpenAI analysis utilities
โโโ job_fetcher.py # Main job fetching script
โโโ job_analyze_scores.py # Job analysis script
โโโ storage_job.py # Job data storage
โโโ storage_analysis.py # Analysis results storage
โโโ storage_resume.py # Resume content storage
โโโ requirements.txt # Python dependencies
โโโ README.md
This project relies on several key packages:
- pudim-hunter-driver: Core driver interface for job search
- pudim-hunter-driver-scraper: Web scraping utilities
- pudim-hunter-driver-simply-hired: SimplyHired job board implementation
- Clone the repository:
git clone https://github.com/yourusername/the-pudim-hunter.git
cd the-pudim-hunter
- Install dependencies:
pip install -r requirements.txt
- Set up your environment variables:
# OpenAI API configuration
export OPENAI_API_KEY="your-api-key"
export OPENAI_API_MODEL="gpt-4o" # Optional, defaults to gpt-4o
# Job search configuration
export JOB_TITLE="Software Engineer"
export JOB_LOCATION="Remote"
Create a file at data/resume.txt
with your resume content. You can also specify a custom path using the --resume-path
argument.
Run the job fetcher with your desired parameters:
# Using environment variables
python job_fetcher.py
# Using command-line arguments
python job_fetcher.py \
--title "Software Engineer" \
--location "Remote" \
--output "data/job_data.csv" \
--disable-headless
Command-line arguments for job_fetcher.py
:
--title
: Job title to search for (default: "Software Engineer")--location
: Job location to search in (default: "Remote")--output
: Path to save job data CSV file (default: "data/job_data.csv")--disable-headless
: Disable headless mode (show browser window)
Analyze the fetched jobs against your resume:
# Using environment variables
python job_analyze_scores.py
# Using command-line arguments
python job_analyze_scores.py \
--openai-api-key "your-api-key" \
--openai-model "gpt-4o" \
--analysis-path "data/job_analysis.csv" \
--resume-path "data/resume.txt" \
--jobs-path "data/job_data.csv"
Command-line arguments for job_analyze_scores.py
:
--openai-api-key
: OpenAI API key (overrides OPENAI_API_KEY environment variable)--openai-model
: OpenAI model to use (default: "gpt-4o")--analysis-path
: Path to job analysis file (default: "data/job_analysis.csv")--resume-path
: Path to resume file (default: "data/resume.txt")--jobs-path
: Path to jobs file (default: "data/job_data.csv")
The project uses dedicated storage classes for managing different types of data:
-
JobStorage (
storage_job.py
): Manages job listings- Handles CRUD operations for job data
- Supports custom data folder and file name
- Ensures data integrity and file existence
-
AnalysisStorage (
storage_analysis.py
): Manages analysis results- Stores match scores and analyses
- Maintains job metadata
- Supports custom storage paths
-
ResumeStorage (
storage_resume.py
): Manages resume content- Handles resume file operations
- Validates resume content
- Supports custom file paths
The job analysis process uses OpenAI's GPT models to:
- Compare job descriptions with your resume
- Generate match scores (0-100)
- Provide detailed analyses explaining the scores
- Store results for future reference
The analysis considers:
- Job requirements and qualifications
- Your skills and experience
- Job responsibilities
- Location and salary information
- Fork the repository
- Create a new branch for your feature
- Implement your changes
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE.md file for details.
- OpenAI for providing the GPT models
- Playwright for web automation
- Pandas for data management
- BeautifulSoup4 for HTML parsing
- pudim-hunter-driver for the core driver interface
- pudim-hunter-driver-scraper for web scraping utilities
- pudim-hunter-driver-simply-hired for SimplyHired job board implementation
Automate your job search smarter with The Pudim Hunter ๐ฎ!