compose_recruiting_content
ChatGPTAGENT: compose recruiting content (draft-only). Writes job summaries, LinkedIn posts, mass-mail/cold-outreach copy (no named send recipient), SMS text the user can copy, screening/assessment questions, applicant summaries, resume-to-resume compares, candidate-to-job relevance summaries, and placement/client/lead/vendor summaries. Use when the user wants generated prose, posts, SMS drafts, questions, or comparisons — not a table of ATS records and not a sendable email to a named person. Pass a single natural-language prompt. Include job codes, applicant names/ids, or placement/client/vendor ids when the user gave them. This tool NEVER sends, posts, publishes, or saves. Show the draft in chat for the user to copy. If details are missing, it may ask a clarifying question. Do NOT use for: - ATS lookup/metrics (query_ats_data) - Ranking candidates (rank_candidate_resumes) - A sendable email to a named recipient — use draft_recruiting_email (job-share / outreach to applicant 650, "email this to Jane", etc.) Examples: "Summarize job JPC - 120"; "Write a LinkedIn post for JPC - 120"; "Compose an SMS sharing JPC - 120"; "Compare John and Jake"; "Generate screening questions for JPC - 120"; "Summarize applicant Jugnu Kumar".
draft_recruiting_email
ChatGPTAGENT: draft recruiting email (does not send). Writes a recruiting email draft (interview invite, rejection, follow-up, job-share/outreach to a named applicant, etc.). Use when the user wants a sendable email to a named recipient. Pass the intent in prompt. Include to / to_name / cc when the user gave them. This tool NEVER sends mail. Do not tell the user the email was sent. If recipients are unclear, the tool may ask a clarifying question. HARD STOP after this tool returns: - The draft is shown only in the email widget. Do NOT copy or restate To, Subject, or Body in the chat (ChatGPT will open a second email form / duplicate the draft). - Do NOT call send_recruiting_email in the same turn as draft_recruiting_email, even if the user said "email this to me" or "send it". - Tell the user the draft is in the widget. They send from the widget Send button. Do NOT use for ATS metrics (query_ats_data), ranking (rank_candidate_resumes), or non-email content (LinkedIn posts, SMS copy, job summaries, screening questions — use compose_recruiting_content). Examples: "Draft an interview invitation to jane@example.com for the Java role Tuesday 2pm"; "Write a rejection email for the frontend candidates"; "Generate a job-sharing email for JPC - 104 to applicant 650".
query_ats_data
ChatGPTAGENT: query ATS data (read-only). Retrieves, reports, analyzes, and compares recruiting data across jobs, applicants, submissions, placements, users, activities, interviews, confirmations, rejections, and analytics. Never creates, updates, or deletes records. Use for: record lookup; metrics and counts; analytics; activity/audit; candidate journey; interviews; confirmations/offers; submissions; placements; rejection analysis; filters by time/role/status/scope/module; cross-module comparisons; lifecycle and pipeline summaries; any structured data pull from the ATS. Do NOT use when the user wants to add, create, update, edit, delete, or modify any record. Do NOT use for drafted prose (summaries, LinkedIn posts, SMS, screening questions — use compose_recruiting_content) or sendable email (draft_recruiting_email). Do NOT use to explain why a named person matches a job, to explain a ranking score, or to write a fit/relevance summary. That is compose_recruiting_content (pass the candidate name and job code). Do not look up "profile details" for that follow-up. Examples: "Show me open jobs"; "How many placements this quarter?"; "Submission count by recruiter"; "Status of job 1100"; "Interviews scheduled today"; "Rejections for job 1100"; "My submissions this week"; "Compare recruiter performance Q1 vs Q2". When the tool returns an "Open in TalentHire" numbered list, show those Markdown links (and the https URLs) to the user. Do not rebuild that list as a table — ChatGPT tables strip links. When the tool returns a "### Chart (…)" section (bar/line/pie), show that chart block to the user as-is before the detail table. Do not invent chart values or drop the Chart section.
rank_candidate_resumes
ChatGPTAGENT: rank candidate resumes (read-only). Finds and ranks candidate resumes for a job or search criteria. Use when the user wants matching resumes, similar candidates, talent search, or ranking applicants against a job (title, skills, location, experience). Pass a single natural-language prompt. Include job title, location, skills, and experience when the user provided them. If details are missing, still call the tool; it may ask a clarifying question or show a job list to pick from. For job-title searches, the tool may return status skills_review with a proposed skill list. Show those skills in chat (do not invent or omit them). Tell the user these are the skills we will use and that they can remove or add skills. Do NOT call this tool again in the same turn. When the user later confirms or edits the list, call this same tool once more with confirm=true, the final skills array, and the exact rank_params from the prior skills_review structuredContent. Optional job_title. Do not pass a new prompt on that call. A new search is prompt only. Never set confirm=true unless that later user message clearly confirmed or edited the skills. Do not invent skills or rank_params. When the tool returns ranked candidates in the CEIPAL component, give only a brief textual takeaway. Do not recreate the table in chat. Do NOT use for ATS metrics/reports (use query_ats_data), recruiting content drafts (use compose_recruiting_content), or writing/sending email (use draft_recruiting_email to draft, send_recruiting_email to send). Examples: "Find Java developers in Dallas with 5+ years"; "Rank candidates for job 1100"; "Matching resumes for a senior recruiter in New York".
send_recruiting_email
ChatGPTAGENT: send recruiting email (destructive). Sends a recruiting email via Ceipal ATS (SendGrid). Use only if the user cannot send from the email widget. Prefer the widget Send button. Never call send_recruiting_email in the same turn as draft_recruiting_email. Do not paste the full email body into the chat. Required: to, subject, body, confirm=true. Optional: cc, recipient_profiles from the draft (pass through unchanged so ATS applicant activity can be recorded). Never set confirm true unless that later user message clearly confirmed send. Never invent recipients. Do not use this tool to compose; use draft_recruiting_email first. This tool sends real email. Say that it was sent only when the tool result type is email_sent.