Skip to main content
POST
/
job-interview-pre-screening-api-resume-text
Run pre-screening on a plaintext resume
curl --request POST \
  --url https://cool.jobmojito.com/functions/v1/job-interview-pre-screening-api-resume-text \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "position_id": "00000000-0000-0000-0000-000000000000",
  "candidate_name": "Jane Doe",
  "candidate_email": "jane.doe@example.com",
  "candidate_country_code": "US",
  "candidate_resume": "Experienced software engineer with 8 years ...",
  "candidate_external_id": "ATS-12345",
  "candidate_linkedin_url": "https://www.linkedin.com/in/jane-doe",
  "form": {
    "education": "masters_degree",
    "languages": [
      {
        "code": "en",
        "level": "c2"
      }
    ],
    "residency": "US",
    "nationality": "US",
    "visa": "has_visa",
    "age": 30,
    "gender": "male"
  }
}
'
{
  "success": true,
  "decision_status": "recruiter_action",
  "recommendation": "recruiter_action",
  "profile_interview_id": "<string>",
  "interview_result_pre_screening_id": "<string>",
  "interview_file_id": "<string>",
  "pre_screening_score": 123,
  "resume_ai_analysis": "<string>",
  "resume_ai_education": "<string>",
  "resume_ai_technical_experience": 123,
  "resume_ai_is_switching_profession": true,
  "processing_reason": "<string>"
}

Authorizations

Authorization
string
header
required

Supabase JWT access token, passed as Authorization: Bearer <token>.

Body

application/json
position_id
string
required

Position (position_def_set) id the candidate is being screened against.

Minimum string length: 1
Example:

"00000000-0000-0000-0000-000000000000"

candidate_name
string
required

Candidate full name.

Minimum string length: 1
Example:

"Jane Doe"

candidate_email
string
required

Candidate email (normalised to trimmed lowercase).

Minimum string length: 1
Example:

"jane.doe@example.com"

candidate_country_code
string
required

Candidate country code, used as default residency/nationality.

Minimum string length: 1
Example:

"US"

candidate_resume
string
required

Plaintext candidate resume.

Minimum string length: 1
Example:

"Experienced software engineer with 8 years ..."

candidate_external_id
string

Optional external identifier stored on the candidate profile.

Example:

"ATS-12345"

candidate_linkedin_url
string

Optional LinkedIn profile URL stored on the candidate profile.

Example:

"https://www.linkedin.com/in/jane-doe"

form
object

Optional structured pre-screening form used by the assessment rules. Custom fields (defined via form_fields) are also accepted.

Response

Pre-screening completed, or an early { decision_status, message } result when the candidate is not in the pre-screening candidate_action state.

Result of the pre-screening analysis. When the candidate is not in the pre-screening candidate_action state, a { decision_status, message } object is returned instead.

success
boolean
required
Example:

true

decision_status
string
required

Applied decision status for the pre-screening step.

Example:

"recruiter_action"

recommendation
enum<string>
required

AI recommendation derived from the pre-screening status.

Available options:
ai_accept,
ai_reject,
recruiter_action
Example:

"recruiter_action"

profile_interview_id
string
required

Candidate profile_interview id.

interview_result_pre_screening_id
string
required

Inserted interview_result_pre_screening id.

interview_file_id
string
required

Stored resume interview_file id.

pre_screening_score
number | null
required

AI match score.

resume_ai_analysis
string | null
required

AI resume analysis feedback.

resume_ai_education
string | null
required

AI-detected education level of the candidate.

resume_ai_technical_experience
number | null
required

AI-estimated years of relevant experience.

resume_ai_is_switching_profession
boolean | null
required

Whether the candidate is switching profession.

processing_reason
string | null
required

Reason the candidate failed screening, when applicable.