CV Embed is an AI resume analyzer that matches candidates with job descriptions using SBERT/GloVe/Doc2Vec models. Calculates compatibility scores, suggests top job matches, and generates real opportunities. Supports PDF/DOCX uploads with Flask backend and Gemini AI integration.
- AI-Powered Matching: Semantic analysis using multiple NLP models
- Multi-Step Workflow: Intuitive 3-step process for resume and job analysis
- File & Text Support: Upload PDF/DOCX files or paste text directly
- Visual Results: Clear similarity score visualization with color coding
- Top Job Suggestions: Identifies best-fitting roles with similarity percentages
- Job Recommendations: Real job opportunities based on profile
- Privacy Focused: Automatic file cleanup after processing
Component | Technology |
---|---|
Frontend | HTML5, CSS3, JavaScript |
Backend | Python, Flask |
AI Engine | Sentence Transformers, Gensim |
Text Processing | NLTK, PyPDF2, python-docx |
API Integration | Google Gemini API |
Deployment | Docker (optional) |
project_root/
├── model/
│ ├── inference/
│ ├── preprocess/
│ └── training/
├── trained_models/
├── templates/
│ ├── index.html
│ ├── result.html
│ └── upload.html
├── static/
├── data/
├── utils/
├── requirements.txt
├── config.py
├── data_loader.py
├── matching_engine.py
├── resume_processor.py
└── app.py
- Python 3.8+
- pip package manager
- Google Gemini API key
-
Clone the repository
git clone https://github.com/Samitha-Edirisinghe/AI-Powered-Resume-Matching-System-CVEmbed-.git cd cv-embed
-
Create a virtual environment
# Windows python -m venv venv venv\Scripts\activate # macOS/Linux python3 -m venv venv source venv/bin/activate
-
Install dependencies
pip install -r requirements.txt
-
Download NLTK data
python -c "import nltk; nltk.download('stopwords'); nltk.download('punkt')"
-
Set environment variables
Create a.env
file in project root:GEMINI_API_KEY=your_api_key_here
-
Run the application
python app.py
Then open
http://localhost:5000
in your browser.
-
Upload Resume
- Select a PDF/DOCX file or paste resume text
- Click Continue
-
Upload Job Description
- Select a job description file or paste text
- Choose matching algorithm (SBERT recommended)
- Click Analyze
-
View Results
- See your match percentage
- Explore top job suggestions
- Compare resume and job description
- Browse real job opportunities
- Click Analyze More to start over
The system supports three matching algorithms:
-
SBERT (Recommended)
- Uses Sentence Transformers for semantic similarity
- Trained on job description–resume pairs
-
GloVe
- Word embedding–based matching
- Uses average word vectors
-
Doc2Vec
- Document embedding approach
- Trained on a resume corpus
Dataset | Source |
---|---|
job_cv_supervised | Hugging Face |
resume-job-description-fit | Hugging Face |
Resume-Dataset | Hugging Face |
IT Job Post Descriptions | Kaggle |
The system matches resumes to these roles:
- System Administrator
- Database Administrator
- Web Developer
- Security Analyst
- Network Administrator
- Data Scientist
- DevOps Engineer
- Cloud Engineer
- Machine Learning Engineer
- Software Engineer
Edit config.py
to:
- Change active model
- Modify job taxonomy
- Add/remove datasets
- Adjust model parameters
- Fork the repository
- Create your feature branch (
git checkout -b feature/your-feature
) - Commit your changes (
git commit -m 'Add some feature'
) - Push to the branch (
git push origin feature/your-feature
) - Open a pull request
This project is licensed under the MIT License. See the LICENSE file for details.
For questions or feedback, reach out at:
randikanilupul123@gmail.com