Resume/CV Job Match Score
Smart AI scoring for CV-to-job compatibility
Effortlessly evaluate how well a candidate fits a role using SharpAPI's Resume/CV & Job Description Compatibility Scoring API. Upload a resume, provide a job description, and let our powerful scoring engine analyse compatibility across 20 key hiring criteria.
Supported resume files - 11 file formats:
DOC, DOCX, TXT, RTF, PDF, JPG, JPEG, JPE, PNG, TIFF, TIF
And yes - it handles those flattened PDFs where the entire resume is just images instead of text.
This endpoint is designed to help HR platforms, recruitment systems, and ATS providers instantly quantify CV-to-job fit using AI-powered Natural Language Processing and weighted scoring models.
The API provides structured match scores for core hiring criteria such as skills, education, experience, certifications, soft skills, and more. It also returns human-readable explanations for the most critical matching areas to support better decision-making.
This API is perfect for developers working on:
- Automated candidate screening
- ATS integration
- Smart job-matching algorithms
- HR analytics dashboards
Supported Parameters
| Name | Type | Description |
|---|---|---|
| file | File | Resume/CV file (PDF, DOCX, TXT, etc.) |
| content | String | Full job description in plain text |
| language | String | Language for explanations (default is "English") |
| context | String (optional) | Per-request directives that modify scoring weights and interpretation. Follows the EMPHASIZE / DEEMPHASIZE / CREDIT directive contract described above. Max 5000 characters |
Requests exceeding the 5000-character limit will fail validation with an HTTP 422 response
The resume file must be uploaded using form-data as the parameter named file. You must also provide a content string with the full job description. The optional language parameter defines the explanation output language (default is English).
CVMatchScore.com was built using this SharpAPI endpoint.
See it in action by matching a CV against a job description in real time.👉 Try it live: https://cvmatchscore.com
AI jobs involve two key steps:
- Submitting the AI job: Initiating the process by sending the job request.
- Monitoring and receiving results: Continuously checking the job status and obtaining the final output upon successful completion.
Related SDKs/Libraries
SharpAPI is now SOC 2 Type II compliant. You can check details at our Trust Center Portal.
Your data is your data. Learn how we protect it and comply with global privacy standards in our Data Handling and Compliance policy .
What's new
The context parameter has been significantly upgraded. It is no longer just a free-form note appended to the prompt — it now follows a formal directive contract that the scoring engine recognises and maps onto concrete weight adjustments in the final match score.
Key improvements:
contextnow influencesoverall_match. Directives adjust the internal weighting table before the weighted-averageoverall_matchis computed, so a change in emphasis is reflected in both the individual metrics and the final overall score.- Three directive shapes (
EMPHASIZE,DEEMPHASIZE,CREDIT) give you predictable, repeatable behaviour. - Role-family standard credentials are now credited even when the job description is silent about them (e.g. Excel / SQL / Power BI for finance roles).
- Maximum
contextlength is now formally set to 5000 characters per request.
Using the context parameter
The context parameter lets you pass per-request instructions that modify how the scoring engine weights and interprets specific metrics. Use it to customise scoring for the specific role, seniority, or hiring strategy behind each job description — without rewriting the job description itself.
Directive contract
The engine recognises three directive shapes. You can mix multiple directives in a single context string, separated by periods or newlines.
1. EMPHASIZE: <topic>
Increases the weight of the matching metric(s) in the overall score calculation by one step (capped at the maximum). Use it to signal "this dimension matters more than the default for this particular role."
Example:
EMPHASIZE: skills
2. DEEMPHASIZE: <topic>
Decreases the weight of the matching metric(s) by one step (floor of 1 — weights never drop to zero). Use it to signal "this dimension is less critical than the default for this particular role."
Important:
DEEMPHASIZEreduces the metric's weight in the overall average — it does not make the engine score that metric more strictly. If you want the engine to pay less attention to experience, useDEEMPHASIZE: experience— not phrases like "be strict about experience".
Example:
DEEMPHASIZE: experience
3. CREDIT: <skill | tool | certification>
Instructs the engine to treat the named item as a plausible requirement for this role family, even if the job description does not list it explicitly. Useful when your hiring standards include tools or certifications that aren't spelled out in the JD.
Example:
CREDIT: Excel and Analytics certificates
Topic mapping
Topics in directives can be either exact metric names (e.g. skills_match, education_match) or plain-English categories. The engine maps categories to the related metrics internally, so you don't need to memorise the full schema.
| Topic keyword | Metrics affected |
|---|---|
skills, technical skills |
skills_match, technical_stack_match |
experience |
experience_match, years_experience_weighting, recent_role_relevance |
education |
education_match |
certificates, certifications |
certifications_match, certifications_training_relevance |
location, remote |
location_preference_match, remote_work_flexibility |
management, leadership |
management_experience_match |
tenure, stability |
stability_score |
Recommended patterns
Based on internal validation, these context patterns produce the most reliable, directional results:
Pattern 1 — Entry-level / fresher role where credentials matter more than years of experience
EMPHASIZE: skills. EMPHASIZE: education. DEEMPHASIZE: experience. CREDIT: Excel and Analytics certificates.
Pattern 2 — Senior technical role where stack match is critical
EMPHASIZE: skills. EMPHASIZE: technical_stack_match. DEEMPHASIZE: education.
Pattern 3 — Leadership role where management experience outweighs hands-on skills
EMPHASIZE: management. EMPHASIZE: experience. DEEMPHASIZE: technical_stack_match.
Pattern 4 — Remote-first hiring where location is irrelevant
DEEMPHASIZE: location. EMPHASIZE: skills.
Best practices
- Be specific.
CREDIT: Excel, SQL, Power BIwill move the needle; generic phrases like "practical competency outweighs formal credentials" generally won't. - Use contrast pairs. Combining
EMPHASIZEwithDEEMPHASIZEin the same request gives the engine a clearer signal than a single directive in isolation. - Name tools, credentials, and technologies explicitly rather than referring to abstract qualities like "talent" or "potential".
- Avoid percentage-based instructions. Directives like "reduce weight by 50%" are interpreted conservatively as a single
DEEMPHASIZEstep. Use discrete directives instead — they are more reliable than fractional arithmetic. - Keep
contextfocused. Short, targeted directive strings (a handful of instructions) outperform long prose paragraphs.
What context can and cannot change
What context can change
- Weights of any of the 20 metrics in the
overall_matchcalculation. - Credit given to resume items (skills, tools, certifications) that are not explicitly listed in the job description but are standard for the role family.
- Scoring emphasis on role-family-standard credentials (e.g. finance certifications, PM frameworks) when the JD is silent about them.
What context cannot change
- Arithmetic metrics. Scores like
stability_score,location_preference_match, andyears_experience_weightingare computed from hard facts (dates, geography).contextadjusts their weight inoverall_match, but the individual score itself will remain stable across runs. - The JSON schema. The 20 metrics, their names, and the
explanationsstructure are fixed.contextcannot add or remove fields. - Personal-data protections. The engine always anonymises the resume before scoring and ignores any directive that would ask it to bypass this.
A note on determinism
LLMs are inherently non-deterministic on the margins. Tiny variations in the input — a different punctuation mark, a reordered sentence, or a slightly rephrased directive — can occasionally produce slightly different scores. This is a property of the underlying technology, not a bug.
The context parameter is our primary lever for steering the engine toward the scoring behaviour that best matches your hiring workflow. If you encounter patterns where the engine's output doesn't match your expectations, the most effective feedback is a concrete example (resume + job description + context + expected vs. actual scores) — that's exactly the kind of input we use to continuously tune the scoring rules.
Step 1. Submit the Compatibility Scoring Request
Endpoint: POST - /api/v1/hr/resume_job_match_score
REQUEST EXAMPLE:
curl --location 'https://sharpapi.com/api/v1/hr/resume_job_match_score' \
--header 'Accept: application/json' \
-H "Authorization: Bearer YOUR_API_TOKEN" \
--form 'file=@"Resume.pdf"' \
--form 'content="Software Engineer - We are looking for a Software Engineer proficient in JavaScript, React, and Node.js, with experience in Agile methodologies."' \
--form 'language="English"'
RESPONSE EXAMPLE:
{
"status_url": "https://sharpapi.com/api/v1/job/status/45da1abe-35a3-4628-ae70-e2cb48c084c2",
"job_id": "45da1abe-35a3-4628-ae70-e2cb48c084c2"
}
Step 2. Monitor & Fetch Results
Endpoint: GET - /api/v1/hr/resume_match_score/job/status/:uuid
This endpoint returns the status and result of the resume-to-job matching job.
RESULT EXAMPLE:
{
"data": {
"type": "api_job_result",
"id": "2f17d9ef-dcbc-4521-9a20-6d9f41e58de8",
"attributes": {
"status": "success",
"type": "hr_resume_job_match_score",
"result": {
"match_scores": {
"overall_match": 65,
"skills_match": 80,
"experience_match": 90,
"education_match": 0,
"certifications_match": 0,
"job_title_relevance": 70,
"industry_experience_match": 85,
"project_experience_match": 75,
"technical_stack_match": 80,
"methodologies_match": 60,
"soft_skills_match": 75,
"language_proficiency_match": 100,
"location_preference_match": 50,
"remote_work_flexibility": 80,
"certifications_training_relevance": 0,
"years_experience_weighting": 90,
"recent_role_relevance": 60,
"management_experience_match": 100,
"cultural_fit_potential": 70,
"stability_score": 85
},
"explanations": {
"skills_match": "The candidate has strong PHP and MySQL skills, which align well with the job requirements. However, specific mention of Laravel experience is missing.",
"experience_match": "The candidate has over 22 years of programming experience, which is highly relevant and exceeds the typical requirements for the role.",
"education_match": "No specific educational background is provided in the resume, making it impossible to assess alignment with job requirements.",
"certifications_match": "No certifications are listed in the resume, so alignment with any required certifications cannot be assessed.",
"language_proficiency_match": "The candidate has professional working proficiency in English, which matches the job requirement for English communication skills."
}
}
}
}
}
Related topics: Resume job matching, resume scoring API, CV scoring engine, HR matching software, AI hiring assistant, applicant scoring API, ATS compatibility match
- Related Keywords:
- HR Tech
- HR API
- AI CV Parsing
- CV
- HR
- Matching
- Job Positions