Recruitment Operations API Documentation

Structure job requirements, extract resume facts, and explain candidate matches. Scores are not hiring decisions. Payment is the exact USDC price on Base with x402.

POSThttps://brainiac.software/api/v1/recruitment-operations/job-description-structure$0.03 USDC

Structure a job description

Read Title, Requirement, and Responsibility lines into explicit requirements. Unlabeled prose is not turned into a requirement, and a requirement counts toward a score only when it is marked required.

Body

FieldRequiredNotes
titleNostring
jobTextNostring
requirementsNoarray; Array

Request exampleJSON

{
  "jobText": "Title: Backend Engineer\nRequirement: R1 | skill | TypeScript | required | 3\nRequirement: R2 | skill | JavaScript | required\nRequirement: R3 | qualification | Bachelor of Science | required\nResponsibility: Design HTTP APIs\nThe team likes collaborative people.\nGender: withheld\n"
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T10:00:00.000Z",
  "hiringDecision": false,
  "qualificationsInvented": false,
  "status": "structured",
  "title": "Backend Engineer",
  "requirementCount": 4,
  "requirements": [
    {
      "id": "R1",
      "kind": "skill",
      "name": "TypeScript",
      "minimumYears": 3,
      "yearsSpecified": true,
      "strength": "required",
      "source": "labeled_line"
    },
    {
      "id": "R2",
      "kind": "skill",
      "name": "JavaScript",
      "minimumYears": 0,
      "yearsSpecified": false,
      "strength": "required",
      "source": "labeled_line"
    },
    {
      "id": "R3",
      "kind": "qualification",
      "name": "Bachelor of Science",
      "minimumYears": 0,
      "yearsSpecified": false,
      "strength": "required",
      "source": "labeled_line"
    },
    {
      "id": "requirement:4",
      "kind": "responsibility",
      "name": "Design HTTP APIs",
      "minimumYears": 0,
      "yearsSpecified": false,
      "strength": "preferred",
      "source": "labeled_line"
    }
  ],
  "issues": [
    {
      "kind": "ignored",
      "code": "ignored_sensitive",
      "candidateRef": "",
      "field": "jobText",
      "detail": "A personal-attribute line was ignored and was not used."
    },
    {
      "kind": "ignored",
      "code": "unlabeled_ignored",
      "candidateRef": "",
      "field": "jobText",
      "detail": "Unlabeled job prose was not turned into requirements."
    }
  ],
  "limitations": [
    "No hiring decision is made. A person decides.",
    "Skills, employment history, qualifications, and references are not invented.",
    "Protected personal attributes are ignored and are not used for matching or ranking.",
    "A match is marked inferred only when a caller-supplied alias links two names.",
    "Date gaps are reported from supplied dates and are not ranking penalties."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/recruitment-operations/job-description-structure" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "jobText": "Title: Backend Engineer\nRequirement: R1 | skill | TypeScript | required | 3\nRequirement: R2 | skill | JavaScript | required\nRequirement: R3 | qualification | Bachelor of Science | required\nResponsibility: Design HTTP APIs\nThe team likes collaborative people.\nGender: withheld\n"
}
JSON
POSThttps://brainiac.software/api/v1/recruitment-operations/resume-data-extract$0.04 USDC

Extract resume data

Read Skill, Role, and Qualification lines. Personal-attribute lines and references are ignored and are not stored.

Body

FieldRequiredNotes
idNostring
nameNostring
textNostring
skillsNoarray; Array
rolesNoarray; Array
qualificationsNoarray; Array

Request exampleJSON

{
  "id": "ada",
  "text": "Name: Ada\nSkill: TypeScript | 4\nSkill: JS | 2\nRole: Backend Engineer | Analytical Engines | 2020-01 | 2023-01 | Built HTTP APIs\nQualification: Bachelor of Science | 2018\nReference: Alex Example\nGender: withheld\n"
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T10:00:00.000Z",
  "hiringDecision": false,
  "qualificationsInvented": false,
  "status": "extracted",
  "candidateRef": "ada",
  "skills": [
    {
      "name": "TypeScript",
      "years": 4,
      "yearsSpecified": true,
      "source": "labeled_line",
      "conflict": false
    },
    {
      "name": "JS",
      "years": 2,
      "yearsSpecified": true,
      "source": "labeled_line",
      "conflict": false
    }
  ],
  "roles": [
    {
      "title": "Backend Engineer",
      "employer": "Analytical Engines",
      "start": "2020-01",
      "end": "2023-01",
      "open": false,
      "text": "Built HTTP APIs",
      "months": 36,
      "monthsKnown": true,
      "status": "ok"
    }
  ],
  "qualifications": [
    {
      "name": "Bachelor of Science",
      "year": 2018,
      "yearSpecified": true,
      "source": "labeled_line"
    }
  ],
  "issues": [
    {
      "kind": "ignored",
      "code": "reference_ignored",
      "candidateRef": "ada",
      "field": "text",
      "detail": "A reference line was not stored and was not treated as a qualification."
    },
    {
      "kind": "ignored",
      "code": "ignored_sensitive",
      "candidateRef": "ada",
      "field": "text",
      "detail": "A personal-attribute line was ignored and was not used for matching or ranking."
    }
  ],
  "limitations": [
    "No hiring decision is made. A person decides.",
    "Skills, employment history, qualifications, and references are not invented.",
    "Protected personal attributes are ignored and are not used for matching or ranking.",
    "A match is marked inferred only when a caller-supplied alias links two names.",
    "Date gaps are reported from supplied dates and are not ranking penalties."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/recruitment-operations/resume-data-extract" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "id": "ada",
  "text": "Name: Ada\nSkill: TypeScript | 4\nSkill: JS | 2\nRole: Backend Engineer | Analytical Engines | 2020-01 | 2023-01 | Built HTTP APIs\nQualification: Bachelor of Science | 2018\nReference: Alex Example\nGender: withheld\n"
}
JSON
POSThttps://brainiac.software/api/v1/recruitment-operations/resume-job-match$0.05 USDC

Match a resume to a job

Compare supplied skills, qualifications, and role dates with explicit required items. A caller alias is marked inferred. A responsibility is not marked met.

Body

FieldRequiredNotes
titleNostring
jobTextNostring
requirementsNoarray; Array
candidateYesobject; Object
aliasesNoarray; Array

Request exampleJSON

{
  "jobText": "Title: Backend Engineer\nRequirement: R1 | skill | TypeScript | required | 3\nRequirement: R2 | skill | JavaScript | required\nRequirement: R3 | qualification | Bachelor of Science | required\nResponsibility: Design HTTP APIs\n",
  "candidate": {
    "id": "ada",
    "text": "Skill: TypeScript | 4\nSkill: JS | 2\nRole: Backend Engineer | Analytical Engines | 2020-01 | 2023-01 | Built HTTP APIs\nQualification: Bachelor of Science | 2018\n"
  },
  "aliases": [
    {
      "requirement": "JavaScript",
      "candidate": "JS"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T10:00:00.000Z",
  "hiringDecision": false,
  "qualificationsInvented": false,
  "status": "matched",
  "title": "Backend Engineer",
  "candidateRef": "ada",
  "score": 5,
  "matches": [
    {
      "candidateRef": "ada",
      "requirementId": "R1",
      "kind": "skill",
      "name": "TypeScript",
      "strength": "required",
      "status": "met",
      "inferred": false,
      "points": 2,
      "detail": "The skill matches and the supplied 4 years meet 3."
    },
    {
      "candidateRef": "ada",
      "requirementId": "R2",
      "kind": "skill",
      "name": "JavaScript",
      "strength": "required",
      "status": "inferred",
      "inferred": true,
      "points": 1,
      "detail": "The caller alias maps JS to JavaScript. The resume does not contain JavaScript."
    },
    {
      "candidateRef": "ada",
      "requirementId": "R3",
      "kind": "qualification",
      "name": "Bachelor of Science",
      "strength": "required",
      "status": "met",
      "inferred": false,
      "points": 2,
      "detail": "The qualification name matches the supplied resume. No broader credential was assumed."
    },
    {
      "candidateRef": "ada",
      "requirementId": "requirement:4",
      "kind": "responsibility",
      "name": "Design HTTP APIs",
      "strength": "preferred",
      "status": "not_checked",
      "inferred": false,
      "points": 0,
      "detail": "A responsibility is a prompt for a person. It was not marked met from the resume."
    }
  ],
  "issues": [],
  "limitations": [
    "No hiring decision is made. A person decides.",
    "Skills, employment history, qualifications, and references are not invented.",
    "Protected personal attributes are ignored and are not used for matching or ranking.",
    "A match is marked inferred only when a caller-supplied alias links two names.",
    "Date gaps are reported from supplied dates and are not ranking penalties."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/recruitment-operations/resume-job-match" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "jobText": "Title: Backend Engineer\nRequirement: R1 | skill | TypeScript | required | 3\nRequirement: R2 | skill | JavaScript | required\nRequirement: R3 | qualification | Bachelor of Science | required\nResponsibility: Design HTTP APIs\n",
  "candidate": {
    "id": "ada",
    "text": "Skill: TypeScript | 4\nSkill: JS | 2\nRole: Backend Engineer | Analytical Engines | 2020-01 | 2023-01 | Built HTTP APIs\nQualification: Bachelor of Science | 2018\n"
  },
  "aliases": [
    {
      "requirement": "JavaScript",
      "candidate": "JS"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/recruitment-operations/candidate-skill-compare$0.04 USDC

Compare candidate skills

Compare supplied skill names across candidates and against an explicit skill list. Missing skills are not invented.

Body

FieldRequiredNotes
skillNamesNoarray; Array
candidatesYesarray; Array

Request exampleJSON

{
  "skillNames": [
    "TypeScript",
    "JavaScript"
  ],
  "candidates": [
    {
      "id": "ada",
      "skills": [
        {
          "name": "TypeScript",
          "years": 4
        },
        {
          "name": "JS",
          "years": 2
        }
      ]
    },
    {
      "id": "grace",
      "skills": [
        {
          "name": "Python",
          "years": 6
        }
      ]
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T10:00:00.000Z",
  "hiringDecision": false,
  "qualificationsInvented": false,
  "status": "compared",
  "skillNames": [
    "TypeScript",
    "JavaScript"
  ],
  "candidates": [
    {
      "candidateRef": "ada",
      "skills": [
        {
          "name": "TypeScript",
          "years": 4,
          "yearsSpecified": true,
          "source": "field",
          "conflict": false
        },
        {
          "name": "JS",
          "years": 2,
          "yearsSpecified": true,
          "source": "field",
          "conflict": false
        }
      ],
      "matched": [
        {
          "candidateRef": "ada",
          "name": "TypeScript",
          "status": "met",
          "inferred": false,
          "years": 4,
          "yearsSpecified": true,
          "detail": "The skill name matches the supplied resume."
        },
        {
          "candidateRef": "ada",
          "name": "JavaScript",
          "status": "missing",
          "inferred": false,
          "years": 0,
          "yearsSpecified": false,
          "detail": "The skill was not in the supplied resume. One was not invented."
        }
      ]
    },
    {
      "candidateRef": "grace",
      "skills": [
        {
          "name": "Python",
          "years": 6,
          "yearsSpecified": true,
          "source": "field",
          "conflict": false
        }
      ],
      "matched": [
        {
          "candidateRef": "grace",
          "name": "TypeScript",
          "status": "missing",
          "inferred": false,
          "years": 0,
          "yearsSpecified": false,
          "detail": "The skill was not in the supplied resume. One was not invented."
        },
        {
          "candidateRef": "grace",
          "name": "JavaScript",
          "status": "missing",
          "inferred": false,
          "years": 0,
          "yearsSpecified": false,
          "detail": "The skill was not in the supplied resume. One was not invented."
        }
      ]
    }
  ],
  "overlap": [],
  "issues": [],
  "limitations": [
    "No hiring decision is made. A person decides.",
    "Skills, employment history, qualifications, and references are not invented.",
    "Protected personal attributes are ignored and are not used for matching or ranking.",
    "A match is marked inferred only when a caller-supplied alias links two names.",
    "Date gaps are reported from supplied dates and are not ranking penalties."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/recruitment-operations/candidate-skill-compare" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "skillNames": [
    "TypeScript",
    "JavaScript"
  ],
  "candidates": [
    {
      "id": "ada",
      "skills": [
        {
          "name": "TypeScript",
          "years": 4
        },
        {
          "name": "JS",
          "years": 2
        }
      ]
    },
    {
      "id": "grace",
      "skills": [
        {
          "name": "Python",
          "years": 6
        }
      ]
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/recruitment-operations/candidate-experience-validate$0.03 USDC

Validate candidate experience

Check supplied employment dates for invalid dates, overlaps, and gaps. Dates are not rewritten, and a gap is not a ranking penalty.

Body

FieldRequiredNotes
candidatesYesarray; Array

Request exampleJSON

{
  "candidates": [
    {
      "id": "ada",
      "roles": [
        {
          "title": "Engineer",
          "employer": "Northwind",
          "start": "2020-01",
          "end": "2022-01"
        },
        {
          "title": "Consultant",
          "employer": "Northwind",
          "start": "2021-06",
          "end": "2022-06"
        },
        {
          "title": "Analyst",
          "employer": "Engines",
          "start": "2023-01",
          "end": "2022-01"
        },
        {
          "title": "Advisor",
          "employer": "Contoso",
          "start": "2024-01",
          "end": "2024-06"
        }
      ]
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T10:00:00.000Z",
  "hiringDecision": false,
  "qualificationsInvented": false,
  "status": "checked",
  "roles": [
    {
      "candidateRef": "ada",
      "title": "Engineer",
      "employer": "Northwind",
      "start": "2020-01",
      "end": "2022-01",
      "open": false,
      "text": "",
      "months": 24,
      "monthsKnown": true,
      "status": "ok"
    },
    {
      "candidateRef": "ada",
      "title": "Consultant",
      "employer": "Northwind",
      "start": "2021-06",
      "end": "2022-06",
      "open": false,
      "text": "",
      "months": 12,
      "monthsKnown": true,
      "status": "ok"
    },
    {
      "candidateRef": "ada",
      "title": "Analyst",
      "employer": "Engines",
      "start": "2023-01",
      "end": "2022-01",
      "open": false,
      "text": "",
      "months": 0,
      "monthsKnown": false,
      "status": "conflict"
    },
    {
      "candidateRef": "ada",
      "title": "Advisor",
      "employer": "Contoso",
      "start": "2024-01",
      "end": "2024-06",
      "open": false,
      "text": "",
      "months": 5,
      "monthsKnown": true,
      "status": "ok"
    }
  ],
  "overlaps": [
    {
      "candidateRef": "ada",
      "first": "Engineer",
      "second": "Consultant",
      "detail": "These supplied date ranges overlap. The overlap is not a ranking penalty."
    }
  ],
  "gaps": [
    {
      "candidateRef": "ada",
      "after": "Consultant",
      "before": "Advisor",
      "months": 19,
      "detail": "The supplied dates leave a gap. The gap is not used in ranking."
    }
  ],
  "issues": [
    {
      "kind": "conflict",
      "code": "end_before_start",
      "candidateRef": "ada",
      "field": "Analyst",
      "detail": "The end date is before the start date. The dates were not rewritten."
    },
    {
      "kind": "conflict",
      "code": "conflict",
      "candidateRef": "ada",
      "field": "Analyst",
      "detail": "This role needs a person to review the supplied title, employer, or dates."
    }
  ],
  "limitations": [
    "No hiring decision is made. A person decides.",
    "Skills, employment history, qualifications, and references are not invented.",
    "Protected personal attributes are ignored and are not used for matching or ranking.",
    "A match is marked inferred only when a caller-supplied alias links two names.",
    "Date gaps are reported from supplied dates and are not ranking penalties."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/recruitment-operations/candidate-experience-validate" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "candidates": [
    {
      "id": "ada",
      "roles": [
        {
          "title": "Engineer",
          "employer": "Northwind",
          "start": "2020-01",
          "end": "2022-01"
        },
        {
          "title": "Consultant",
          "employer": "Northwind",
          "start": "2021-06",
          "end": "2022-06"
        },
        {
          "title": "Analyst",
          "employer": "Engines",
          "start": "2023-01",
          "end": "2022-01"
        },
        {
          "title": "Advisor",
          "employer": "Contoso",
          "start": "2024-01",
          "end": "2024-06"
        }
      ]
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/recruitment-operations/interview-question-generate$0.04 USDC

Draft interview questions

Draft questions from missing required items, inferred alias matches, and job responsibilities. The questions do not score the candidate.

Body

FieldRequiredNotes
titleNostring
jobTextNostring
requirementsNoarray; Array
candidateYesobject; Object
aliasesNoarray; Array

Request exampleJSON

{
  "jobText": "Title: Backend Engineer\nRequirement: R1 | skill | TypeScript | required | 3\nRequirement: R2 | skill | JavaScript | required\nResponsibility: Design HTTP APIs\n",
  "candidate": {
    "id": "grace",
    "text": "Skill: Python | 6\n"
  },
  "aliases": [
    {
      "requirement": "JavaScript",
      "candidate": "JS"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T10:00:00.000Z",
  "hiringDecision": false,
  "qualificationsInvented": false,
  "status": "drafted",
  "candidateRef": "grace",
  "questions": [
    {
      "candidateRef": "grace",
      "requirementId": "R1",
      "basedOn": "missing_requirement",
      "text": "Ask about TypeScript. The supplied resume does not show that this required item is met. Do not treat a missing item as held."
    },
    {
      "candidateRef": "grace",
      "requirementId": "R2",
      "basedOn": "missing_requirement",
      "text": "Ask about JavaScript. The supplied resume does not show that this required item is met. Do not treat a missing item as held."
    },
    {
      "candidateRef": "grace",
      "requirementId": "requirement:3",
      "basedOn": "responsibility",
      "text": "Ask the candidate to describe work related to: Design HTTP APIs. This question does not assume the candidate has done it."
    }
  ],
  "issues": [],
  "limitations": [
    "No hiring decision is made. A person decides.",
    "Skills, employment history, qualifications, and references are not invented.",
    "Protected personal attributes are ignored and are not used for matching or ranking.",
    "A match is marked inferred only when a caller-supplied alias links two names.",
    "Date gaps are reported from supplied dates and are not ranking penalties."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/recruitment-operations/interview-question-generate" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "jobText": "Title: Backend Engineer\nRequirement: R1 | skill | TypeScript | required | 3\nRequirement: R2 | skill | JavaScript | required\nResponsibility: Design HTTP APIs\n",
  "candidate": {
    "id": "grace",
    "text": "Skill: Python | 6\n"
  },
  "aliases": [
    {
      "requirement": "JavaScript",
      "candidate": "JS"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/recruitment-operations/candidate-shortlist-rank$0.05 USDC

Rank a candidate shortlist

Score candidates only from explicit required matches. An exact match is worth 2 and a caller alias is worth 1. Ties keep the caller's order.

Body

FieldRequiredNotes
titleNostring
jobTextNostring
requirementsNoarray; Array
candidatesYesarray; Array
aliasesNoarray; Array

Request exampleJSON

{
  "jobText": "Title: Backend Engineer\nRequirement: R1 | skill | TypeScript | required | 3\nRequirement: R2 | skill | JavaScript | required\nRequirement: R3 | qualification | Bachelor of Science | required\n",
  "aliases": [
    {
      "requirement": "JavaScript",
      "candidate": "JS"
    }
  ],
  "candidates": [
    {
      "id": "ada",
      "text": "Skill: TypeScript | 4\nSkill: JS | 2\nQualification: Bachelor of Science | 2018\n"
    },
    {
      "id": "grace",
      "text": "Skill: Python | 6\nRole: Analyst | Engines | 2023-01 | 2022-01 | Reports\n"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T10:00:00.000Z",
  "hiringDecision": false,
  "qualificationsInvented": false,
  "status": "ranked",
  "title": "Backend Engineer",
  "candidates": [
    {
      "candidateRef": "ada",
      "score": 5,
      "rank": 1,
      "tie": false
    },
    {
      "candidateRef": "grace",
      "score": 0,
      "rank": 2,
      "tie": false
    }
  ],
  "factors": [
    {
      "candidateRef": "ada",
      "requirementId": "R1",
      "name": "TypeScript",
      "points": 2,
      "inferred": false,
      "detail": "The skill matches and the supplied 4 years meet 3."
    },
    {
      "candidateRef": "ada",
      "requirementId": "R2",
      "name": "JavaScript",
      "points": 1,
      "inferred": true,
      "detail": "The caller alias maps JS to JavaScript. The resume does not contain JavaScript."
    },
    {
      "candidateRef": "ada",
      "requirementId": "R3",
      "name": "Bachelor of Science",
      "points": 2,
      "inferred": false,
      "detail": "The qualification name matches the supplied resume. No broader credential was assumed."
    },
    {
      "candidateRef": "grace",
      "requirementId": "R1",
      "name": "TypeScript",
      "points": 0,
      "inferred": false,
      "detail": "The skill was not in the supplied resume and no caller alias matched."
    },
    {
      "candidateRef": "grace",
      "requirementId": "R2",
      "name": "JavaScript",
      "points": 0,
      "inferred": false,
      "detail": "The skill was not in the supplied resume and no caller alias matched."
    },
    {
      "candidateRef": "grace",
      "requirementId": "R3",
      "name": "Bachelor of Science",
      "points": 0,
      "inferred": false,
      "detail": "The qualification was not in the supplied resume. One was not invented."
    }
  ],
  "issues": [
    {
      "kind": "conflict",
      "code": "end_before_start",
      "candidateRef": "grace",
      "field": "Analyst",
      "detail": "The end date is before the start date. The dates were not rewritten."
    },
    {
      "kind": "ignored",
      "code": "tie_order",
      "candidateRef": "",
      "field": "rank",
      "detail": "Tied scores keep the caller's order. Name and personal attributes are not used to break a tie."
    }
  ],
  "limitations": [
    "No hiring decision is made. A person decides.",
    "Skills, employment history, qualifications, and references are not invented.",
    "Protected personal attributes are ignored and are not used for matching or ranking.",
    "A match is marked inferred only when a caller-supplied alias links two names.",
    "Date gaps are reported from supplied dates and are not ranking penalties."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/recruitment-operations/candidate-shortlist-rank" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "jobText": "Title: Backend Engineer\nRequirement: R1 | skill | TypeScript | required | 3\nRequirement: R2 | skill | JavaScript | required\nRequirement: R3 | qualification | Bachelor of Science | required\n",
  "aliases": [
    {
      "requirement": "JavaScript",
      "candidate": "JS"
    }
  ],
  "candidates": [
    {
      "id": "ada",
      "text": "Skill: TypeScript | 4\nSkill: JS | 2\nQualification: Bachelor of Science | 2018\n"
    },
    {
      "id": "grace",
      "text": "Skill: Python | 6\nRole: Analyst | Engines | 2023-01 | 2022-01 | Reports\n"
    }
  ]
}
JSON
POSThttps://brainiac.software/api/v1/recruitment-operations/pipeline-report$0.12 USDC

Report a recruitment pipeline

Combine the job requirements, resume facts, match explanations, experience checks, interview prompts, and shortlist scores. The report is not a hiring decision.

Body

FieldRequiredNotes
titleNostring
jobTextNostring
requirementsNoarray; Array
candidatesYesarray; Array
aliasesNoarray; Array

Request exampleJSON

{
  "jobText": "Title: Backend Engineer\nRequirement: R1 | skill | TypeScript | required | 3\nRequirement: R2 | skill | JavaScript | required\nRequirement: R3 | qualification | Bachelor of Science | required\nResponsibility: Design HTTP APIs\n",
  "aliases": [
    {
      "requirement": "JavaScript",
      "candidate": "JS"
    }
  ],
  "candidates": [
    {
      "id": "ada",
      "text": "Skill: TypeScript | 4\nSkill: JS | 2\nRole: Backend Engineer | Analytical Engines | 2020-01 | 2023-01 | Built HTTP APIs\nQualification: Bachelor of Science | 2018\n"
    },
    {
      "id": "grace",
      "text": "Skill: Python | 6\nRole: Analyst | Engines | 2023-01 | 2022-01 | Reports\n"
    }
  ]
}

Response exampleJSON

{
  "checkedAt": "2026-11-03T10:00:00.000Z",
  "hiringDecision": false,
  "qualificationsInvented": false,
  "status": "needs_review",
  "title": "Backend Engineer",
  "requirementCount": 4,
  "candidates": [
    {
      "candidateRef": "ada",
      "score": 5,
      "rank": 1,
      "met": 2,
      "inferred": 1,
      "missing": 0
    },
    {
      "candidateRef": "grace",
      "score": 0,
      "rank": 2,
      "met": 0,
      "inferred": 0,
      "missing": 3
    }
  ],
  "matches": [
    {
      "candidateRef": "ada",
      "requirementId": "R1",
      "kind": "skill",
      "name": "TypeScript",
      "strength": "required",
      "status": "met",
      "inferred": false,
      "points": 2,
      "detail": "The skill matches and the supplied 4 years meet 3."
    },
    {
      "candidateRef": "ada",
      "requirementId": "R2",
      "kind": "skill",
      "name": "JavaScript",
      "strength": "required",
      "status": "inferred",
      "inferred": true,
      "points": 1,
      "detail": "The caller alias maps JS to JavaScript. The resume does not contain JavaScript."
    },
    {
      "candidateRef": "ada",
      "requirementId": "R3",
      "kind": "qualification",
      "name": "Bachelor of Science",
      "strength": "required",
      "status": "met",
      "inferred": false,
      "points": 2,
      "detail": "The qualification name matches the supplied resume. No broader credential was assumed."
    },
    {
      "candidateRef": "ada",
      "requirementId": "requirement:4",
      "kind": "responsibility",
      "name": "Design HTTP APIs",
      "strength": "preferred",
      "status": "not_checked",
      "inferred": false,
      "points": 0,
      "detail": "A responsibility is a prompt for a person. It was not marked met from the resume."
    },
    {
      "candidateRef": "grace",
      "requirementId": "R1",
      "kind": "skill",
      "name": "TypeScript",
      "strength": "required",
      "status": "missing",
      "inferred": false,
      "points": 0,
      "detail": "The skill was not in the supplied resume and no caller alias matched."
    },
    {
      "candidateRef": "grace",
      "requirementId": "R2",
      "kind": "skill",
      "name": "JavaScript",
      "strength": "required",
      "status": "missing",
      "inferred": false,
      "points": 0,
      "detail": "The skill was not in the supplied resume and no caller alias matched."
    },
    {
      "candidateRef": "grace",
      "requirementId": "R3",
      "kind": "qualification",
      "name": "Bachelor of Science",
      "strength": "required",
      "status": "missing",
      "inferred": false,
      "points": 0,
      "detail": "The qualification was not in the supplied resume. One was not invented."
    },
    {
      "candidateRef": "grace",
      "requirementId": "requirement:4",
      "kind": "responsibility",
      "name": "Design HTTP APIs",
      "strength": "preferred",
      "status": "not_checked",
      "inferred": false,
      "points": 0,
      "detail": "A responsibility is a prompt for a person. It was not marked met from the resume."
    }
  ],
  "factors": [
    {
      "candidateRef": "ada",
      "requirementId": "R1",
      "name": "TypeScript",
      "points": 2,
      "inferred": false,
      "detail": "The skill matches and the supplied 4 years meet 3."
    },
    {
      "candidateRef": "ada",
      "requirementId": "R2",
      "name": "JavaScript",
      "points": 1,
      "inferred": true,
      "detail": "The caller alias maps JS to JavaScript. The resume does not contain JavaScript."
    },
    {
      "candidateRef": "ada",
      "requirementId": "R3",
      "name": "Bachelor of Science",
      "points": 2,
      "inferred": false,
      "detail": "The qualification name matches the supplied resume. No broader credential was assumed."
    },
    {
      "candidateRef": "ada",
      "requirementId": "requirement:4",
      "name": "Design HTTP APIs",
      "points": 0,
      "inferred": false,
      "detail": "A responsibility is a prompt for a person. It was not marked met from the resume."
    },
    {
      "candidateRef": "grace",
      "requirementId": "R1",
      "name": "TypeScript",
      "points": 0,
      "inferred": false,
      "detail": "The skill was not in the supplied resume and no caller alias matched."
    },
    {
      "candidateRef": "grace",
      "requirementId": "R2",
      "name": "JavaScript",
      "points": 0,
      "inferred": false,
      "detail": "The skill was not in the supplied resume and no caller alias matched."
    },
    {
      "candidateRef": "grace",
      "requirementId": "R3",
      "name": "Bachelor of Science",
      "points": 0,
      "inferred": false,
      "detail": "The qualification was not in the supplied resume. One was not invented."
    },
    {
      "candidateRef": "grace",
      "requirementId": "requirement:4",
      "name": "Design HTTP APIs",
      "points": 0,
      "inferred": false,
      "detail": "A responsibility is a prompt for a person. It was not marked met from the resume."
    }
  ],
  "questions": [
    {
      "candidateRef": "ada",
      "requirementId": "R2",
      "basedOn": "inferred_match",
      "text": "Ask the candidate to confirm JavaScript. The match uses a caller-supplied alias and is not a direct resume fact."
    },
    {
      "candidateRef": "ada",
      "requirementId": "requirement:4",
      "basedOn": "responsibility",
      "text": "Ask the candidate to describe work related to: Design HTTP APIs. This question does not assume the candidate has done it."
    },
    {
      "candidateRef": "grace",
      "requirementId": "R1",
      "basedOn": "missing_requirement",
      "text": "Ask about TypeScript. The supplied resume does not show that this required item is met. Do not treat a missing item as held."
    },
    {
      "candidateRef": "grace",
      "requirementId": "R2",
      "basedOn": "missing_requirement",
      "text": "Ask about JavaScript. The supplied resume does not show that this required item is met. Do not treat a missing item as held."
    },
    {
      "candidateRef": "grace",
      "requirementId": "R3",
      "basedOn": "missing_requirement",
      "text": "Ask about Bachelor of Science. The supplied resume does not show that this required item is met. Do not treat a missing item as held."
    },
    {
      "candidateRef": "grace",
      "requirementId": "requirement:4",
      "basedOn": "responsibility",
      "text": "Ask the candidate to describe work related to: Design HTTP APIs. This question does not assume the candidate has done it."
    }
  ],
  "overlaps": [],
  "gaps": [],
  "issues": [
    {
      "kind": "conflict",
      "code": "end_before_start",
      "candidateRef": "grace",
      "field": "Analyst",
      "detail": "The end date is before the start date. The dates were not rewritten."
    },
    {
      "kind": "conflict",
      "code": "conflict",
      "candidateRef": "grace",
      "field": "Analyst",
      "detail": "This role needs a person to review the supplied title, employer, or dates."
    },
    {
      "kind": "ignored",
      "code": "human_decision",
      "candidateRef": "",
      "field": "decision",
      "detail": "This report organizes supplied facts. It does not hire, reject, or rank anyone by a personal attribute."
    }
  ],
  "limitations": [
    "No hiring decision is made. A person decides.",
    "Skills, employment history, qualifications, and references are not invented.",
    "Protected personal attributes are ignored and are not used for matching or ranking.",
    "A match is marked inferred only when a caller-supplied alias links two names.",
    "Date gaps are reported from supplied dates and are not ranking penalties."
  ]
}

cURL

curl -i -X POST "https://brainiac.software/api/v1/recruitment-operations/pipeline-report" \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: <fresh-64-character-random-hex-key>' \
  --data-binary @- <<'JSON'
{
  "jobText": "Title: Backend Engineer\nRequirement: R1 | skill | TypeScript | required | 3\nRequirement: R2 | skill | JavaScript | required\nRequirement: R3 | qualification | Bachelor of Science | required\nResponsibility: Design HTTP APIs\n",
  "aliases": [
    {
      "requirement": "JavaScript",
      "candidate": "JS"
    }
  ],
  "candidates": [
    {
      "id": "ada",
      "text": "Skill: TypeScript | 4\nSkill: JS | 2\nRole: Backend Engineer | Analytical Engines | 2020-01 | 2023-01 | Built HTTP APIs\nQualification: Bachelor of Science | 2018\n"
    },
    {
      "id": "grace",
      "text": "Skill: Python | 6\nRole: Analyst | Engines | 2023-01 | 2022-01 | Reports\n"
    }
  ]
}
JSON