Skip to content

CIKR-Repos/JobResumeChanger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

9 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

JobResumeChanger

A powerful web application that automatically tailors your resume to match any job description perfectly. Upload your resume, paste a job description, and let the AI find missing points and enhance your resume to achieve a 100% match.

🌟 Features

  • Smart Analysis: Automatically analyzes job descriptions to extract key requirements, skills, and qualifications
  • Resume Parsing: Supports PDF, DOCX, and TXT resume formats
  • Gap Detection: Identifies missing points in your resume compared to job requirements
  • Web Search Integration: Provides intelligent suggestions and examples for missing skills
  • Interactive UI: Easy-to-use interface to specify where to add missing points
  • Resume Generation: Creates an updated resume with all enhancements in PDF, DOCX, or TXT format
  • Section Mapping: Intelligently maps missing points to appropriate resume sections

πŸš€ Getting Started

Prerequisites

  • Python 3.8 or higher
  • pip (Python package manager)

Installation

  1. Clone the repository:
git clone https://github.com/RepoRoots/JobResumeChanger.git
cd JobResumeChanger
  1. Install required dependencies:
pip install -r requirements.txt

Running the Application

  1. Start the Flask server:
python app.py
  1. Open your web browser and navigate to:
http://localhost:5000
  1. The application will be running and ready to use!

πŸ“– How to Use

Step 1: Upload Your Resume and Job Description

  1. Click "Choose File" and select your resume (PDF, DOCX, or TXT format)
  2. Paste the complete job description in the text area
  3. Click "Analyze & Find Missing Points"

Step 2: Review and Add Missing Points

  1. The application will display all missing points found in your resume
  2. For each missing point:
    • Click "πŸ” Search & Add" to get suggestions and examples
    • Select the appropriate section in your resume
    • Optionally specify which project this relates to
    • Add any additional details or metrics
    • Click "Add to Resume"
  3. Skip any points you don't want to include
  4. Once done, click "Generate Updated Resume"

Step 3: Download Your Enhanced Resume

  1. Your updated resume is now ready
  2. Click "πŸ“₯ Download Updated Resume" to save it
  3. Use your new, perfectly matched resume for your job application!

πŸ—οΈ Project Structure

JobResumeChanger/
β”œβ”€β”€ app.py                      # Main Flask application
β”œβ”€β”€ requirements.txt            # Python dependencies
β”œβ”€β”€ README.md                   # This file
β”œβ”€β”€ modules/                    # Core functionality modules
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ resume_parser.py        # Resume parsing and text extraction
β”‚   β”œβ”€β”€ job_analyzer.py         # Job description analysis
β”‚   β”œβ”€β”€ comparison_engine.py    # Resume vs. job comparison
β”‚   β”œβ”€β”€ web_search.py           # Search and suggestion engine
β”‚   └── resume_generator.py     # Updated resume generation
β”œβ”€β”€ services/                   # Service layer (OOP architecture)
β”‚   β”œβ”€β”€ __init__.py
β”‚   β”œβ”€β”€ resume_service.py       # Resume business logic service
β”‚   └── session_service.py      # Session management service
β”œβ”€β”€ templates/                  # HTML templates
β”‚   └── index.html             # Main web interface
β”œβ”€β”€ uploads/                    # Uploaded resumes (created automatically)
└── processed/                  # Generated resumes (created automatically)

πŸ—οΈ Architecture

The application follows Object-Oriented Programming (OOP) principles with a clean, layered architecture:

Service Layer

  • ResumeService: Encapsulates resume operations (upload, parse, analyze, generate)
  • SessionService: Manages user session state and data persistence

Controller Layer

  • ResumeController: Handles HTTP requests and coordinates services

Application Layer

  • JobResumeChangerApp: Main application orchestrator
  • ApplicationConfig: Centralized configuration management

OOP Patterns Used:

  • Service Layer Pattern
  • Dependency Injection
  • Controller Pattern
  • Factory Pattern (create_app)
  • Composition over Inheritance

See OOP_ARCHITECTURE.md for detailed architecture documentation.

