A model that matches a given Job Description with multiple CVs to pick out the best candidates
CV Matcher is an AI-powered tool designed to match resumes (CVs) with job descriptions using advanced Natural Language Processing (NLP) techniques. It evaluates candidates based on skills, experience, education, projects, and achievements, providing a comprehensive score to help recruiters and hiring managers identify the best-fit candidates.
Made for ByteRunners Hackathon hosted by Griphic in IIT Delhi.
Presentation Link : https://docs.google.com/presentation/d/1FSIq27ID1_RZ8oERefp5ol6BN1nxKj3e8bi_06Popdw/edit?usp=sharing
- Skill Extraction: Identifies and matches technical and soft skills from resumes and job descriptions.
- Experience Matching: Evaluates years of experience and seniority levels.
- Education Matching: Recognizes academic qualifications and degrees.
- Semantic Matching: Uses DistilBERT embeddings to compare the semantic similarity between resumes and job descriptions.
- Keyword Matching: Matches exact keywords and their synonyms.
- Seniority Detection: Detects seniority levels (entry, mid, senior, management) from text.
- Skill Depth Analysis: Measures the depth of expertise for each skill mentioned.
- Batch Processing: Processes multiple resumes in bulk and generates a ranked list of candidates. (Not yet implemented)
- Preprocessing: Extracts text from PDF, DOCX, or plain text files.
- Section Parsing: Identifies and extracts key sections like Skills, Experience, Education, etc.
- Skill Extraction: Uses regex patterns and spaCy's NLP pipeline to extract skills. (To-Do : Implement a custom NER model)
- Embedding Generation: Generates sentence embeddings using DistilBERT.
- Matching Algorithm: Combines keyword matching, semantic similarity, and embedding-based matching to compute scores.
- Ranking: Ranks candidates based on their total match score.
- Install Dependencies:
pip install -r requirements.txt
- Download Spacy's English Model:
python -m spacy download en_core_web_sm
-
Run the Streamlit app:
streamlit run app.py
-
Open the app in your browser (usually at http://localhost:8501).
-
Log in or register to access the tool.
-
Upload a job description and candidate CVs.
-
Adjust matching weights and parameters in the sidebar.
-
View the results, including:
-Overall match scores.
-Detailed analysis of each candidate.
-Skills comparison across candidates.
The project relies on the following Python libraries:
streamlit: For building the interactive web interface.transformers: For using DistilBERT embeddings.spacy: For natural language processing tasks like entity recognition.numpyandtorch: For handling embeddings and numerical computations.scikit-learn: For calculating cosine similarity between embeddings.PyPDF2andpython-docx: For parsing PDF and DOCX files.pandas: For data manipulation and analysis.matplotlibandseaborn: For creating visualizations like bar charts and heatmaps.sqlite3: For user authentication and data storage.
To install all dependencies, run:
pip install -r requirements.txt