Job Fit Analysis
Score a candidate's fit against a job description across skills, experience, education, and culture indicators.
POST /v1/hiring/job-fit-analysis
Produces a multi-dimensional fit score between a candidate's resume/profile and a job description. Returns dimension-level scores, matched and missing skills, and a recommendation on whether to proceed.
Required inputs
| Field | Type | Notes |
|---|---|---|
input.user_id | string | Your platform's user ID |
input.resume | ResumeInput | Candidate's resume text |
input.job_description | JobDescriptionInput | Target role details |
Optional inputs
| Field | Type | Notes |
|---|---|---|
input.profile | ProfileInput | Structured profile for more precise skill matching |
input.career_goals | CareerGoalsInput | Contextualises candidate's interest in the role |
Example request
curl -X POST https://api.liyaengine.ai/v1/hiring/job-fit-analysis \
-H "Authorization: Bearer $LIYA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"input": {
"user_id": "usr_123",
"resume": { "text": "Jane Doe\n8 years of software engineering..." },
"job_description": {
"title": "Staff Engineer",
"description": "Own platform architecture, lead technical direction...",
"required_skills": ["Go", "Kubernetes", "system design"],
"required_experience_years": 7
}
}
}'Response
{
"success": true,
"data": {
"output": {
"overall_fit_score": 81,
"recommendation": "good_match",
"confidence": { "score": 0.89, "level": "high" },
"skill_match_score": 76,
"experience_match_score": 90,
"education_match_score": 85,
"skill_matches": [
{ "skill": "TypeScript", "match_type": "exact", "candidate_level": "advanced", "required_level": "advanced" },
{ "skill": "system design", "match_type": "exact", "candidate_level": "intermediate", "required_level": "advanced" },
{ "skill": "Go", "match_type": "missing", "required_level": "advanced", "gap": "No Go experience visible in resume" },
{ "skill": "Kubernetes", "match_type": "missing", "required_level": "intermediate", "gap": "No Kubernetes experience visible in resume" }
],
"strengths": [
{ "strength": "8 years of experience", "relevance": "Meets the 7-year requirement", "evidence": "Resume shows continuous experience since 2018" },
{ "strength": "Cross-functional platform leadership", "relevance": "Matches the role's platform-ownership scope", "evidence": "Led migration to microservices across 3 teams" }
],
"gaps": [
{ "gap": "No Go or Kubernetes experience visible in resume", "severity": "significant", "mitigation": "Highlight transferable systems experience; consider a short Kubernetes course before interviewing" }
],
"application_strategy": {
"recommended_approach": "Apply, and proactively address the Go/Kubernetes gap in the cover letter.",
"talking_points": ["Platform migration leadership", "TypeScript and system design depth"],
"areas_to_address": ["Go experience", "Kubernetes experience"],
"questions_to_prepare": ["How is the platform team's Go usage structured today?"]
},
"actions": [
{ "action_id": "skill_gap_analysis", "action_type": "secondary", "title": "See full skill gap", "priority": 3 }
]
}
}
}Scoring weights
Fit scores are computed using scoring_weights.job_fit_weights, a tenant-level configuration value. Default weights:
| Dimension | Default weight |
|---|---|
| Skill match | 35% |
| Experience match | 30% |
| Education match | 15% |
| Culture indicators | 10% |
| Location match | 10% |
These weights are not currently exposed as a self-serve dashboard or API setting — contact support if you need them customised for your tenant.