πŸ”§ Technical Details

Modules

resume_parser.py

Extracts text and structure from resume files:

  • Supports PDF, DOCX, and TXT formats
  • Identifies sections (Experience, Skills, Education, etc.)
  • Extracts skills, work experience, and education details

job_analyzer.py

Analyzes job descriptions to extract:

  • Technical skills required
  • Soft skills needed
  • Experience level expectations
  • Education requirements
  • Key responsibilities

comparison_engine.py

Compares resume with job requirements:

  • Identifies missing technical skills
  • Finds gaps in soft skills
  • Checks responsibility alignment
  • Validates education requirements
  • Assesses experience match

web_search.py

Provides intelligent suggestions:

  • Generates context-aware examples
  • Offers resume-ready bullet points
  • Suggests action-oriented phrases
  • Provides industry-standard wording

resume_generator.py

Creates updated resume:

  • Maintains original formatting where possible
  • Adds new points to appropriate sections
  • Supports PDF, DOCX, and TXT output
  • Highlights newly added content

🎨 Customization

Adding More Skills to Detection

Edit the skill keywords in modules/job_analyzer.py and modules/resume_parser.py to include additional technologies or skills relevant to your industry.

Modifying Search Suggestions

Customize the suggestion templates in modules/web_search.py to better match your industry or writing style.

Changing the UI Theme

Edit the CSS in templates/index.html to customize colors, fonts, and layout.

πŸ”’ Security Notes

Important: This application is designed for development and personal use. Do not deploy to production without proper security measures.

  • The application stores files temporarily during processing
  • Uploaded files are stored with unique session IDs
  • Files are stored locally on the server (not recommended for production without additional security)
  • Debug mode is disabled in production when FLASK_ENV=production is set

For Production Deployment:

Required:

  1. Set environment variable: FLASK_ENV=production
  2. Set a secure secret key: SECRET_KEY=<your-secure-random-key>
  3. Use a production WSGI server (e.g., Gunicorn, uWSGI) instead of Flask's built-in server
  4. Enable HTTPS/SSL certificates

Recommended:

  • Add user authentication and authorization
  • Use cloud storage with encryption for file uploads
  • Implement automatic file cleanup routines
  • Add rate limiting to prevent abuse
  • Set up logging and monitoring
  • Use a reverse proxy (nginx, Apache)
  • Implement CSRF protection
  • Add input validation and sanitization
  • Set up a firewall and security groups

Example Production Setup:

# Set environment variables
export FLASK_ENV=production
export SECRET_KEY=$(python -c "import secrets; print(secrets.token_hex(32))")

# Run with Gunicorn
pip install gunicorn
gunicorn -w 4 -b 0.0.0.0:8000 app:app

🀝 Contributing

Contributions are welcome! Feel free to:

  • Report bugs
  • Suggest new features
  • Submit pull requests
  • Improve documentation

πŸ“ License

This project is open source and available for personal and educational use.

πŸ’‘ Tips for Best Results

  1. Be Comprehensive: Paste the complete job description for better analysis
  2. Add Details: When adding points, include specific metrics and achievements
  3. Choose Wisely: Select appropriate sections for each missing point
  4. Review Carefully: Review the generated resume before using it
  5. Customize Further: Use the generated resume as a base and add personal touches

πŸ› Troubleshooting

"Error processing upload"

  • Ensure your resume file is in PDF, DOCX, or TXT format
  • Check that the file size is under 16MB
  • Try converting your resume to a different format

"No missing points found"

  • Your resume may already be well-aligned with the job description
  • Try with a more detailed job description
  • Ensure the job description contains specific requirements

Resume generation fails

  • Check that you've added at least one point
  • Ensure you have write permissions in the application directory
  • Try generating in TXT format first

🌐 Browser Compatibility

  • Chrome (recommended)
  • Firefox
  • Safari
  • Edge

πŸ“ž Support

For issues, questions, or suggestions, please open an issue on the GitHub repository.


Made with ❀️ to help job seekers land their dream jobs!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors