Every job board, HR platform and career coaching app has the same problem, they need to tell candidates whether their resume is any good before a human ever reads it.
Most companies solve this with expensive ATS software. I built an API that does the same thing in one call.
The Problem With Resumes
Most resumes never get seen by a human. They get filtered out by Applicant Tracking Systems, software that scans for keywords, checks formatting and scores the resume before deciding whether to pass it to a recruiter.
The problem is candidates have no idea what these systems are looking for. They submit a resume, hear nothing back, and have no idea why.
This API fixes that. It tells you exactly what an ATS will find, what it will flag as a problem, and what to fix.
What I Built
The Resume Analyzer & Job Match Scoring API, send it resume text and optionally a job description, get back a full analysis.
Input:
{
"resume_text": "Jane Smith | jane@email.com | linkedin.com/in/janesmith\n\nSUMMARY\nFull Stack Engineer with 5 years experience...\n\nSKILLS\nJavaScript, React, Node.js, Docker, AWS",
"job_description": "Senior Engineer needed with React, TypeScript, Node.js, Docker, AWS..."
}
Output:
{
"success": true,
"data": {
"overall_score": 79,
"grade": "B",
"ats_analysis": {
"score": 85,
"checks_passed": 12,
"total_checks": 14,
"issues": []
},
"job_match": {
"score": 72,
"match_level": "Good Match",
"matched_keywords": ["react", "node.js", "docker", "aws"],
"missing_keywords": ["typescript", "postgresql"],
"seniority_level": "senior",
"required_experience": "5+ years"
},
"skills": {
"technical": ["javascript", "react", "node.js", "docker", "aws"],
"soft": ["leadership", "communication"],
"total_count": 7
},
"suggestions": [
{
"priority": "high",
"category": "Job Match",
"message": "Add these missing keywords: typescript, postgresql"
}
]
}
}
The 5 Endpoints
| Method | Endpoint | Description |
|---|---|---|
| GET | /health |
Health check |
| POST | /analyze/resume |
ATS score + skills + suggestions |
| POST | /analyze/job-match |
Match score vs job description |
| POST | /analyze/full |
Everything combined |
| POST | /extract/skills |
Skills only β lightweight |
The /analyze/full endpoint is the main one for most integrations. It runs ATS analysis and job match scoring in one call and returns everything you need to give a candidate actionable feedback.
How the ATS Score Works
The ATS score runs 14 checks against the resume text:
const checks = {
hasEmail: /[\w.-]+@[\w.-]+\.\w{2,}/.test(text),
hasPhone: /(\+?\d[\d\s\-().]{7,}\d)/.test(text),
hasLinkedIn: /linkedin\.com\/in\//i.test(text),
hasWorkExperience: /(experience|employment|position)/i.test(text),
hasEducation: /(education|university|degree|bachelor)/i.test(text),
hasSkillsSection: /(skills|technologies|competencies)/i.test(text),
hasSummary: /(summary|objective|profile)/i.test(text),
hasBulletPoints: /[β’\-*]\s+\w/.test(text),
hasQuantifiedResults:/\d+[\s%+]|(increased|improved|reduced)\s+\w+\s+by\s+\d/i.test(text),
hasActionVerbs: /(developed|built|led|designed|implemented)/i.test(text),
hasDates: /\b(20\d{2}|19\d{2})\b/.test(text),
lengthOk: text.length >= 400 && text.length <= 8000,
// ... more checks
};
Each passed check adds to the score. Each failed check generates a specific issue message telling the candidate exactly what to fix, not just "your resume needs work" but "add quantified achievements like increased sales by 30%".
How Job Matching Works
The job match score compares keywords from the job description against the resume text:
function calculateJobMatch(resumeText, jobDescription) {
// Extract meaningful words from JD, filter stopwords
const jobWords = [...new Set(
jobDescription.toLowerCase()
.replace(/[^a-z0-9\s]/g, " ")
.split(/\s+/)
.filter(w => w.length > 2 && !stopwords.has(w))
)];
const matched = jobWords.filter(w => resumeText.toLowerCase().includes(w));
const missing = jobWords.filter(w => !resumeText.toLowerCase().includes(w));
return {
score: Math.round(matched.length / jobWords.length * 100),
matchedKeywords: matched.slice(0, 20),
missingKeywords: missing.slice(0, 10),
};
}
The missing keywords list is the most valuable output, it tells candidates exactly which words to add to their resume to increase their match score before applying.
Skill Extraction
The API checks against a database of 50+ technical skills and 15 soft skills:
const TECH_SKILLS = [
"javascript", "python", "react", "node.js", "docker",
"kubernetes", "aws", "postgresql", "mongodb", "typescript",
// ... 40+ more
];
const SOFT_SKILLS = [
"leadership", "communication", "teamwork", "project management",
// ... more
];
This gives HR platforms and job boards a clean structured list of a candidate's skills without any natural language processing overhead.
Who Uses This
Job boards, score every resume automatically when a candidate applies. Filter out resumes below a threshold score before they reach the recruiter.
Resume builders, give users real-time ATS feedback as they write. Show them their score improving as they add sections and keywords.
Career coaching apps, let coaches upload a client's resume and a target job description and instantly see the gap.
HR platforms, pre-screen large volumes of applications and rank candidates by ATS score and job match before human review.
ATS Score Guide
| Score | Grade | Meaning |
|---|---|---|
| 85-100 | A | Ready to submit |
| 70-84 | B | Minor improvements needed |
| 55-69 | C | Several issues to fix |
| 40-54 | D | Major revision needed |
| 0-39 | F | Complete rewrite recommended |
Tech Stack
- Runtime: Node.js + Express
- Hosting: Railway
- Marketplace: RapidAPI
- Zero external dependencies for the analysis logic, pure regex and text matching
No AI costs. No third-party APIs. The whole thing runs for less than $5/month.
Why I Built This
I am a developer from South Africa studying for my Bachelor of Accounting. I have been building and listing APIs on RapidAPI as a way to generate passive income while studying.
The accounting background actually helped here, I understood exactly what hiring managers and HR teams care about when screening candidates. That domain knowledge made the ATS checks more accurate than a purely technical approach would have been.
Try It
Live on RapidAPI, search Resume Analyzer Job Match to find it.
Free tier available β 10 requests/month, no credit card required.
If you are building a job board, HR tool or career app and want to integrate resume scoring, this is the fastest way to get it done.
Built in South Africa. Sold globally.
Top comments (0)