Feature — AI Match Scoring

Every application, scored and explained.

Send a job description and a candidate application to a single endpoint and get back a 0-100 match score with a recruiter-style reason. Rank hundreds of applicants before a human reads the first CV.

A job and an application matched into a 0-100 score
API

A single endpoint for the whole match flow

POST a job and an applicant, get back a 0-100 score, a written reason, and the credits remaining on the subscription. No SDK to install — just an HTTP call.

  • Versioned at /api/v1
  • Bearer token auth
  • JSON in, JSON out
  • Consistent error shapes (401, 402, 422, 429, 502)
POST /api/v1/matching-score
Authorization: Bearer ...

{
  "job": { "title": "...", "description": "..." },
  "application": { "resume_text": "..." }
}

→ { "score": 87, "reason": "...", "credits_remaining": 99 }
Scoring

A consistent rubric, not vibes

Our managed AI engine evaluates required-skills coverage, relevant experience and seniority, domain fit, and soft signals from the cover letter — and always explains the score. Enforced JSON output keeps responses parseable, even on rough days.

  • Weighted rubric across skills, experience, domain and soft signals
  • Written reason with every score
  • Attach a resume file (PDF, DOC, DOCX, TXT) instead of raw text
  • Refund-on-failure built in
Scoring rubric:
  Required skills coverage . 40%
  Experience & seniority ... 30%
  Domain / industry fit .... 15%
  Soft signals ............. 15%

→ { "score": 0-100, "reason": "max 80 words" }
Scale

Sync for speed, async for volume

Call the sync endpoint for instant results, or dispatch to the async endpoint when a vacancy closes and you want the whole applicant pool scored in the background. Poll the job ID and collect results when ready.

  • POST /matching-score for real-time scoring
  • POST /matching-score/async for batches
  • GET /jobs/{id} to poll status and results
  • Credits charged once, refunded automatically on failure
POST /api/v1/matching-score/async
→ 202 { "job_id": "9c2f...", "status": "queued" }

GET /api/v1/jobs/9c2f...
→ { "status": "completed",
    "result": { "score": 91, "reason": "..." } }
Observability

Every call is logged in full

Request payload, response payload, score, tokens, IP, status — all stored. Admins can replay any AI decision without bothering the API consumer. Users see their call history on the dashboard.

  • Full request + response capture
  • Score + token usage per call
  • Status: success / refunded / failed
  • Searchable from the admin panel
usage_logs (id, user_id, endpoint,
  request_payload, response_payload,
  score, tokens_used, status, created_at)

See the API in action

Sign up, generate a key, hit the endpoint. Refund on failure means every credit buys a result. Need structured candidate data too? Pair it with AI Resume Parsing.

Get started