Total CVs Processed 📄
0
Active Job Postings đŸ’ŧ
0
Average Match Score đŸŽ¯
0%
High-Match (70%+) ⭐
0

Recent Activity

📋 No recent activity

Activity will appear here when you start matching CVs

1 Select Job 2 Upload CVs 3 Run Matching 4 View Results

📋 Step 1: Select Job Requirement

📤 Step 2: Upload CVs

📁
Drag & drop CV files here
or click to browse â€ĸ PDF, DOCX, TXT supported
0 files selected

âš™ī¸ Step 3: Matching Options

Enable LLM Analysis Deep contextual understanding
Include Explanations Detailed score breakdown
Auto-shortlist 70%+ Automatically flag top matches
Send Email Notifications Notify when processing completes
50%

📊 Step 4: Matching Results

0 CVs Processed
0 High Match
0 Medium Match
0% Avg Score

📊 No results yet

Upload CVs and click "Run CV Matching" to see results here

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.

PDF DOCX TXT RTF (Beta)

Hybrid AI + LLM: Traditional NLP + Large Language Model for contextual understanding

🔑 API Integration

https://api.cvmatching.enterprise.com/v1
sk_live_a7f2b9e4c3d1a8f6b2e9c4d7a3f8b1e5â€ĸâ€ĸâ€ĸâ€ĸâ€ĸâ€ĸâ€ĸâ€ĸ

📤 Upload CV

Upload individual or batch CV files for processing. Supports PDF, DOCX, TXT formats.

POST
/api/v1/cv/upload

📝 Create Job Requirement

Define job requirements with skills, experience, and matching weights.

POST
/api/v1/jobs/create

đŸŽ¯ Match CVs to Job

Run AI-powered matching to evaluate candidates against job requirements.

POST
/api/v1/cv/match

🏆 Get Ranked Candidates

Retrieve sorted list of candidates with match scores and explanations.

GET
/api/v1/jobs/{job_id}/candidates/ranked

🔍 Parse CV Fields

Extract structured data from CVs: skills, experience, education, certifications.

POST
/api/v1/cv/parse

đŸ“Ļ Batch Processing

Process multiple CVs asynchronously with webhook notifications.

POST
/api/v1/cv/batch-process

Basic Information

âš–ī¸ Matching Weight Importance

Adjust sliders to define how candidates are evaluated

Skills Match 40%
Experience 30%
Education 15%
Keywords 15%

Select Ingestion Mode

📄 Real-time File Selection

Upload individual or batch CV files through the API or web interface.

POST /api/v1/cv/upload
Active

📁 Folder Monitoring

Automatically process CVs from a designated folder or cloud storage.

POST /api/v1/cv/watch-folder
Inactive

🔗 Direct ERP Integration

Connect directly to your ERP database for seamless data sync.

POST /api/v1/cv/erp-sync
Inactive

Extraction Fields

Personal Info
Required â€ĸ Name, Email, Phone
Skills
Required â€ĸ Technical & Soft
Years of Experience
Required â€ĸ Total & Per Role
Job Titles
Required â€ĸ Previous Positions
Education
Optional â€ĸ Degrees
Certifications
Optional â€ĸ Credentials
Languages
Optional â€ĸ Spoken & Written
Projects
Optional â€ĸ Portfolio

📋 No preview data available

Go to "Use Service" page to upload CVs, run matching, and see real results.

📊 No ranking data available

Go to "Use Service" page to see ranked candidates after matching.

💡 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.

â„šī¸ Important Notes
Dashboard Integration: This dashboard uses the following endpoints to display real-time data. All endpoints return JSON responses. Make sure your backend API server is running to see live data.

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/ - Upload CV File â–ŧ
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/ - Match CVs to Job â–ŧ
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/ - List All Jobs â–ŧ
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/ - Get Dashboard Statistics â–ŧ
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/ - Get Recent Activity â–ŧ
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/ - Shortlist Candidates â–ŧ
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/ - Compare Candidates â–ŧ
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/ - Get Candidate Details â–ŧ
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/ - Get Shortlisted Candidates â–ŧ
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