A comprehensive Python tool to help you compare multiple job offers based on a wide range of factors including compensation, benefits, taxes, and work-life considerations.
Making career decisions can be complex, especially when comparing multiple job offers with different compensation structures, benefits packages, and employment types. This tool provides a structured approach to evaluate job offers by considering:
- Base salary and bonuses
- Benefits valuation (401k matching, healthcare, PTO, etc.)
- Tax implications for different employment types (W2, 1099, S-Corp)
- Work-life balance factors (commute time, work hours)
- Cost of living adjustments between locations
- Python 3.6+
- Additional packages for spreadsheet support:
- pandas
- openpyxl
# Clone the repository
git clone https://github.com/yourusername/job-compare.git
cd job-compare
# Install dependencies for spreadsheet support
pip install pandas openpyxlThe tool can be run from the command line with various options:
cd src/
python main.py [OPTIONS]| Option | Description |
|---|---|
--interactive |
Run in interactive mode to manually enter job offer details |
--load FILE |
Load previously saved job offers from a JSON file |
--save FILE |
Save entered job offers to a JSON file for future use |
--spreadsheet FILE |
Import job offers from a spreadsheet (CSV or Excel) |
--create-template FILE |
Create a template spreadsheet with all required fields |
Run the tool in interactive mode to manually enter job offer details:
python main.py --interactiveThe tool will guide you through entering all relevant information for each job offer. You'll need at least two job offers to generate a comparison.
Generate a template spreadsheet with all required fields:
python main.py --create-template job_offers_template.xlsxAfter filling in the template with your job offer details:
python main.py --spreadsheet path/to/your/job_offers.xlsxYou can combine multiple input methods:
# Load from a spreadsheet and add more offers interactively
python main.py --spreadsheet existing_offers.xlsx --interactive
# Load offers from JSON, add more interactively, and save the combined result
python main.py --load saved_offers.json --interactive --save updated_offers.json# Enter job offers interactively and see comparison results
python main.py --interactive# First create a template
python main.py --create-template my_offers.xlsx
# Fill in the template with offer details, then run:
python main.py --spreadsheet my_offers.xlsx# Enter offers and save them for later
python main.py --interactive --save my_offers.json
# Later, load the saved offers
python main.py --load my_offers.json# Load offers from multiple sources
python main.py --load previous_offers.json --spreadsheet new_offers.xlsx --interactiveThe tool considers these factors when comparing job offers:
-
Compensation
- Base salary/hourly rate
- Signing bonuses
- Performance bonuses
- Equity/stock options
-
Benefits
- Health insurance (medical, dental, vision)
- Retirement benefits (401k/403b matching)
- Paid time off (vacation, sick days, holidays)
- Other perks (education stipends, gym memberships, etc.)
-
Tax Considerations
- Employment type (W2, 1099, Corp-to-Corp)
- Tax implications of different structures
- Self-employment taxes for contractors
-
Work-Life Balance
- Commute time and costs
- Remote work options
- Work schedule flexibility
- Expected work hours
-
Geographic Adjustments
- Cost of living differences
- State tax variations
- Tax calculations are estimates and should not be considered tax advice
- Benefit valuations are based on approximate market values
- For important financial decisions, consult with a financial advisor or tax professional
job-compare/
├── README.md # This documentation
├── src/ # Source code
│ ├── benefits_calculator.py # Benefits valuation logic
│ ├── commute_calculator.py # Commute cost/time calculations
│ ├── comparison_engine.py # Core comparison logic
│ ├── job_offer.py # Job offer data model
│ ├── main.py # Entry point and CLI handling
│ ├── spreadsheet_parser.py # Import/export functionality
│ ├── tax_calculator.py # Tax estimation logic
│ └── ui_handler.py # User interface
└── tests/ # Test suite
├── test_job_comparison.py # Unit tests
└── data/ # Test data files
├── test_job_offers.csv
└── test_job_offers.xlsx