Skip to content

RAYhaaNJR10/RESUME--JD--CV

Repository files navigation

πŸ“„ Resume-JD-CV Platform

An AI-powered recruitment tool that parses resumes, analyzes job descriptions, ranks candidates, and generates tailored CVs β€” built with FastAPI, OpenAI, and FAISS.

Python FastAPI OpenAI FAISS License


πŸ“Œ Overview

Recruiters spend hours manually screening resumes against job descriptions. Resume-JD-CV Platform automates that pipeline end-to-end:

  1. Upload a resume (PDF/DOCX) β†’ AI extracts and structures the candidate's profile.
  2. Upload or paste a Job Description β†’ the system analyzes core requirements.
  3. Candidates are embedded and ranked against the JD using FAISS vector search.
  4. Recruiters can compare candidates side-by-side and auto-generate a tailored CV in DOCX format matched to the job.

✨ Key Features

Feature Description
🧠 AI Resume Parsing Extracts text from PDF/DOCX and uses OpenAI to structure candidate profiles (skills, experience, education).
πŸ“‹ JD Analysis Parses uploaded or pasted job descriptions to identify core requirements and keywords.
πŸ” Semantic Candidate Ranking Uses embeddings + FAISS to rank candidates by relevance to a given JD.
βš–οΈ Candidate Comparison Side-by-side comparison view for shortlisting.
πŸ“ Tailored CV Generation Auto-generates a DOCX CV customized to match a specific job description.
πŸ—„οΈ Duplicate Detection Flags duplicate or near-duplicate resumes in the pipeline.

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”      β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Frontend    β”‚ ───▢ β”‚   FastAPI    β”‚ ───▢ β”‚   OpenAI API       β”‚
β”‚ (HTML/CSS/JS) β”‚      β”‚   (main.py)  β”‚      β”‚  (parsing, CV gen) β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜      β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                              β”‚
                 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
                 β–Ό            β–Ό             β–Ό
          β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
          β”‚ services/ β”‚ β”‚ embeddings/β”‚ β”‚   db.py    β”‚
          β”‚ (business β”‚ β”‚ (FAISS +   β”‚ β”‚ (SQLAlchemyβ”‚
          β”‚  logic)   β”‚ β”‚  vectors)  β”‚ β”‚  models)   β”‚
          β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Tech Stack

  • Backend: FastAPI, Python 3.8+
  • AI/ML: OpenAI API (GPT-4o), FAISS for vector similarity search
  • Frontend: HTML, CSS, JavaScript (vanilla)
  • Database: SQLAlchemy (SQLite by default, MySQL optional)
  • Document Handling: DOCX/PDF parsing and generation
  • Deployment: Docker-ready

πŸ“‚ Project Structure

.
β”œβ”€β”€ main.py                  # FastAPI app entry point β€” routes & core API logic
β”œβ”€β”€ db.py                    # Database configuration and SQLAlchemy models
β”œβ”€β”€ build_index.py           # Builds the FAISS vector index from resume embeddings
β”œβ”€β”€ requirements.txt         # Python dependencies
β”œβ”€β”€ Dockerfile                # Container build configuration
β”œβ”€β”€ frontend/                 # Static frontend (index.html, styles.css, app.js)
β”œβ”€β”€ services/                  # Business logic: AI integration, doc processing, vector search
β”œβ”€β”€ embeddings/                 # Embedding generation & FAISS index storage
β”œβ”€β”€ test_cv_generation.py      # CV generation tests
β”œβ”€β”€ test_embedding.py          # Embedding pipeline tests
β”œβ”€β”€ test_matcher.py            # Candidate-JD matching tests
β”œβ”€β”€ test_parser.py             # Resume parsing tests
β”œβ”€β”€ test_search.py             # Vector search tests
└── profiling_log.txt          # Performance profiling notes

βœ… Prerequisites

  • Python 3.8+
  • An OpenAI API key for AI parsing and CV generation
  • (Optional) MySQL or another relational database β€” falls back to SQLite by default

πŸš€ Setup Instructions

1. Clone the repository

git clone https://github.com/RAYhaaNJR10/RESUME--JD--CV.git
cd RESUME--JD--CV

2. Set up a virtual environment

python -m venv venv
source venv/bin/activate   # On Windows: venv\Scripts\activate

3. Install dependencies

pip install -r requirements.txt

4. Configure environment variables

Create a .env file in the root directory:

OPENAI_API_KEY=your_openai_api_key_here
OPENAI_MODEL=gpt-4o

5. Build the vector index (optional, if using pre-existing resume data)

python build_index.py

6. Run the application

uvicorn main:app --reload

7. Access the app

  • πŸ–₯️ Frontend Dashboard: http://127.0.0.1:8000/dashboard
  • πŸ“‘ API Docs (Swagger UI): http://127.0.0.1:8000/docs

🐳 Run with Docker

docker build -t resume-jd-cv .
docker run -p 8000:8000 --env-file .env resume-jd-cv

πŸ§ͺ Testing

python test_cv_generation.py
python test_embedding.py
python test_matcher.py
python test_parser.py
python test_search.py

πŸ—ΊοΈ Roadmap

  • Add authentication for multi-recruiter access
  • Support batch resume uploads
  • Export candidate rankings as CSV/PDF reports
  • Add support for additional file formats (RTF, plain text)

🀝 Contributing

Contributions, issues, and feature requests are welcome. Feel free to open a PR or issue.


πŸ“„ License

This project is licensed under the MIT License.


πŸ‘€ Author

Rayhaan β€” AI/ML student & Data Science Intern, building tools at the intersection of AI and recruitment tech.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors