Analyze Job Pipeline
analyze_job_pipelineDiagnose a job's hiring pipeline by analyzing candidate distribution, idle/at-risk candidates, and bottleneck stages to surface recommended next actions.
Instructions
Diagnoses a single Recruit CRM job's hiring pipeline: stage-by-stage candidate distribution, days_in_current_stage per active candidate (sourced from assignment-level stage_date — ~7 API calls), idle and at-risk candidates, bottleneck stage verdict, recent notes / meetings / tasks tied to the job, and suggested next actions. Set include_time_metrics=true to add time-to-hire, time-to-stage, and time-to-first-action metrics (fetches per-candidate history for capped active and Placed candidates, typically +25–55 extra calls). Requires a job_slug; resolve from search_jobs if only a job name is available. Candidate slugs in the response can be linked as https://app.recruitcrm.io/candidate/{candidate_slug}. Call logs are not included because the Recruit CRM API does not support filtering call logs by job.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| job_slug | Yes | Job slug to analyze (e.g. 16734937272590003vEM). Resolve from search_jobs if only a job name is available. | |
| start_page | No | First assignment page in the 3-page window (~300 candidates) analyzed by this call. Default 1. Pass next_window.start_page from a prior response to analyze the next batch. | |
| include_activity | No | Include notes / meetings / tasks counts tied to this job (3 extra parallel calls). Default true. Auto-skipped when start_page > 1 to avoid redundant calls on follow-up windows. | |
| idle_days_threshold | No | Days since a candidate's last hiring-stage movement before flagging as idle. Default 14. | |
| include_time_metrics | No | Compute time-to-hire, time-to-stage, and time-to-first-action metrics. Default false. When false, relies on stage_date for days_in_current_stage (~7 API calls). When true, fetches per-candidate history for capped active and Placed candidates (typically +25–55 extra calls), populating the time_metrics block. | |
| max_active_candidates | No | Cap on active candidates whose stage history is fetched when include_time_metrics is true (each costs one /candidates/{slug}/history call). Default 25. Ignored when include_time_metrics is false (no active histories fetched). | |
| max_placed_candidates | No | Cap on Placed (terminal) candidates whose stage history is fetched when include_time_metrics is true (each costs one /candidates/{slug}/history call). Default 25. Ignored when include_time_metrics is false. | |
| terminal_stage_labels | No | Stage labels treated as terminal (excluded from active analysis). Default ["Placed","Rejected","Offer Declined","Withdrawn"]. Override only when the account uses non-standard pipeline labels. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| job | Yes | ||
| errors | Yes | ||
| activity | Yes | ||
| pipeline | Yes | ||
| truncated | Yes | ||
| bottleneck | Yes | ||
| time_metrics | Yes | ||
| idle_candidates | Yes | ||
| suggested_actions | Yes |