GuidesAPI EndpointsAPI Changelog
Live AI Demo
API Changelog
Fixed

Grading API now gives stable scores to repeated requests

Make the same request to GET /profile/grading or GET /job/grading again and the score now stays stable: grader-hrflow-profiles-cosmic5 and grader-hrflow-jobs-cosmic5 give the same score every time, and with grader-hrflow-profiles-titan5 and grader-hrflow-jobs-titan5, two scores of the same request differ by at most 0.03 on the 0-to-1 scale. A profile or job that can't be graded is flagged in errors instead of failing the whole request.

Action required

  • Now: none. GET /profile/grading and GET /job/grading keep their parameters, their algorithm keys and their response.
  • Later: none. Nothing in this update is deprecated.

What changed

  • With grader-hrflow-profiles-cosmic5, grader-hrflow-profiles-titan5, grader-hrflow-jobs-cosmic5 and grader-hrflow-jobs-titan5, a job is read the same way on every request, so a repeated request is graded on the same input and its score stays stable.
  • With grader-hrflow-profiles-cosmic5 and grader-hrflow-jobs-cosmic5, the same profile and job get the same score on every request.
  • A profile (or job) too long to be graded no longer fails the whole request: its scores entry is null, its errors entry says it is too long to be graded, and the other profiles (or jobs) keep their scores.
  • With profile_ids, an indexed profile with nothing to grade (only contact details, for example) gets null in scores, and its errors entry says it has nothing to grade. When no profile of the request has anything to grade, the request answers 400.

Performance

GraderLargest difference between two scores of the same request
grader-hrflow-profiles-cosmic5, grader-hrflow-jobs-cosmic50: the same score every time
grader-hrflow-profiles-titan5, grader-hrflow-jobs-titan50.03, over 30 minutes

Example

curl -G https://api.hrflow.ai/v1/profile/grading \
  -H "X-API-KEY: <your_api_key>" \
  -H "X-USER-EMAIL: <your_email>" \
  --data-urlencode "algorithm_key=grader-hrflow-profiles-cosmic5" \
  --data-urlencode "board_key=<board_key>" \
  --data-urlencode "job_key=<job_key>" \
  --data-urlencode "source_key=<source_key>" \
  --data-urlencode "profile_ids[0][source_key]=<source_key>" \
  --data-urlencode "profile_ids[0][profile_key]=<profile_key>" \
  --data-urlencode "profile_ids[1][source_key]=<source_key>" \
  --data-urlencode "profile_ids[1][profile_key]=<profile_key_2>"

The response keeps its shape, one entry per profile in the order of profiles. Here the second profile is too long to be graded: it is flagged, and the first one keeps its score.

{
  "code": 200,
  "message": "…",
  "data": {
    "profiles": [{"key": "<profile_key>"}, {"key": "<profile_key_2>"}],
    "scores": [[0.49184858798980713, 0.50815147161483765], null],
    "axis": null,
    "errors": [null, {"code": "…", "message": "profile too long for the model"}]
  }
}

Links