HR Tech

AI-powered API

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:

  1. Submitting the AI job: Initiating the process by sending the job request.
  2. Monitoring and receiving results: Continuously checking the job status and obtaining the final output upon successful completion.


SharpAPI SOC 2 Type II

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:

  1. context now influences overall_match. Directives adjust the internal weighting table before the weighted-average overall_match is computed, so a change in emphasis is reflected in both the individual metrics and the final overall score.
  2. Three directive shapes (EMPHASIZE, DEEMPHASIZE, CREDIT) give you predictable, repeatable behaviour.
  3. 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).
  4. Maximum context length 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: DEEMPHASIZE reduces 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, use DEEMPHASIZE: 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

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 BI will move the needle; generic phrases like "practical competency outweighs formal credentials" generally won't.
  • Use contrast pairs. Combining EMPHASIZE with DEEMPHASIZE in 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 DEEMPHASIZE step. Use discrete directives instead — they are more reliable than fractional arithmetic.
  • Keep context focused. 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_match calculation.
  • 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, and years_experience_weighting are computed from hard facts (dates, geography). context adjusts their weight in overall_match, but the individual score itself will remain stable across runs.
  • The JSON schema. The 20 metrics, their names, and the explanations structure are fixed. context cannot 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

SharpAPI Introduction Video

SharpAPI is a powerful AI-powered API, which provides a range of workflow automation endpoints to help improve efficiency across various industries. It has features for E-commerce, Content & Marketing Automation, SEO, HR Tech, and Travel & Hospitality industries.

Transforming HR Tech with AI-Powered Efficiency

So, you’re neck-deep in resumes and job descriptions, and your only defense against the deluge is a lukewarm cup of coffee. Enter SharpAPI. This isn’t just any old toolkit – this is a turbo-charged, HR tech hero. Here’s how each of these endpoint superheroes (cue dramatic music) can turn your hiring process from drudgery to, well, semi-automated bliss.

Job Positions API: Unlock Comprehensive HR Data

Imagine having access to a vast, meticulously structured database of over 16,000 job positions across various industries—all at your fingertips. This API doesn’t just list roles; it also offers related job positions with weighted relevancy scores, making it a perfect companion for HR platforms, job boards, AI-driven career matching, and workforce analytics.

HR Marketing Meets Automation: SharpAPI Content Tools

HR tech is about more than just hunting for the perfect hire – it’s about creating content that attracts them and keeps them glued to your brand. Enter SharpAPI’s content automation tools, here to make your marketing team and your brand look like absolute rockstars. Imagine having a set of tools so sharp, they could slice through a clunky sentence or rescue a dull job ad, turning it into a showstopper. Let’s dive in.

Like SharpAPI? Share it and earn 30% recurring commissions — forever.

Your clients already need AI. Get paid for recommending the easiest way to add it.