This Chrome extension automatically generates optimized resumes based on job postings from the current webpage.
# Create virtual environment
python -m venv .venv
# Activate virtual environment
# On macOS/Linux:
source .venv/bin/activate
# On Windows:
.venv\Scripts\activatepip install -r backend/requirements.txtCreate a .env file in the backend folder with your API credentials:
MODEL_NAME=preferred_model
API_KEY=your_api_key_here
Edit backend/user_data.json with your personal information:
{
"core_skills": ["Your", "Core", "Skills"],
"languages": ["Programming", "Languages", "You", "Know"],
"frameworks": ["Frameworks", "And", "Tools"],
"technologies": ["Additional", "Technologies"],
"work_exp": [
{
"job_desc": [
"Your work experience bullet points",
"Each entry should highlight achievements and technologies used"
]
}
],
"project_exp": [
{
"project_title": "Your Project Name",
"project_desc": "Description of your project with technologies and impact"
}
]
}- Open
backend/resume_template.docxin Microsoft Word - Replace placeholder content with your information
- Format the template as desired (fonts, colors, layout)
- Save the file
Note: The merge fields (text between « and ») will be automatically replaced with your data when generating the resume.
- Open Chrome and go to
chrome://extensions/ - Enable "Developer mode" in the top right
- Click "Load unpacked"
- Select the
pluginfolder from this project - The extension should now appear in your extensions list
# Make sure virtual environment is activated
cd backend
python server.pyThe server will start on http://localhost:8000
- Activate virtual environment:
source .venv/bin/activate # macOS/Linux # or .venv\Scripts\activate on Windows
- Start the server:
cd backend python server.py - Navigate to a job posting: Open any job posting URL in Chrome
- Click the extension: Click the Resume Optimizer extension icon in your toolbar
- Generate resume: Click "Generate Optimized Resume" button
- Wait for completion: The extension will show status updates as the resume is generated
ResumeWriter/
├── .venv/ # Virtual environment
├── plugin/ # Chrome extension files
│ ├── manifest.json # Extension manifest
│ ├── popup.html # Extension popup UI
│ ├── popup.js # Popup functionality
│ ├── background.js # Background script
│ └── content.js # Content script
├── backend/ # Backend Utility
│ ├── server.py # Flask server (bridge between extension and Python)
│ ├── main.py # Main Python script
│ ├── model.py # Resume optimizer model
│ ├── writer.py # Resume writer
│ ├── user_data.json # Your resume data
│ ├── .env # Environment variables
│ └── resume_template.docx # Resume template
└── README.md # This file
- Chrome Extension: Captures the current tab URL and sends it to the Flask server
- Flask Server: Receives the URL and calls the Python main.py script in the backend folder
- Python Script: Fetches job description, optimizes resume data, and generates PDF
- Response: Success/error status is returned to the Chrome extension
- Virtual environment: Make sure to activate the virtual environment before running the server
- Extension not working: Check if the Flask server is running on port 8000
- Server errors: Check the terminal output where you ran
python server.pyin the backend folder - Permission issues: Make sure the extension has permission to access the current tab
- CORS errors: The Flask server includes CORS headers, but ensure no other security software is blocking requests
- Module not found: Ensure all dependencies are installed in the activated virtual environment
- Template errors: Ensure your
resume_template.docxhas the correct merge field names - Data format errors: Verify your
user_data.jsonfollows the correct JSON structure
- Add new entries to the
work_exparray inuser_data.json - Update
main.pyto pass the new work experience to thegenerate()function - Update
writer.pyto handle the new merge field - Add the corresponding merge field to your
resume_template.docx
- Projects are dynamically generated, so you can add/remove projects in
user_data.jsonwithout template changes - To change project formatting, modify the
projects_textgeneration inwriter.py
To modify the extension:
- Make changes to files in the
plugin/folder - Go to
chrome://extensions/ - Click the refresh icon on the Resume Optimizer extension
- Test your changes