🚀 Live Demo: Click here to try the app
ResuMatch is an AI-powered application that matches resumes to job descriptions and generates tailored cover letters. The application uses large language models (LLMs) to parse resumes, match them against job descriptions, and generate personalized cover letters.
- Resume Parsing: Upload PDF or DOCX resumes and extract structured data
- Job Matching: Match candidate skills against job requirements
- Skills Analysis: View matching and missing skills with visual indicators
- Advanced Cover Letter Generation: Create professional, tailored cover letters using sophisticated NLP techniques
- Data Persistence: Store resume data, job information, and matches in a database
- Python 3.8 or higher
- Streamlit
- PyPDF2
- docx2txt
- NLTK
- scikit-learn
- Groq API key (or other LLM API)
- Clone the repository:
git clone https://github.com/yourusername/resumatch.git
cd resumatch
- Create a virtual environment and activate it:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
- Install the required packages:
pip install -r requirements.txt
- Set up your Groq API key:
- Option 1: Create a
.streamlit/secrets.toml
file with:GROQ_API_KEY = "your-key-here"
- Option 2: Set an environment variable:
export GROQ_API_KEY="your-key-here" # On Windows: set GROQ_API_KEY=your-key-here
- Option 1: Create a
To run the application:
streamlit run app.py
The application will be available at http://localhost:8501
.
- Upload Resume: Users upload their resume in PDF or DOCX format.
- Job Selection: Users select a job position they want to apply for.
- Resume Analysis: The system extracts text from the resume and uses an LLM to parse it into structured data.
- Job Matching: The system matches the resume against the job description to calculate a match score.
- Cover Letter Generation: Users can generate a tailored cover letter based on their resume and the job.
ResuMatch uses a sophisticated approach to creating personalized cover letters:
- Professional Tone: Warm, professional language that avoids generic phrasing
- Personalized Content: Tailored to the specific role, company, and candidate skills
- Structured Format: Engaging opening, skills alignment, company connection, and strong closing
- Robust Fallbacks: Multiple fallback mechanisms ensure cover letter generation even without API access
- Downloadable Output: Easy download options for further customization
The cover letter generation process:
- Analyzes the candidate's resume and extracted skills
- Identifies matching skills and areas for improvement
- Incorporates job requirements and company information
- Generates a professionally formatted letter with proper structure
- Provides tips for further customization
The application uses several LLM function calls:
parse_resume_with_llm
: Parses the resume into structured data (name, skills, education, experience)extract_skills_from_text
: Extracts skills from text (used for both resumes and job descriptions)match_resume_to_job
: Matches resumes to jobs and calculates a match percentagegenerate_cover_letter
: Generates a tailored cover letter based on the match results
All data is stored in a SQLite database (resumatch.db
) with the following tables:
- candidates: Stores parsed resume data
- jobs: Stores job information
- matches: Stores match results and cover letters
app.py
: Main application file with Streamlit UI and logicrequirements.txt
: List of required packages.streamlit/
: Configuration and secretsresumatch.db
: SQLite database (created on first run)
- User authentication
- More detailed resume parsing
- Multiple resume uploads
- Job search functionality
- Saving and comparing multiple match results
- Email and sharing functionality
- Dockerization for easier deployment