[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Disqualify stale Recruiterflow candidates with a reason

> Disqualify Recruiterflow candidates who went quiet in an early stage, with your workspace reason and a list of who was removed. Runs weekly.

Source: https://cotlet.dev/integrations/recruiterflow-api-mcp-server/disqualify-stale-candidates

Every open job keeps candidates who stopped answering weeks ago. They still sit in Sourced or Phone Screen, and they inflate the stage counts your clients and your own reports read.

Cotlet does it in your own Recruiterflow account with list\_jobs, get\_job, list\_job\_candidates, list\_activities and disqualify\_candidate, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=recruiterflow) [All Recruiterflow tools](https://cotlet.dev/integrations/recruiterflow-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Recruiterflow do this on its own?

Recruiterflow's help center describes three manual ways to disqualify: the job card, the Kanban board and the bulk action bar (checked 23 Oct 2026). It documents no rule that disqualifies by inactivity. The official MCP is read-only, so it can list who is stuck but cannot disqualify anyone, and the REST API needs a key from Recruiterflow support.

## How you do it in Recruiterflow today

1. Open Jobs in the left navigation, pick the job and switch to Kanban view to see the candidates by stage.
2. Judge who went quiet: the Activity Log tab of a profile lists emails, stage moves and notes with timestamps, but only one candidate at a time.
3. Disqualify one by one with the Disqualify icon on the job card, or drag the card to the Disqualified column. For many, tick the checkboxes and choose Disqualify from the bulk action bar, which applies one reason to everyone selected.
4. Every disqualification needs a reason from the list an admin keeps under Workspace Settings → Disqualification Reasons.
5. Recruiterflow does not tell the candidate. A rejection email goes out only if you send it or a Recipe with the trigger Candidate is disqualified is switched on.

## How to disqualify stale Recruiterflow candidates with a reason

Prompt

```
In my open jobs, find candidates who sat in Sourced or Phone Screen for more than 30 days with no email, call or meeting in that time. Disqualify them with the reason No response and show me who.
```

1. 01  
### Scope the jobs  
list\_jobs with status open returns the jobs you name or all of them. get\_job gives each job's stage names, so the rule runs only on the early stages you choose and never on Offer or Hired.
2. 02  
### Find who has waited  
list\_job\_candidates returns the candidates of one stage with stage\_since, the date they entered it. The agent keeps those past your limit, 30 days in the prompt above.
3. 03  
### Look for signs of life  
list\_activities reads each remaining candidate's Activity Log. Anyone with an email, call or meeting newer than your limit stays, so a candidate who answered yesterday after a long silence is not rejected. If no email shows at all, the agent says so, because email appears in the log only when Google or Outlook is connected under Settings > Permissions.
4. 04  
### Match the reason  
The reason must be one of the names your admins keep. If your prompt names a reason the workspace does not have, the call fails with the list of valid reasons and the agent asks you instead of choosing one.
5. 05  
### Disqualify and report  
disqualify\_candidate runs once per candidate and waits for your OK by default. The agent ends with the list of who was disqualified from which stage, and who stayed because of recent activity.

### What you get back

Example data

```
Open jobs checked: 4
Disqualified 6 with reason No response, e.g. Priya Nair (Phone Screen since 2 Sep)
Kept 3 with an email in the last 30 days
No email visible for 2 candidates (check Settings > Permissions)
```

### Other ways to ask

- Every Friday, disqualify candidates in Sourced for more than 21 days and list them by recruiter.
- Show me who would be disqualified in the Senior Backend Engineer job, but change nothing.
- Disqualify everyone in a closed job who is still in an early stage with the reason Client passed.

## What Recruiterflow allows, and what to know first

- Disqualification reasons are workspace-wide and only admins manage them, under Workspace Settings → Disqualification Reasons. Examples in the help center are Not enough experience, Compensation mismatch and Client passed.
- Disqualifying a candidate affects only that job. The candidate stays in the database and on every other job.
- Re-qualify on the candidate's job card returns them to the stage they were in before.
- A Recipe with the trigger Candidate is disqualified can email the candidate, filtered by Source Stage and Disqualification Reasons. It applies only to disqualifications made after it was switched on, and nothing is sent when the candidate has no email on file.
- Recruiterflow records stage moves, with who made them and when, in the candidate's activity timeline.

disqualify\_candidate asks for your OK by default. To run it weekly without you, switch confirmation off for that tool in your dashboard.

Sources: [Recruiterflow Help: How to disqualify a candidate from a job](https://help.recruiterflow.com/en/articles/3754022-how-to-disqualify-a-candidate-from-a-job) · [Recruiterflow Help: Send disqualification email to candidates automatically](https://help.recruiterflow.com/en/articles/2436422-send-disqualification-email-to-candidates-automatically) · [Recruiterflow Help: Viewing and logging candidate activity](https://help.recruiterflow.com/en/articles/1241394-viewing-and-logging-candidate-activity-in-recruiterflow)

## Call disqualify\_candidate from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/recruiterflow/jobs/48213/candidates/771204/disqualify \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason":"No response"}'
```

Example response

```
{
"candidate_id": "771204",
"job_id": "48213",
"status": "disqualified",
"reason": "No response",
"previous_stage": "Phone Screen",
"disqualified_at": "2026-10-23T09:02:00Z"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is recruiterflow\_write → disqualify\_candidate. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/recruiterflow-api-mcp-server.md#automations)

## Recruiterflow tools this automation uses

__Cotlet Recruiterflow tools used to disqualify stale Recruiterflow candidates with a reason__
| Tool | Parameters |
| --------------------- | ---------------------------------------- |
| list\_jobs | status, visibility, query, limit, cursor |
| get\_job | job\_id |
| list\_job\_candidates | job\_id, stage, status, limit, cursor |
| list\_activities | candidate\_id, type, since, limit |
| disqualify\_candidate | job\_id, candidate\_id, reason |

[All 14 Recruiterflow tools with descriptions](https://cotlet.dev/integrations/recruiterflow-api-mcp-server.md#tools)

## Frequently asked questions

### Will the candidate get an email?

Not from Recruiterflow itself. A rejection goes out only if you email them or an admin has a Recipe on Candidate is disqualified. Check the Recipe's scope before a large run, because All jobs covers every job in the workspace.

### Is it safe to connect Recruiterflow to Cotlet?

Yes. You sign in to Recruiterflow yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Recruiterflow 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.

## More Recruiterflow automations

- [Log Recruiterflow call notes and follow-up tasks](https://cotlet.dev/integrations/recruiterflow-api-mcp-server/log-notes-and-follow-up-tasks.md)
- [Move Recruiterflow candidates to the next stage when they reply](https://cotlet.dev/integrations/recruiterflow-api-mcp-server/advance-candidates-who-replied.md)
- [Recruiterflow API and MCP server: every tool](https://cotlet.dev/integrations/recruiterflow-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Recruiterflow.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Recruiterflow.

[Sign up free](https://cotlet.dev/app/signup?app=recruiterflow)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.
