Dashboard
Real-time overview of your CV matching activity
Recent Activity
đ No recent activity
Activity will appear here when you start matching CVs
đ Use CV Matching Service
Upload CVs and match them against job requirements in real-time
đ Step 1: Select Job Requirement
đ¤ Step 2: Upload CVs
âī¸ Step 3: Matching Options
đ Step 4: Matching Results
đ No results yet
Upload CVs and click "Run CV Matching" to see results here
CV Matching Service Overview
Enterprise-grade API service for intelligent candidate-job matching
Service Description
Our AI-powered CV matching system combines hybrid AI techniques with LLM enhancement to automatically rank and match candidates against job requirements. The service is designed as a reusable API that integrates seamlessly into ERP systems and external HR platforms.
Hybrid AI + LLM: Traditional NLP + Large Language Model for contextual understanding
đ API Integration
API Features
Enterprise-grade CV processing endpoints ready for integration
đ¤ Upload CV
Upload individual or batch CV files for processing. Supports PDF, DOCX, TXT formats.
POSTđ Create Job Requirement
Define job requirements with skills, experience, and matching weights.
POSTđ¯ Match CVs to Job
Run AI-powered matching to evaluate candidates against job requirements.
POSTđ Get Ranked Candidates
Retrieve sorted list of candidates with match scores and explanations.
GETđ Parse CV Fields
Extract structured data from CVs: skills, experience, education, certifications.
POSTđĻ Batch Processing
Process multiple CVs asynchronously with webhook notifications.
POSTJob Requirement Builder
Define what the system should look for when evaluating candidates
Basic Information
âī¸ Matching Weight Importance
Adjust sliders to define how candidates are evaluated
CV Ingestion Configuration
Choose how CVs are provided to the matching system
Select Ingestion Mode
đ Real-time File Selection
Upload individual or batch CV files through the API or web interface.
đ Folder Monitoring
Automatically process CVs from a designated folder or cloud storage.
đ Direct ERP Integration
Connect directly to your ERP database for seamless data sync.
CV Parsing & Field Selection
Control which data fields are extracted from CVs
Extraction Fields
Matching Result Preview
Live demonstration of how candidates are evaluated
đ No preview data available
Go to "Use Service" page to upload CVs, run matching, and see real results.
Candidate Ranking & Comparison
View and manage ranked candidates
đ No ranking data available
Go to "Use Service" page to see ranked candidates after matching.
Explainability & Scoring Breakdown
Understanding why Sarah Mitchell received an 87% match score
đĄ No score breakdown available
Select a candidate from match results to view detailed scoring breakdown.
Score breakdowns are available in the "Use Service" page after running matching.
API Documentation
Complete integration guide for developers
No Data Available? If you see "No data available" or empty results, ensure:
- The backend API server is running
- The database contains jobs and CVs
- The API endpoints are accessible from this dashboard
đ Authentication
Most endpoints in this dashboard use direct API access. For external integrations, you may need authentication tokens.
Authorization: Bearer YOUR_API_TOKEN Example: Authorization: Bearer sk_live_a7f2b9e4c3d1a8f6b2e9c4d7a3f8b1e5
đ Base URL
The API base path used by this dashboard. Update according to your deployment.
Base Path: /api/cv Example Full URLs: - http://localhost:8000/api/cv/upload/ - http://localhost:8000/api/cv/match/ - http://localhost:8000/api/cv/jobs/
đĄ Available Endpoints
POST /api/cv/upload/
Content-Type: multipart/form-data
Body:
- file: [CV file (PDF, DOCX, TXT)]
Response (200 OK):
{
"id": 123,
"filename": "candidate_cv.pdf",
"uploaded_at": "2026-02-12T15:30:00Z"
}
POST /api/cv/match/
Content-Type: application/json
Body:
{
"job_id": 1,
"cv_ids": [123, 124, 125],
"use_llm": true
}
Response (200 OK):
[
{
"id": 1,
"job": 1,
"cv": 123,
"cv_filename": "candidate_cv.pdf",
"match_percentage": 87,
"matched_skills": ["Python", "React", "Node.js"],
"llm_analysis": "Strong technical background..."
}
]
GET /api/cv/jobs/
Response (200 OK):
[
{
"id": 1,
"title": "Senior Full-Stack Developer",
"required_skills": ["Python", "React", "Node.js"],
"min_experience": 3,
"max_experience": 8,
"education_level": "Bachelor's Degree"
}
]
GET /api/cv/stats/
Response (200 OK):
{
"total_cvs": 150,
"total_jobs": 23,
"avg_match_score": 74.5,
"high_matches": 65,
"total_matches": 450
}
GET /api/cv/activity/
Response (200 OK):
[
{
"id": 1,
"description": "CV matching completed for job_123",
"created_at": "2026-02-12T15:25:00Z"
}
]
POST /api/cv/shortlist/
Content-Type: application/json
Body:
{
"match_result_ids": [1, 2, 3],
"shortlisted": true,
"user": "hr@company.com"
}
Response (200 OK):
{
"success": true,
"updated_count": 3
}
POST /api/cv/candidates/compare/
Content-Type: application/json
Body:
{
"match_result_ids": [1, 2, 3]
}
Response (200 OK):
{
"count": 3,
"common_skills": ["Python", "React"],
"comparison": [
{
"match_result_id": 1,
"cv_filename": "candidate1.pdf",
"match_percentage": 87,
"skills": ["Python", "React", "Node.js"]
}
]
}
GET /api/cv/candidates/{cv_id}/full-details/
Response (200 OK):
{
"cv": {
"id": 123,
"filename": "candidate_cv.pdf",
"uploaded_at": "2026-02-12T15:00:00Z"
},
"match_results": [
{
"job_title": "Senior Developer",
"match_percentage": 87,
"matched_skills": ["Python", "React"]
}
],
"statistics": {
"total_matches": 5,
"avg_match_score": 78.5
}
}
GET /api/cv/jobs/{job_id}/shortlisted/
Response (200 OK):
{
"count": 5,
"results": [
{
"match_result_id": 1,
"cv_filename": "candidate1.pdf",
"match_percentage": 87,
"shortlisted_at": "2026-02-12T15:30:00Z"
}
]
}
â ī¸ Error Codes
200 - Success 400 - Bad Request 401 - Unauthorized 404 - Not Found 429 - Rate Limited 500 - Server Error