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