Job Matching
The matching engine scores professionals against open jobs automatically. Matches are generated when a new job is created or when you trigger a match run manually.
How matching works
- A job is created with required skills, experience level, and location
- The AI engine scores all relevant professionals in the database
- Top matches are returned with a scored fit assessment
- Recruiters review, shortlist, and add candidates to the application pipeline
Create a job
POST /v1/jobs
Authorization: Bearer <token>
Content-Type: application/json
{
"title": "Senior Backend Engineer",
"companyId": "company_01abc...",
"skills": ["Node.js", "TypeScript"],
"location": "Remote",
"experienceYears": 5,
"description": "..."
}AI-generated fields can help populate job details:
POST /v1/jobs/generate-fields
Authorization: Bearer <token>
Content-Type: application/json
{ "title": "Senior Backend Engineer", "description": "..." }Trigger a match run
POST /v1/jobs/:id/match
Authorization: Bearer <token>Get matches for a job
GET /v1/jobs/:id/best-matches
Authorization: Bearer <token>Set minimum scores
Configure score thresholds to filter match quality:
PATCH /v1/jobs/:id/min-scores
Authorization: Bearer <token>
Content-Type: application/json
{ "minScore": 0.7 }Generate perfect fit analysis
POST /v1/jobs/:id/perfect-fit
Authorization: Bearer <token>Job rubrics
Scoring rubrics define evaluation criteria for candidates:
POST /v1/job-rubrics/generate
Authorization: Bearer <token>
Content-Type: application/json
{ "jobId": "job_01abc..." }Manage rubrics:
GET /v1/job-rubrics/user
POST /v1/job-rubrics/user
PUT /v1/job-rubrics/user/:id
DELETE /v1/job-rubrics/user/:id
GET /v1/job-rubrics/job/:id
PUT /v1/job-rubrics/:id/selectAdd a match to pipeline
Once you identify a good match, create an application:
POST /v1/applications
Authorization: Bearer <token>
Content-Type: application/json
{
"candidateId": "prof_01abc...",
"jobId": "job_01abc..."
}ATS pipeline management
Move applicants through pipeline stages:
PATCH /v1/jobs/:id/applicants/:candidateUserId
Authorization: Bearer <token>
Content-Type: application/json
{ "stage": "interview" }Customize the ATS kanban board:
POST /v1/jobs/:id/ats-kanban-custom-column
PATCH /v1/jobs/:id/ats-kanban-column-orderInterview question templates
Create and manage reusable interview question sets:
GET /v1/jobs/interview-question-templates
POST /v1/jobs/interview-question-templates
POST /v1/jobs/interview-question-templates/generate
GET /v1/jobs/interview-question-templates/:templateId
PATCH /v1/jobs/interview-question-templates/:templateId
DELETE /v1/jobs/interview-question-templates/:templateIdScreening and video interviews
POST /v1/jobs/:id/screening-answers
POST /v1/jobs/:id/video-interviews
GET /v1/jobs/:jobId/interviews/:candidateId
GET /v1/jobs/:jobId/interview-responsesLast updated on