An AI-powered resume optimization tool that analyzes your resume against job descriptions and generates professionally formatted, ATS-friendly PDF resumes.
Upload your resume and a job description, and let AI:
- Analyze how well your resume matches the job requirements
- Provide feedback on what's missing and what needs improvement
- Rewrite your resume content to better align with the job description
- Generate a professional PDF using Jake's Resume Template
- Resume Analysis: Get a match score (0-100), missing keywords, negative points, and improvement suggestions
- AI-Powered Rewriting: Automatically restructure and optimize your resume content
- PDF Generation: Create clean, one-page PDFs using Jake's popular LaTeX template
- Interactive UI: Simple Streamlit interface for easy interaction
- Workflow Management: LangGraph orchestrates the analysis → rewrite → PDF generation pipeline
User Input (Resume + JD)
↓
Streamlit UI
↓
LangGraph Workflow
↓
Analysis (Gemini)
↓
Rewrite (Gemini)
↓
PyLaTeX Generator
↓
PDF Output
Sequential Workflow Steps:
- User uploads resume and job description via Streamlit
- LangGraph orchestrates the sequential workflow
- Step 1: Gemini AI analyzes the resume against the JD
- Step 2: Gemini AI rewrites resume content using analysis results
- Step 3: PyLaTeX generates the final PDF with proper formatting
- Frontend: Streamlit (Interactive web interface)
- AI Model: Google Gemini (Analysis and content generation)
- Workflow: LangGraph (State management and orchestration)
- PDF Generation: PyLaTeX (LaTeX template to PDF)
- Data Validation: Pydantic (Schema validation)
.
├── .env # Environment variables (API keys)
├── requirements.txt # Python dependencies
└── src/
├── __init__.py
├── app.py # Streamlit UI
├── jakes_template.py # PyLaTeX resume generator
├── main.py # LangGraph workflow
├── prompts.py # AI prompts for analysis/rewriting
├── res.py # Helper functions/utilities
└── schema.py # Pydantic models (ResumeAnalysis, RewriteResume, etc.)
- Python 3.8+
- LaTeX Distribution (for PDF generation):
# Ubuntu/Debian sudo apt-get install texlive-latex-extra texlive-fonts-recommended # macOS brew install --cask mactex # Windows # Download and install MiKTeX: https://miktex.org/download
-
Clone the repository
git clone <your-repo-url> cd resume-reworker
-
Install dependencies
pip install -r requirements.txt
-
Set up environment variables
Create a
.envfile in the root directory:GEMINI_API_KEY=your_gemini_api_key_here
Get your Gemini API key from: https://makersuite.google.com/app/apikey
-
Run the application
streamlit run src/app.py
-
Access the app
Open your browser and go to:
http://localhost:8501
- Open the Streamlit interface
- Upload your current resume (text or PDF)
- Paste the job description
- Click "Analyze & Rewrite"
- Review the analysis feedback
- Download your optimized resume PDF
Edit src/main.py to modify the LangGraph workflow steps or add custom logic.
Modify src/prompts.py to change how the AI analyzes or rewrites resumes.
Edit src/jakes_template.py to adjust PDF formatting, spacing, or styling.
Key packages in requirements.txt:
streamlit- Web interfacelanggraph- Workflow orchestrationgoogle-generativeai- Gemini AI integrationpylatex- LaTeX document generationpydantic- Data validationpython-dotenv- Environment variable management
LaTeX Errors:
- Ensure LaTeX is properly installed:
pdflatex --version - Install missing packages:
tlmgr install <package-name>
API Errors:
- Verify your
.envfile has the correctGEMINI_API_KEY - Check API quota limits
PDF Not Generating:
- Check console for LaTeX compilation errors
- Ensure output directory has write permissions
Contributions are welcome! Please open an issue or submit a pull request.