This is a Final-Year Computer Science project featuring a Semantic Recruitment System for automated CV screening, skill matching, and candidate ranking.
- Semantic Matching: Uses Sentence-BERT (
all-MiniLM-L6-v2) to understand the context of CVs and Job Descriptions beyond simple keywords. - Section-Aware Parsing: Extracts text from PDF and DOCX files, identifying key sections like Work Experience and Skills.
- Explainable Ranking: Provides a final score (0.0 to 1.0) based on Semantic Match (80%) and Experience Weight (20%), along with a list of matched skills.
- 3NF Relational Database: PostgreSQL-compatible schema (tested with SQLite) ensuring data integrity and normalization.
- Modern Dashboard: A React-based recruiter interface for batch uploading CVs and viewing rankings.
- Backend: FastAPI (Python)
- NLP Engine: spaCy (NER) & Sentence-Transformers (Embeddings)
- Frontend: React with Tailwind CSS v4
- Database: SQLAlchemy (3NF)
- Navigate to the
backenddirectory:cd backend - Create a virtual environment and install dependencies:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt python -m spacy download en_core_web_sm
- Set up the environment variables in a
.envfile (see.env.example):DATABASE_URL=sqlite:///./recruitment.db UPLOAD_DIR=./uploads - Initialize the database:
python init_db.py
- Start the API server:
uvicorn main:app --reload
- Navigate to the
frontenddirectory:cd frontend - Install dependencies:
npm install
- Start the development server:
npm run dev
- Open the dashboard in your browser (usually
http://localhost:5173). - Create a new Job Description.
- Select the job and upload CVs in batch (PDF/DOCX/TXT).
- Wait for the background processing to complete and refresh the rankings to see the results.