JazzHR automation · runs daily
Advance JazzHR applicants by your screening rules
New applicants pile up in the first stage overnight, and someone reads each resume and questionnaire answer before dragging the good ones forward.
Cotlet does it in your own JazzHR account with list_candidates, get_candidate, change_candidate_status and add_candidate_note, called by your AI agent, an n8n workflow or a script.
Hosted · nothing to install or maintain
Can JazzHR do this on its own?
The JazzHR REST API can list applicants of a job and read their questionnaire answers, and it can add a note (checked 20 Oct 2026). It has no call to move an applicant to another workflow stage, so the decision part stays manual.
How you do it in JazzHR today
- A recruiter opens the job from Jobs and selects the workflow stage to see its candidates, then opens each candidate profile to read the resume and answers.
- To move one candidate, the recruiter uses the status controls in the profile; to move many, Bulk Actions with Change Status set to Yes.
- Moving a candidate into a stage can fire that stage's workflow helpers, which JazzHR sets up under Settings > Workflows, such as an email or a task.
- The reason for each decision lives in the recruiter's head unless they type it in as a note, and notes in JazzHR are tied to one job.
How to advance JazzHR applicants by your screening rules
Go through new applicants for Senior Support Agent. Move anyone with 3+ years of support experience and a US work authorization answer to Phone Screen, and leave a note with the reason. Leave the rest for me. - 01
Read the new stage
list_candidates runs with the job and the first workflow stage, following the cursor, and keeps only applicants added since the last run so a daily job does not re-judge the same people.
- 02
Open the profile
get_candidate returns the questionnaire answers, source and rating for each applicant. The agent matches them against your rule and quotes the answer it used, so you can see why someone passed.
- 03
Split into three groups
Clear matches go forward, clear mismatches stay where they are for you to reject, and anything unclear is listed with a reason. The agent never rejects on its own in this job.
- 04
Move and explain
change_candidate_status moves each match to the stage you named, and add_candidate_note writes the one-line reason on the same candidate. The move asks for your OK by default, since a stage can send an email through its workflow helpers.
- 05
Stop on a changed profile
Before moving, the agent reads the candidate again. If a colleague already moved them, it logs that and leaves the candidate alone.
What you get back
New applicants since yesterday: 18
Moved to Phone Screen: 6 (e.g. Dana Whitfield: 5 years in support, US authorized)
Left for you: 9
Unclear: 3 (work authorization answer blank)
Notes added: 6 Other ways to ask
- Every morning at 8, do this for all Open jobs in the Support department.
- Move candidates rated 4 or higher straight to Interview and tell me who they are.
- Do not move anyone: list the applicants who fit and quote their answers.
What JazzHR allows, and what to know first
- JazzHR candidates move through the workflow stages of the job's workflow, and workflow helpers on a stage can send emails, add tasks or move the candidate on.
- JazzHR notes are job-specific: notes made on one job do not carry over when the candidate is added to another job.
- The JazzHR API lists applicants with filters for job, status, rating and apply date, 100 to a page.
- JazzHR candidates carry a rating, and the API can filter applicants by it.
change_candidate_status and add_candidate_note ask for your OK by default. To run it daily without you, switch confirmation off for those tools in your dashboard.
Sources: JazzHR API reference · JazzHR Help: Performing Bulk Actions · JazzHR Help: Candidate Profile Overview · JazzHR Help: Add and Use Workflow Helpers
Call change_candidate_status from a script
curl -X PATCH https://cotlet.dev/api/v1/jazzhr/jobs/job_20261012_8f3a/candidates/prospect_20261019_5e2c/status \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status":"Phone Screen"}' {
"candidate_id": "prospect_20261019_5e2c",
"job_id": "job_20261012_8f3a",
"previous_stage": "New",
"stage": "Phone Screen"
} MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is jazzhr_write → change_candidate_status. Example data.
Schedule it in n8n, Make, Zapier or cronJazzHR tools this automation uses
| Tool | Parameters |
|---|---|
| list_candidates | job_id, stage, name, applied_since, rating, cursor |
| get_candidate | candidate_id, job_id |
| change_candidate_status | candidate_id, job_id, status |
| add_candidate_note | candidate_id, job_id, text |
Frequently asked questions
Is it safe to connect JazzHR to Cotlet?
Yes. You sign in to JazzHR yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get JazzHR once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.
Give your agent access to JazzHR.
Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with JazzHR.