A comprehensive, well-organized collection of tools to supercharge your job search. Features automated LinkedIn outreach, AI-powered email campaigns, resume management, and H1B visa sponsorship research.
jobs-tools/
βββ src/
β βββ email/
β β βββ ai_generated/ # AI-powered personalized emails
β β βββ cold_outreach/ # Cold email campaigns
β βββ linkedin/ # LinkedIn automation scripts
β βββ resume/
β β βββ generator/ # Resume generation from JSON
β β βββ organizer/ # Resume file organization
β βββ scraping/ # H1B company data scraper
βββ pyproject.toml # uv package configuration
βββ .gitignore
βββ LICENSE
βββ README.md
This project uses uv for fast, reliable Python package management:
# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Create virtual environment and install dependencies
uv venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
uv pip install -e .Create a .env file in the project root:
GMAIL_APP_PASSWORD=your_gmail_app_password
[email protected]Location: src/email/ai_generated/
Leverage local AI models (via Ollama) to generate personalized, professional outreach emails at scale.
Generates customized emails for multiple recipients and saves them as JSON files organized by company.
python src/email/ai_generated/generate_emails.pySends AI-generated emails with personalized content to your contact list.
python src/email/ai_generated/send_emails.pyRequirements:
- Install Ollama and download your preferred model (e.g.,
phi3) - Set
GMAIL_APP_PASSWORDin your.envfile
Location: src/email/cold_outreach/
Send targeted cold emails to recruiters and potential referrers.
Send plain text emails for quick, lightweight outreach.
python src/email/cold_outreach/send_without_attachment.pySend emails with resume attachments for formal applications.
python src/email/cold_outreach/send_with_attachment.pyLocation: src/linkedin/
Browser console scripts for automating LinkedIn networking tasks.
Send personalized connection requests or messages to individual profiles. Navigate to a LinkedIn profile, open DevTools console, and paste the script.
Features:
- Target recruiters or employees
- Customize messages with company name and job ID
- Quick, one-click messaging
Automated mass outreach to multiple profiles on a company page.
Usage:
- Visit a company's LinkedIn page
- Filter by location and position
- Open DevTools console and paste the script
- Set connection limits to manage outreach volume
Tip: Start with smaller batches (10-20) to avoid LinkedIn rate limits.
Bulk withdraw pending connection requests to keep your network clean and professional.
Usage:
- Navigate to LinkedIn β My Network β Manage sent requests
- Open DevTools console
- Paste and run the script
Location: src/resume/generator/create_docx.py
Generate professionally formatted .docx resumes from JSON data.
python src/resume/generator/create_docx.pyFeatures:
- Custom formatting with proper spacing and alignment
- Sections: Work Experience, Education, Skills, Projects
- Professional styling with Calibri font
Location: src/resume/organizer/save_resume.py
Automatically organize tailored resumes by company and position.
python src/resume/organizer/save_resume.pyWhat it does:
- Creates folders named
CompanyName-Position - Copies your resume from Desktop to
~/Documents/saved-applications/ - Maintains organized archive of all applications
Location: src/scraping/h1b_companies.py
Scrape and download data about companies that sponsor H1B visas.
python src/scraping/h1b_companies.pyOutput: Creates companies.csv with company names, locations, and H1B filing statistics.
- Always test with a small batch before sending to large lists
- Personalize templates for each company/role
- Track response rates to optimize messaging
- Respect unsubscribe requests and email frequency limits
- Use LinkedIn automation responsibly to avoid account restrictions
- Limit bulk actions to 20-30 connections per session
- Always personalize messages when possible
- Wait 24-48 hours between bulk automation sessions
- Keep a master JSON file with all your experience
- Tailor bullet points for each application
- Maintain backups of all customized resumes
- Use consistent naming:
CompanyName-Position
email_list = [
{
'name': 'John Doe',
'email': '[email protected]',
'company': 'TechCorp',
'position': 'Software Engineer'
},
]See src/resume/generator/create_docx.py for the expected JSON schema with sections for header, work_experience, education, skills, and projects.
# Create a new module
mkdir -p src/your_module
touch src/your_module/your_script.py
# Add dependencies if needed
uv pip install new-packageuv pip install -e ".[dev]"
pytest- LinkedIn Automation: Use at your own risk. LinkedIn's terms of service prohibit automation. These scripts are educational and should be used responsibly.
- Email Sending: Gmail has daily sending limits (typically 500 emails/day for regular accounts). Monitor your quota.
- API Keys: Never commit
.envfiles or API keys to version control. - H1B Data: Information scraped from h1bdata.info is for research purposes only.
- LinkedIn: https://www.linkedin.com/in/prav25/
- Website: https://praneethravuri.com/