AI_CANDIDATE_CV_SCREENING (PRODUCT)

AI-powered CV screening with BGE semantic matching, skill analysis, evidence scoring, and human review support.

0 1 2

Description

AI Candidate Screening Assistant

The AI Candidate Screening Assistant is an NLP-based recruitment support system designed to automate and accelerate the repetitive process of comparing candidate CVs with job descriptions.

The system accepts a candidate CV in PDF or DOCX format together with a job description. The CV is first processed using PyMuPDF or python-docx to extract structured text and relevant sections such as education, skills, experience, projects, and certifications.

The extracted candidate information and job requirements are then analyzed using BAAI/bge-small-en-v1.5, a lightweight sentence-embedding model from the Sentence Transformers ecosystem. The model converts CV content and individual job requirements into vector representations, allowing the system to identify semantic similarity rather than relying only on exact keyword matches.

To improve reliability, the semantic matching layer is combined with a deterministic skill and keyword matching system. A skill-alias dictionary recognizes related terminology and alternative expressions. The system also evaluates the strength of supporting evidence found within the candidate's CV.

Each requirement receives multiple signals, including:

  • Semantic similarity
  • Keyword/skill matching
  • Evidence strength
  • Requirement category
  • Required vs. preferred importance

These signals are combined into a hybrid matching score. The system also calculates required qualification coverage, providing an additional indication of how well the candidate satisfies the essential requirements.

Based on the combined score and required-qualification coverage, the system generates one of three recommendations:

SHORTLIST → REVIEW → DO NOT SHORTLIST

The recommendation is intentionally designed as decision support rather than an autonomous hiring decision. A human recruiter remains responsible for reviewing the evidence and making the final decision.

Architecture

Candidate CV + Job Description
              ↓
       PDF/DOCX Extraction
              ↓
       Text & Section Parsing
              ↓
     ┌────────┴─────────┐
     ↓                  ↓
BGE Semantic       Skill/Keyword
   Matching           Matching
     ↓                  ↓
     └────────┬─────────┘
              ↓
       Evidence Analysis
              ↓
        Weighted Scoring
              ↓
 Required Qualification Coverage
              ↓
      Screening Recommendation
              ↓
      Human Recruiter Review

Technical Stack

Language: Python
ML Framework: PyTorch
Embedding Framework: Sentence Transformers
Base Model: BAAI/bge-small-en-v1.5
Document Processing: PyMuPDF, python-docx
Interface: Gradio
Deployment: Hugging Face Spaces

Performance Design

The final architecture intentionally avoids expensive generative LLM inference during every screening request. Instead, it uses a lightweight embedding model combined with deterministic matching and scoring. This substantially reduces inference latency while retaining semantic understanding and providing transparent evidence for each recommendation.

The system was developed as an improvement over an earlier LLM-heavy implementation that required approximately 119 seconds per screening. Final performance and quality should be reported using the measured evaluation results from the project's test set.

Source Documentation

The complete implementation contains:

  • app.py — Gradio user interface and workflow
  • screening_engine.py — extraction, matching, scoring, and recommendation logic
  • requirements.txt — Python dependencies
  • README.md — setup, architecture, usage, and limitations
  • Evaluation files — test cases, baseline comparison, final results, and failure analysis

API Integration Guide

curl -X POST https://api.aimodelplace.com/api/v1/predict \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "model_slug=ai_candidate_cv_screening" \
  -F "file=@/path/to/your/file"

Successful response format (JSON):

{
    "balance_remaining": 630,
    "latencyMs": 69,
    "predictions": [
        {
            "confidence": 0.9464548230171204,
            "label": "Sample Label"
        }
    ],
    "recognized_object": "Sample Label",
    "success": true,
    "tokens_consumed": 10
}

For more detailed parameters and SDK examples, visit our Full API Documentation.

Post Your Comments

Login to comment

Comments

Average Ratings