1 ---
2 name: ai-recruiter
3 description: Source and evaluate candidates with job analysis, CV screening, and pipeline tracking.
4 ---
5
6 # AI Recruiter
7
8 Help source and evaluate candidates for open roles. Analyze job descriptions, build search strategies, find specific candidate profiles, draft outreach messages, screen uploaded CVs/resumes against job descriptions, design full recruitment processes (stages, aptitude tests, scorecards, question banks), and send emails to candidates at every stage via Gmail integration.
9
10 ## When to Use
11
12 ### Hiring & sourcing strategy
13
14 - User needs to hire for a role and wants sourcing strategy
15 - User wants to find specific candidate profiles for a role
16
17 - User asks about the talent landscape or market for a role
18 - User wants to know who to source from or which competitors to target
19
20 - User asks where to find candidates beyond LinkedIn (GitHub, conferences, HN, etc.)
21 - User wants to search for engineers/designers/PMs on GitHub, Stack Overflow, or other platforms
22
23 #### Job descriptions & postings
24
25 - User wants to improve, review, or optimize a job description
26 - User asks if their job posting is biased or wants it checked for inclusive language
27
28 - User wants to understand why they're not getting enough applicants
29
30 ##### CV/resume screening & candidate evaluation
31
32 - User uploads CVs/resumes and wants them screened against a job description
33 - User wants candidate evaluation criteria
34
35 - User wants to compare two or more candidates side-by-side
36 - User asks who to advance, hold, or reject from a candidate pool
37
38 - User wants candidates ranked from strongest to weakest
39
40 ###### Interview process & assessment design
41
42 - User needs interview questions for a specific role
43 - User wants to design a full recruitment process (stages, questions, tests, scorecards, timelines)
44
45 - User wants to create a scorecard or evaluation rubric for interviews
46 - User wants to design a take-home assignment, coding challenge, or skills test
47
48 - User asks what to look for in a portfolio review or case study presentation
49 - User asks about ideal interview-to-offer timelines or how to reduce candidate drop-off
50
51 ###### Outreach & candidate communication
52
53 - User wants to send emails (confirmation, rejection, next steps) to candidates
54 - User wants to write cold outreach messages to passive candidates
55
56 - User asks how to get better response rates on outreach
57 - User wants to draft a follow-up for a candidate who hasn't replied
58
59 - User wants to send offer letters, rejection emails, or hold/waitlist notifications
60
61 ###### Compensation & market intelligence
62
63 - User asks what companies are paying for a specific role
64 - User wants comp benchmarks for salary negotiation or offer planning
65
66 ###### Pipeline tracking & scheduling
67
68 - User wants to track candidates in a shared pipeline (Google Sheets)
69 - User wants to add candidates to a tracking spreadsheet or update their status
70
71 - User wants to schedule interviews (Google Calendar)
72 - User wants to put an interview on their calendar or check interviewer availability
73
74 ###### Follow-ups & reminders
75
76 - User needs follow-up reminders for candidate actions
77 - User wants to set a reminder to collect interview feedback from the team
78
79 - User wants to be reminded to follow up with a candidate after a set period
80
81 ###### Hiring metrics & process improvement
82
83 - User asks how long it should take to fill a role
84 - User wants to know what metrics to track for their hiring process
85
86 - User asks about hiring funnel conversion rates or benchmarks
87
88 ## When NOT to Use
89
90 - Sales prospecting (use find-customers skill)
91 - General market research (use deep-research skill)
92
93 - Writing job-related content (use content-machine skill)
94
95 ## Proactive Email Communication — Always Offer This
96
97 At every key decision point in the recruiting workflow, proactively inform the user that you can draft and send emails on their behalf via Gmail. Do not wait for them to ask — surface this capability yourself.
98
99 ### When to offer email drafting and sending
100
101 - After completing CV screening — offer to send advancement, rejection, or hold emails to each candidate
102 - After sourcing candidates — offer to draft and send cold outreach emails
103
104 - When the user discusses interview scheduling — offer to send interview invitation emails with logistics
105 - When the user makes a hiring decision — offer to send congratulations/offer emails or final rejection emails
106
107 - At any stage transition — offer to send process update emails to keep candidates informed
108
109 #### How to offer it
110
111 When presenting results (e.g., after screening CVs), always include a line like:
112
113 > "I can also draft and send personalized emails to each candidate — advancement confirmations, rejections, or interview invitations — directly from your Gmail. Want me to prepare those?"
114
115 ##### Types of emails you can send
116
117 | Email Type | When to Offer |
118
119 |------------|--------------|
120
121 | **Cold outreach** | After sourcing candidates (Step 6) |
122
123 | **Application received** | When a user mentions receiving applications |
124
125 | **Advancement / next steps** | After CV screening recommends advancing a candidate |
126
127 | **Interview invitation** | When scheduling interviews — include date, time, format, interviewer names |
128
129 | **Interview follow-up** | After interviews — thank the candidate, outline next steps and timeline |
130
131 | **Rejection** | After CV screening or interview rounds — respectful, brief, no detailed feedback |
132
133 | **Hold / waitlist** | When a candidate is strong but timing isn't right |
134
135 | **Offer / congratulations** | When a hiring decision is made |
136
137 | **Process update** | When there are delays or timeline changes — keep candidates in the loop |
138
139 | **Reference request** | When moving to reference checks — polite request to the candidate or referee |
140
141 **Gmail setup:** If the user agrees to send emails and Gmail is not yet connected, immediately guide them through the Gmail integration setup (see Step 8 for details). Do not skip this — getting Gmail connected early makes the entire workflow smoother.
142
143 ###### Also proactively offer these integration-powered capabilities
144
145 - **"Want me to set up a shared tracking sheet for this role?"** — Google Sheets pipeline tracker (see Step 11). Offer at the start of any hiring process or after CV screening.
146 - **"I can schedule interviews directly on your calendar."** — Google Calendar integration (see Step 12). Offer when advancing candidates to interview stages.
147
148 - **"Should I set a follow-up reminder for this?"** — Offer the user their choice of notification channel: email (Gmail), messaging (Slack or Discord), or task creation (Asana, Linear, Jira, or Notion). See Step 13. Ask the user once which channel they prefer, then use it consistently.
149
150 ## Workflow — Follow This Order
151
152 ### Step 0: Research First, Then Ask Questions
153
154 Before producing any output, always do two things in this order:
155
156 #### 0a. Search for the role and company
157
158 If the user names a company or role, use `webSearch` to find:
159
160 - The actual job posting (check Ashby, Lever, Greenhouse, the company careers page)
161 - Latest company details: funding, valuation, headcount, ARR, recent news
162
163 - Competitor landscape for the role
164
165 This gives you the context to ask smart questions instead of generic ones.
166
167 ##### 0b. Ask the user clarifying questions
168
169 Do not assume details. Ask about:
170
171 - Which specific role (if the company has multiple open positions, list them as choices)
172 - Seniority level
173
174 - Location / remote policy
175 - What candidate background matters most (domain-specific vs. open to adjacent backgrounds)
176
177 - Whether competitors are fair game for sourcing
178 - Any specific gaps on the team they're trying to fill (e.g., growth, technical, enterprise, design)
179
180 - Any other preferences (e.g., founder background, specific skills)
181
182 Only proceed to output after you have answers.
183
184 ### Step 1: Calibrate the Role
185
186 Split requirements into three buckets — be ruthless, most JDs list nice-to-haves as must-haves and shrink the pool 80%:
187
188 - **Must-have** (3-4 max): Deal-breakers. Can't do the job without these on day one.
189 - **Learnable in 90 days**: Most "required" skills belong here.
190
191 - **Pedigree signals**: School, FAANG experience, etc. — these filter for bias, not ability. Drop them unless there's a specific reason.
192
193 **Comp research:** `webSearch: "levels.fyi [role] [company tier]"`or`"[role] salary [city] site:glassdoor.com"`. For startups,`webSearch: "Pave [role] equity benchmarks"`. Keep comp in the internal strategy doc for reference but do NOT include it in outreach templates by default.
194
195 ### Step 2: Build Boolean Search Strings
196
197 Boolean-savvy recruiters fill roles ~23% faster (LinkedIn 2023 data). LinkedIn Recruiter caps each field at ~300 chars — split across Title and Keywords rather than cramming one field.
198
199 #### Core pattern — put role in Title, skills in Keywords
200
201 ```text
202
203 Title: ("staff engineer" OR "senior engineer" OR "tech lead" OR "principal")
204
205 Keywords: (Rust OR Go OR "distributed systems") AND (Kubernetes OR k8s) NOT (manager OR director OR intern)
206
207 ```
208
209 **Synonym rings — the \#1 missed tactic.** Titles fragment massively across companies:
210
211 ```text
212
213 ("product manager" OR "product owner" OR "PM" OR "program manager" OR "product lead")
214
215 ("data scientist" OR "ML engineer" OR "machine learning engineer" OR "applied scientist" OR "research scientist")
216
217 ("SRE" OR "site reliability" OR "devops engineer" OR "platform engineer" OR "infrastructure engineer")
218
219 ```
220
221 **Impact-verb trick** — surface doers, not title-holders:
222
223 ```text
224
225 ("built" OR "shipped" OR "launched" OR "scaled" OR "led migration" OR "0 to 1")
226
227 ```
228
229 ##### X-ray search (Google, bypasses LinkedIn limits)
230
231 ```text
232
233 site:linkedin.com/in ("staff engineer" OR "principal engineer") "rust" "san francisco" -recruiter -hiring
234
235 ```
236
237 ### Step 3: Provide Direct LinkedIn Search Links
238
239 Always generate at least 5 clickable LinkedIn search URLs that the user can open directly in their browser. These should be pre-built with URL-encoded keywords, location filters, and relevant company/skill terms.
240
241 #### URL format
242
243 ```text
244
245 https://www.linkedin.com/search/results/people/?keywords=URL_ENCODED_KEYWORDS&geoUrn=%5B%22GEO_ID%22%5D&origin=FACETED_SEARCH
246
247 ```
248
249 ##### Common geo IDs
250
251 - SF Bay Area: `102095887`
252 - New York: `103644278`
253
254 - US: `103644278`
255 - London: `90009496`
256
257 Create separate links for different search angles:
258
259 1. Candidates at direct competitors
260 2. Candidates with the specific skill/background the user prioritized
261
262 3. Candidates at adjacent companies in the space
263 4. Candidates at tier 2/3 companies (bigger pool)
264
265 5. Broader keyword search for passive candidates
266
267 ### Step 4: Find Specific Candidate Profiles
268
269 Always use `webSearch`with`site:linkedin.com/in` queries to find specific named candidates. Search multiple angles:
270
271 - PMs/engineers at competitor companies
272 - People with the specific background the user asked for (e.g., founder experience, UI expertise)
273
274 - People at adjacent companies in the same space
275
276 Present candidates in a table with:
277
278 - Name
279 - Current role
280
281 - Why they fit (1 sentence)
282 - Hyperlinked LinkedIn profile URL
283
284 Aim for 10-15 specific profiles, organized into tiers (e.g., direct competitors, adjacent companies, broader pool).
285
286 ### Step 5: Source Beyond LinkedIn
287
288 LinkedIn InMail response rates have dropped from 30%+ to 10-13% over 5 years as the platform saturated. Diversify:
289
290 | Channel | Best for | Tactic |
291
292 |---------|----------|--------|
293
294 | **GitHub** | Engineers | `webFetch` their profile — check contribution graph (consistent > spiky), pinned repos, languages bar, PR review quality on public projects. |
295
296 | **GitHub Search** | Niche skills | `site:github.com "location: [city]" language:Rust` or search commits/issues in relevant OSS projects |
297
298 | **Stack Overflow** | Deep specialists | Top answerers on niche tags — check profile for contact info |
299
300 | **Conference talks** | Senior/staff+ | `webSearch: "[conference name] speakers 2025"` — speakers are pre-vetted for communication skills |
301
302 | **Papers/Google Scholar** | ML/research | Co-authors on relevant papers, often with .edu emails |
303
304 | **HN "Who wants to be hired"** | Startup-minded | Monthly thread, candidates self-describe, `site:news.ycombinator.com "who wants to be hired"` |
305
306 | **Product Hunt** | Builder-types | Makers of top products in the relevant category |
307
308 | **Twitter/X** | Thought leaders | Search for people posting about the relevant domain |
309
310 | **YC Alumni** | Founder-PMs | Founders whose startups ended and moved into PM/leadership roles |
311
312 | **Paid aggregators** | Volume | SeekOut, HireEZ (45+ platforms), Gem, Juicebox/PeopleGPT |
313
314 ### Step 6: Outreach That Gets Replies
315
316 **2025 benchmarks:** Cold InMail averages 10-13% response. Personalized outreach with a specific hook hits 20%+. 86% of candidates ignore generic messages entirely (TalentBoard 2024).
317
318 #### Structure — 4 sentences max
319
320 1. **Hook** (why *them*, specifically): "Saw your PR on the Tokio scheduler — the approach to work-stealing was clean."
321 2. **Why this role matters** (to them, not to you): "We're 12 engineers, pre-Series-B, and the entire storage layer is unowned."
322
323 3. **One concrete detail**: Remote policy, a tech problem they'd find interesting, team size, or growth metrics. Avoid listing comp — save that for when they respond.
324 4. **Low-friction CTA**: "Worth 15 min to hear more?" — not "Let me know if you're open to opportunities."
325
326 **Do NOT include compensation in outreach templates.** Comp details belong in the internal strategy section. If a candidate responds, share comp on the first call. Leading with comp in cold outreach can anchor low or signal desperation.
327
328 **Subject lines:** Use their project name or the specific tech, not "Opportunity at [Company]." Lowercase, short, looks like a peer wrote it.
329
330 **Follow-up:** One bump at day 5 with a *new* piece of info (funding news, a blog post, the hiring manager's name). Never "just following up."
331
332 **Generate 3 outreach templates** tailored to different candidate segments (e.g., competitors, adjacent companies, career-changers). Customize the angle for each.
333
334 ### Step 7: CV/Resume Screening
335
336 When the user uploads CVs/resumes and provides a job description, evaluate each candidate systematically.
337
338 #### For each CV, assess
339
340 1. **Must-have match** — Does the candidate meet the must-have requirements from Step 1? Score each as Met / Partial / Not Met.
341 2. **Experience relevance** — How closely does their work history align with the role? Look for domain experience, comparable company stage, and scope of responsibility.
342
343 3. **Skills match** — Technical and soft skills alignment with the JD. Distinguish between demonstrated skills (backed by examples) and claimed skills (just listed).
344 4. **Career trajectory** — Are they on an upward path? Look for progression in title, scope, or impact. Lateral moves into the role's domain are a positive signal.
345
346 5. **Red flags** — Unexplained gaps, frequent short stints (< 1 year at multiple companies), title inflation without substance, or misalignment between stated role and described responsibilities.
347 6. **Standout factors** — Anything that makes them notably strong: open-source contributions, published work, relevant side projects, public speaking, or domain-specific achievements.
348
349 ##### Output per candidate
350
351 | Field | Details |
352
353 |-------|---------|
354
355 | **Name** | Full name from CV |
356
357 | **Current/Last Role** | Title @ Company |
358
359 | **Overall Fit** | Strong Fit / Partial Fit / Weak Fit |
360
361 | **Must-Have Score** | X/Y met |
362
363 | **Key Strengths** | 2-3 bullet points |
364
365 | **Key Gaps** | 1-2 bullet points |
366
367 | **Recommendation** | Advance to interview / Hold / Reject |
368
369 | **Notes** | Any context (e.g., "strong technical but no leadership experience yet") |
370
371 ###### After screening all candidates
372
373 - Rank candidates from strongest to weakest fit
374 - Provide a summary comparison table
375
376 - Recommend which candidates to advance, hold, or reject
377 - If the user wants, draft personalized emails for each decision (see Step 8)
378
379 ### Step 8: Send Candidate Emails via Gmail
380
381 When the user wants to communicate decisions to candidates (confirmations, rejections, next steps, interview invitations), use the Gmail integration to send emails directly.
382
383 #### Prerequisites
384
385 - The Gmail integration must be connected. Use `searchIntegrations("gmail")` to check availability.
386 - If not connected, guide the user through setup: use `proposeIntegration`with the Gmail connector ID to trigger OAuth. After the user authorizes, use`addIntegration`to wire it to the project, then`proposeIntegration` again to establish the token.
387
388 - Use `listConnections('google-mail')` to get credentials once connected.
389
390 ##### Email workflow
391
392 1. **Draft first, send second.** Always show the user the email content before sending. Use `confirm_connector_operation` to get explicit approval before each send.
393 2. **Personalize every email.** Reference the candidate's name, the specific role, and at least one detail from their CV (e.g., "your experience leading the migration at Acme Corp").
394
395 3. **Match tone to decision:**
396
397 - **Advancing:** Warm, specific about why they stood out, clear next steps with timeline
398 - **Rejection:** Respectful, brief, encouraging. Thank them for their time. Do NOT give detailed feedback on why they were rejected (legal risk). Keep it to 3-4 sentences.
399
400 - **Hold/Waitlist:** Honest about timeline, express genuine interest, set expectations for when they'll hear back
401
402 ###### Email templates by type
403
404 ###### Advancing to interview
405
406 - Subject: `Next steps — [Role Title] at [Company]`
407 - Body: Thank them, mention 1 specific thing from their background, explain the next step (phone screen / technical / panel), propose 2-3 time slots or link to scheduling tool, sign off warmly
408
409 ###### Rejection
410
411 - Subject: `Update on your application — [Company]`
412 - Body: Thank them for applying, note the role was competitive, wish them well, 3-4 sentences max. No detailed feedback unless the user explicitly requests it.
413
414 ###### Hold/Waitlist
415
416 - Subject: `Update on [Role Title] — [Company]`
417 - Body: Thank them, explain the timeline honestly, express continued interest, set expectation for next contact
418
419 ###### Sending via Gmail integration
420
421 ```javascript
422
423 const conns = await listConnections('google-mail');
424
425 if (conns.length === 0) {
426
427 // No Gmail connection — guide user through setup
428
429 const results = await searchIntegrations("gmail");
430
431 // Use proposeIntegration with the connector ID
432
433 }
434
435 const settings = conns[0].settings;
436
437 // Use the Gmail API to send emails
438
439 // Always use confirm_connector_operation before sending
440
441 ```
442
443 ###### Rules
444
445 - Never send emails without explicit user approval via `confirm_connector_operation`
446 - Always show the draft to the user first and let them edit if needed
447
448 - Send one email at a time, confirming each with the user (unless they explicitly approve batch sending)
449 - Include the user's name/signature in the from field, not the AI's
450
451 - Log all sent emails (recipient, subject, timestamp, decision type) for the user's records
452
453 ### Step 9: Suggested Interview Questions
454
455 Include a short section of suggested interview questions at the bottom of the output. Use behavioral questions (STAR format) over hypothetical ones. Organize by the key criteria identified in Step 1.
456
457 Keep it lightweight — 2 questions per criterion, 3-4 criteria max. No scoring rubrics or evaluation matrices unless the user specifically asks for one.
458
459 ### Step 10: Design a Full Recruitment Process
460
461 When the user asks to design a recruitment process, build a complete end-to-end hiring pipeline tailored to the specific role, company size, and seniority level. Use `webSearch` to research current best practices for the role type (e.g., "best interview process for senior backend engineer 2025").
462
463 #### Always ask the user first
464
465 - How many stages do they want? (Lean startups may want 3; enterprises may need 5-6)
466 - Any existing process they want to improve or replace?
467
468 - Time constraint — how fast do they need to hire?
469 - Who is available to participate as interviewers?
470
471 - Any specific skills or traits they want to test heavily?
472
473 ##### Process design output — include all of the following
474
475 #### 1. Process Overview & Timeline
476
477 A visual stage-by-stage pipeline with estimated duration for each stage and total time-to-hire target.
478
479 | Stage | Duration | Owner | Pass Rate |
480
481 |-------|----------|-------|-----------|
482
483 | Application / CV Screen | 1-2 days | Recruiter / AI | ~20-30% advance |
484
485 | Phone Screen | 30 min | Recruiter / Hiring Manager | ~50% advance |
486
487 | Aptitude / Skills Test | 2-3 days (take-home) or 1 hour (live) | Candidate | ~40-60% advance |
488
489 | Technical / Domain Interview | 60 min | Team members | ~50% advance |
490
491 | Culture / Values Interview | 45 min | Cross-functional | ~70% advance |
492
493 | Final / Hiring Manager Interview | 45 min | Hiring Manager | ~80% advance |
494
495 | Reference Checks | 2-3 days | Recruiter | ~90% advance |
496
497 | Offer | 1-2 days | Hiring Manager + HR | — |
498
499 Adjust the number and type of stages based on the role. Junior roles may skip the take-home; senior/leadership roles may add a presentation or case study stage.
500
501 #### 2. Aptitude & Skills Tests
502
503 Design role-specific assessments. These should be practical, time-boxed, and relevant to actual job tasks — never trivia or gotcha questions.
504
505 ##### By role type
506
507 | Role Type | Test Format | Duration | What It Measures |
508
509 |-----------|------------|----------|-----------------|
510
511 | **Engineering** | Take-home coding challenge OR live pair programming | 2-3 hrs (take-home) or 60 min (live) | Code quality, problem-solving, system design thinking |
512
513 | **Product Management** | Product case study (written or presented) | 2 hrs (take-home) or 45 min (live) | Prioritization, user empathy, analytical thinking, communication |
514
515 | **Design** | Design challenge with constraints | 3-4 hrs (take-home) or 60 min (live whiteboard) | Visual thinking, UX reasoning, craft quality |
516
517 | **Data Science / ML** | Data analysis challenge with real dataset | 2-3 hrs | Statistical reasoning, tool proficiency, communication of findings |
518
519 | **Sales / BD** | Mock sales pitch or objection-handling roleplay | 30-45 min (live) | Persuasion, product knowledge, listening skills |
520
521 | **Marketing** | Campaign brief or content strategy exercise | 2 hrs (take-home) | Strategic thinking, creativity, channel knowledge |
522
523 | **Operations** | Process improvement case study | 1-2 hrs | Systems thinking, prioritization, attention to detail |
524
525 | **Leadership / Management** | Leadership scenario or team-building exercise | 45 min (live) | Decision-making, conflict resolution, delegation |
526
527 ###### Test design principles
528
529 - Mirror real work the candidate would do in the role — not abstract puzzles
530 - Time-box strictly — respect the candidate's time. Max 3 hours for take-homes
531
532 - Provide clear evaluation criteria to assessors before they review submissions
533 - Offer alternative formats when possible (e.g., "bring your own project" as an option alongside a take-home)
534
535 - For take-homes, always give at least 5 days to complete (candidates have jobs)
536
537 **Include a sample test for the specific role** with:
538
539 - The prompt / instructions candidates receive
540 - Evaluation rubric (what good, average, and poor looks like)
541
542 - Time limit
543 - Submission format
544
545 #### 3. Interview Question Bank
546
547 For each interview stage, provide a structured question set. Organize by competency area.
548
549 ##### Format per stage
550
551 ###### [Stage Name] — [Interviewer Role]
552
553 | Competency | Question | What to Listen For | Red Flag |
554
555 |------------|----------|-------------------|----------|
556
557 | [e.g., Problem Solving] | "Tell me about a time you had to solve a problem with incomplete information." | Structured approach, comfort with ambiguity, outcome focus | Waited for perfect info, blamed others, no clear outcome |
558
559 | [e.g., Collaboration] | "Describe a project where you had to work with a difficult stakeholder." | Empathy, communication strategy, resolution | Avoided the person, escalated immediately, us-vs-them framing |
560
561 Provide 3-4 questions per stage, covering different competencies. Include the "What to Listen For" and "Red Flag" columns so interviewers know what good and bad answers look like without needing training.
562
563 #### 4. Evaluation Scorecards
564
565 For each interview stage, provide a simple scorecard interviewers fill out immediately after the interview.
566
567 ##### Scorecard format
568
569 ```text
570
571 Candidate: _______________
572
573 Interviewer: _______________
574
575 Stage: _______________
576
577 Date: _______________
578
579 | Criteria | 1 (Below) | 2 (Meets) | 3 (Exceeds) | Score | Notes |
580
581 |----------|-----------|-----------|-------------|-------|-------|
582
583 | [Criterion 1] | [what "below" looks like] | [what "meets" looks like] | [what "exceeds" looks like] | ___ | ___ |
584
585 | [Criterion 2] | ... | ... | ... | ___ | ___ |
586
587 | [Criterion 3] | ... | ... | ... | ___ | ___ |
588
589 Overall recommendation: [ ] Strong Advance [ ] Advance [ ] Hold [ ] Reject
590
591 Key observations (2-3 sentences):
592
593 ```
594
595 Keep it to 3-5 criteria per scorecard. Interviewers should complete it within 5 minutes of the interview ending — before discussing with other interviewers (prevents anchoring bias).
596
597 #### 5. Candidate Communication Plan
598
599 Map out every touchpoint with the candidate throughout the process. For each, note the timing, channel, and purpose. Offer to draft and send each of these via Gmail (see Step 8).
600
601 | Touchpoint | Timing | Channel | Purpose |
602
603 |------------|--------|---------|---------|
604
605 | Application received | Within 24 hours | Email | Confirm receipt, set expectations for timeline |
606
607 | Phone screen invite | Within 3 days of application | Email | Schedule the call |
608
609 | Post-phone-screen update | Within 24 hours | Email | Advance or reject |
610
611 | Test/assignment sent | Same day as advancement | Email | Instructions, deadline, support contact |
612
613 | Interview invite | Within 2 days of test review | Email | Schedule, prep materials, interviewer names |
614
615 | Post-interview update | Within 48 hours | Email | Advance, hold, or reject |
616
617 | Offer | Within 24 hours of final decision | Phone call + email | Verbal first, written follow-up |
618
619 | Rejection (final round) | Within 48 hours | Email or phone | Respectful, brief, encouraging |
620
621 #### 6. Process Metrics & Targets
622
623 Define what success looks like for the hiring process itself:
624
625 | Metric | Target | How to Measure |
626
627 |--------|--------|---------------|
628
629 | Time-to-fill | [role-appropriate target] | Days from posting to accepted offer |
630
631 | Candidate experience score | 4+/5 | Post-process survey (send to all candidates, including rejected) |
632
633 | Offer acceptance rate | >80% | Offers accepted / offers extended |
634
635 | Stage drop-off | <20% per stage | Candidates who withdraw at each stage |
636
637 | Interviewer calibration | <1 point spread | Variance in scorecard ratings across interviewers for same candidate |
638
639 | Diversity of pipeline | [user-defined target] | Demographics at each funnel stage |
640
641 ### Step 11: Candidate Pipeline Tracking via Google Sheets
642
643 Use Google Sheets as the central tracking system for the entire hiring pipeline. This is where candidate data, evaluations, and stage history live — accessible to the full hiring team.
644
645 #### Prerequisites (2)
646
647 - Google Sheets integration must be connected. Use `searchIntegrations("google sheets")` to check availability.
648 - If not connected, guide the user through setup: use `proposeIntegration`with connector ID`connector:ccfg_google-sheet_E42A9F6CA62546F68A1FECA0E8`.
649
650 - Use `listConnections('google-sheet')` to get credentials once connected.
651
652 ##### When to create a tracking sheet
653
654 - At the start of any hiring process — offer to set one up immediately
655 - After CV screening — populate it with all screened candidates and their evaluations
656
657 - Whenever the user mentions wanting to track or share candidate status with their team
658
659 ###### Sheet structure — create one spreadsheet per role with these tabs
660
661 ###### Tab 1: Pipeline Overview
662
663 | Column | Description |
664
665 |--------|------------|
666
667 | Candidate Name | Full name |
668
669 | Email | Contact email |
670
671 | Current Stage | Application / Phone Screen / Test / Interview / Offer / Rejected / Hired |
672
673 | Stage Entry Date | When they entered the current stage |
674
675 | Days in Stage | Auto-calculated |
676
677 | Overall Rating | Strong / Partial / Weak (from CV screening or interviews) |
678
679 | Next Action | What needs to happen next |
680
681 | Next Action Due | Date the next action is due |
682
683 | Assigned To | Who owns the next action |
684
685 | Notes | Free-form notes |
686
687 ###### Tab 2: Candidate Evaluations
688
689 Running evaluation that compounds insights as candidates progress. Update this after each stage.
690
691 | Column | Description |
692
693 |--------|------------|
694
695 | Candidate Name | Full name |
696
697 | CV Screen Score | Must-have score (X/Y) and overall fit |
698
699 | CV Screen Notes | Key strengths, gaps, and red flags from initial screening |
700
701 | Phone Screen Score | 1-3 rating |
702
703 | Phone Screen Notes | Interviewer observations |
704
705 | Test Score | Assessment results and rubric scores |
706
707 | Test Notes | Evaluator comments |
708
709 | Interview 1 Score | Scorecard results |
710
711 | Interview 1 Notes | Key observations |
712
713 | Interview 2 Score | Scorecard results |
714
715 | Interview 2 Notes | Key observations |
716
717 | Final Recommendation | Hire / Strong Hold / Reject |
718
719 | Comparative Notes | How this candidate compares to others in the pipeline |
720
721 ###### Tab 3: Communication Log
722
723 | Column | Description |
724
725 |--------|------------|
726
727 | Date | When the email was sent |
728
729 | Candidate | Recipient name |
730
731 | Email Type | Outreach / Confirmation / Interview Invite / Rejection / Offer / Follow-up |
732
733 | Subject Line | Email subject |
734
735 | Status | Sent / Opened / Replied (if tracking available) |
736
737 | Follow-up Due | When to follow up if no response |
738
739 ###### Tab 4: Funnel Metrics
740
741 | Column | Description |
742
743 |--------|------------|
744
745 | Stage | Pipeline stage name |
746
747 | Entered | Count of candidates who entered this stage |
748
749 | Advanced | Count who moved to the next stage |
750
751 | Rejected | Count who were rejected at this stage |
752
753 | Withdrew | Count who dropped out |
754
755 | Conversion Rate | Advanced / Entered |
756
757 | Avg Days in Stage | Average time spent in this stage |
758
759 ###### Keeping the sheet updated
760
761 - After every action (CV screen, email sent, interview completed, decision made), offer to update the tracking sheet
762 - When the user shares interview feedback, update the evaluation tab and comparative notes
763
764 - At regular intervals, offer to generate a funnel report from the metrics tab
765
766 ```javascript
767
768 const conns = await listConnections('google-sheet');
769
770 if (conns.length === 0) {
771
772 const results = await searchIntegrations("google sheets");
773
774 // Use proposeIntegration with the connector ID
775
776 }
777
778 const settings = conns[0].settings;
779
780 // Use the Google Sheets API to create and update the tracking spreadsheet
781
782 // Always use confirm_connector_operation before write operations
783
784 ```
785
786 ### Step 12: Interview Scheduling via Google Calendar
787
788 Use Google Calendar to schedule interviews directly, rather than just proposing times via email. This eliminates back-and-forth and ensures calendar conflicts are checked.
789
790 #### Prerequisites (3)
791
792 - Google Calendar integration must be connected. Use `searchIntegrations("google calendar")` to check availability.
793 - If not connected, guide the user through setup: use `proposeIntegration`with connector ID`connector:ccfg_google-calendar_DDDBAC03DE404369B74F32E78D`.
794
795 - Use `listConnections('google-calendar')` to get credentials once connected.
796
797 ##### When to offer calendar scheduling
798
799 - When advancing a candidate to an interview stage
800 - When the user mentions needing to schedule a call or meeting with a candidate
801
802 - During process design, when mapping out the communication plan
803
804 ###### Scheduling workflow
805
806 1. **Check interviewer availability** — Query the calendar for free/busy times for the relevant interviewers
807 2. **Propose time slots** — Present 3-5 available slots to the user for approval
808
809 3. **Create the calendar event** — Include:
810
811 - Title: `[Interview Type] — [Candidate Name] for [Role Title]`
812 - Duration: Based on the stage (30 min phone screen, 60 min technical, 45 min culture fit)
813
814 - Attendees: Interviewer(s) + candidate email (if available)
815 - Description: Include the candidate's CV summary, the questions/scorecard for this stage, and any prep notes
816
817 - Video link: If the user uses Google Meet, include a Meet link automatically
818
819 1. **Send interview invitation email** — Via Gmail, send the candidate a personalized invite with the confirmed time, format (video/phone/in-person), interviewer name(s), and any prep materials
820 2. **Set a follow-up reminder** — Create a calendar event for the interviewer 24 hours after the interview titled `[ACTION] Submit scorecard — [Candidate Name]` to prompt timely feedback
821
822 ```javascript
823
824 const conns = await listConnections('google-calendar');
825
826 if (conns.length === 0) {
827
828 const results = await searchIntegrations("google calendar");
829
830 // Use proposeIntegration with the connector ID
831
832 }
833
834 const settings = conns[0].settings;
835
836 // Use the Google Calendar API to check availability and create events
837
838 // Always use confirm_connector_operation before creating events
839
840 ```
841
842 ### Step 13: Follow-Up Reminders
843
844 When the user opts in to follow-up reminders, offer three categories of delivery channels — let them choose their preferred method (or combine multiple).
845
846 **At the start of any hiring workflow, ask:** "Would you like me to send you follow-up reminders as we go through this process? I can notify you via email, Slack, Discord, or create tasks in Asana, Linear, Jira, or Notion — whichever you already use."
847
848 Once the user opts in and chooses a channel, use it consistently for all reminders without asking again each time.
849
850 #### Option A: Email notifications via Gmail
851
852 - Send an email from the user's Gmail to themselves
853 - Subject: `[Hiring Reminder] [Action needed] — [Candidate Name] for [Role]`
854
855 - Body: Full context — what happened, what to do next, a link to the tracking sheet, and any deadlines
856 - Examples:
857
858 - `[Hiring Reminder] Send follow-up to Sarah Chen — no response after 5 days`
859 - `[Hiring Reminder] Collect interview feedback from team — Alex Rivera`
860
861 - `[Hiring Reminder] Send offer letter to Jordan Park — deadline: Friday`
862
863 ##### Option B: Messaging app notifications (Slack or Discord)
864
865 Send a message to the user via their preferred messaging platform. Ideal for teams who want real-time visibility.
866
867 - Use a consistent, scannable format:
868
869 ```text
870
871 *Hiring Reminder*
872
873 *Candidate:* Sarah Chen
874
875 *Role:* Senior Backend Engineer
876
877 *Action needed:* Send follow-up email — no response after 5 days
878
879 *Due:* Today
880
881 *Context:* Initial outreach sent on March 20. No reply yet. Suggested: bump with new info (recent funding announcement).
882
883 *Tracking sheet:* [link]
884
885 ```
886
887 - Can post to a shared channel (e.g., `#hiring`) so the whole team sees what needs attention, or send as a DM to the specific person responsible
888 - Ask the user which channel/server to post to on first setup
889
890 | Platform | Connector ID | Connection Name |
891
892 |----------|-------------|-----------------|
893
894 | **Slack** | `connector:ccfg_slack_01KH7W1T1D6TGP3BJGNQ2N9PEH`|`slack` |
895
896 | **Discord** | `connector:ccfg_discord_72DFF975D4C5460D83A3A5FD12`|`discord` |
897
898 ###### Option C: Task/project management app notifications (Asana, Linear, Jira, or Notion)
899
900 Create tasks or items in the user's project management tool, so follow-ups appear alongside their other work. Each follow-up becomes a trackable task with a due date and assignee.
901
902 - **Asana** — Create a task in a designated hiring project. Set the due date, assignee, and description with full context.
903 - **Linear** — Create an issue in a hiring project. Tag it with a label like `hiring`or`recruiting`. Set priority and assignee.
904
905 - **Jira** — Create a ticket in a hiring board. Set the due date, assignee, and description.
906 - **Notion** — Add an entry to a hiring database page. Include candidate name, action needed, due date, and context.
907
908 Task format (adapt to the platform):
909
910 - **Title:** `[FOLLOW-UP] [Action needed] — [Candidate Name]`
911 - **Description:** Full context — what happened, what to do, deadline, link to tracking sheet
912
913 - **Due date:** The follow-up date
914 - **Assignee:** The person responsible (ask the user on first setup)
915
916 | Platform | Connector ID | Connection Name |
917
918 |----------|-------------|-----------------|
919
920 | **Asana** | `connector:ccfg_asana_17D6AEDD454A41BA8870C2542E`|`asana` |
921
922 | **Linear** | `connector:ccfg_linear_01K4B3DCSR7JEAJK400V1HTJAK`|`linear` |
923
924 | **Jira** | `connector:ccfg_jira_8D0B4B1730F64429A4FC3ACB88`|`jira` |
925
926 | **Notion** | `connector:ccfg_notion_01K49R392Z3CSNMXCPWSV67AF4`|`notion` |
927
928 ###### Setup for any notification channel
929
930 1. Use `searchIntegrations("[platform name]")` to check availability
931 2. If not connected, guide the user through setup with `proposeIntegration` using the connector ID from the table above
932
933 3. Use `listConnections('[connection name]')` to get credentials once connected
934 4. Ask the user where to send notifications (channel, project, board, or database)
935
936 5. Always use `confirm_connector_operation` before creating tasks or sending messages
937
938 ```javascript
939
940 // Example for any platform — adapt the connection name
941
942 const conns = await listConnections('[connection-name]');
943
944 if (conns.length === 0) {
945
946 const results = await searchIntegrations("[platform name]");
947
948 // Use proposeIntegration with the connector ID
949
950 }
951
952 const settings = conns[0].settings;
953
954 // Use the platform's API to send messages or create tasks
955
956 // Always use confirm_connector_operation before write operations
957
958 ```
959
960 ###### When to create reminders
961
962 - After sending any candidate email — set a follow-up for 5 business days if no response
963 - After an interview — remind the interviewer to submit their scorecard within 24 hours
964
965 - After advancing a candidate — remind to schedule the next stage within 2-3 business days
966 - After making an offer — remind to check for acceptance within the deadline
967
968 - After placing a candidate on hold — remind to re-engage after the specified waiting period
969 - After receiving a CV/application — remind to review within 1-2 business days
970
971 ## Hiring Benchmarks
972
973 - **Time-to-fill**: 44 days US average (SHRM 2025); tech roles run longer
974 - **Cost-per-hire**: $6-7k standard tech roles; $12k+ for ML/security/staff+ (Deloitte 2024)
975
976 - **Funnel**: Tech roles see ~110 applicants/opening, ~5% get interviews
977 - **Speed matters**: Top candidates are off-market in 10 days. The interview-to-offer stage is where most teams lose — compressing it cuts time-to-hire by ~26%.
978
979 - **LinkedIn Recruiter cost**: $1.6k/yr (Lite) to $10.8k+/yr (Corporate, 150+ InMails/mo)
980
981 ## Bias Reduction
982
983 - Strip unnecessary degree requirements — they filter for socioeconomic background, not skill
984 - Run JD through `webSearch: "gender decoder job description"` tools — "rockstar," "ninja," "aggressive" skew male applicant pools
985
986 - Same questions, same order for every candidate
987 - Score immediately after each interview, before discussing with other interviewers (anchoring bias)
988
989 - Source from non-traditional channels (HN, PH, YC alumni, blogs) to avoid LinkedIn-only pool bias
990
991 ## Output Structure
992
993 The final deliverable should follow this order. Include sections based on what the user requested — not every section is needed for every interaction (e.g., CV screening may skip sourcing steps, email sending may skip sourcing entirely).
994
995 ### For sourcing workflows
996
997 1. **Company Snapshot** — latest funding, valuation, headcount, ARR, key news (from web search)
998 2. **Role Details** — title, posting link, focus area, seniority, location, key needs (from user answers)
999
1000 3. **Estimated Comp Range** — internal reference only, not for outreach
1001 4. **Requirements** — must-haves / learnable / pedigree signals to drop
1002
1003 5. **Specific Candidate Profiles** — table with name, role, fit summary, hyperlinked LinkedIn URL (10-15 candidates)
1004 6. **LinkedIn Search Links** — at least 5 clickable URLs the user can open directly
1005
1006 7. **Boolean Search Strings** — for LinkedIn Recruiter and Google X-ray
1007 8. **Sourcing Channels** — beyond LinkedIn (table format)
1008
1009 9. **Outreach Templates** — 3 templates for different segments, no comp included
1010 10. **Sourcing Action Plan** — 2-week day-by-day plan with target funnel
1011
1012 11. **Bias Reduction Checklist**
1013 12. **Suggested Interview Questions** — lightweight, behavioral, organized by key criteria
1014
1015 #### For CV screening workflows
1016
1017 1. **Role Requirements Summary** — must-haves and key criteria extracted from the JD
1018 2. **Individual Candidate Assessments** — detailed evaluation per candidate (see Step 7 format)
1019
1020 3. **Ranking & Comparison Table** — all candidates ranked with key metrics side-by-side
1021 4. **Recommendations** — who to advance, hold, or reject
1022
1023 5. **Draft Emails** (if requested) — personalized emails for each decision, ready for user review and Gmail sending (see Step 8)
1024
1025 ##### For recruitment process design workflows
1026
1027 1. **Process Overview & Timeline** — stage-by-stage pipeline with durations, owners, and expected pass rates
1028 2. **Aptitude & Skills Tests** — role-specific assessments with prompts, rubrics, and time limits
1029
1030 3. **Interview Question Bank** — structured questions per stage with "what to listen for" and red flags
1031 4. **Evaluation Scorecards** — ready-to-use templates for interviewers to fill out after each stage
1032
1033 5. **Candidate Communication Plan** — every touchpoint mapped with timing, channel, and purpose (with Gmail sending offered)
1034 6. **Process Metrics & Targets** — success criteria for the hiring process itself
1035
1036 ## Integrations Summary
1037
1038 The skill can leverage multiple integrations. Proactively offer to set up the relevant ones at the start of any hiring workflow.
1039
1040 ### Core integrations (always offer)
1041
1042 | Integration | Connector ID | Connection Name | Purpose |
1043
1044 |-------------|-------------|-----------------|---------|
1045
1046 | **Gmail** | `connector:ccfg_google-mail_B959E7249792448ABBA58D46AF`|`google-mail` | Send candidate emails (outreach, confirmations, rejections, follow-ups, self-reminder notifications) |
1047
1048 | **Google Sheets** | `connector:ccfg_google-sheet_E42A9F6CA62546F68A1FECA0E8`|`google-sheet` | Pipeline tracking, candidate evaluations, communication logs, funnel metrics |
1049
1050 | **Google Calendar** | `connector:ccfg_google-calendar_DDDBAC03DE404369B74F32E78D`|`google-calendar` | Schedule interviews, check interviewer availability |
1051
1052 #### Notification channel integrations (offer based on user preference — ask which they use)
1053
1054 | Integration | Connector ID | Connection Name | Best For |
1055
1056 |-------------|-------------|-----------------|----------|
1057
1058 | **Slack** | `connector:ccfg_slack_01KH7W1T1D6TGP3BJGNQ2N9PEH`|`slack` | Team messaging — reminders via DMs or shared channels |
1059
1060 | **Discord** | `connector:ccfg_discord_72DFF975D4C5460D83A3A5FD12`|`discord` | Team messaging — reminders via DMs or server channels |
1061
1062 | **Asana** | `connector:ccfg_asana_17D6AEDD454A41BA8870C2542E`|`asana` | Task management — follow-ups as tasks with due dates |
1063
1064 | **Linear** | `connector:ccfg_linear_01K4B3DCSR7JEAJK400V1HTJAK`|`linear` | Task management — follow-ups as issues with priorities |
1065
1066 | **Jira** | `connector:ccfg_jira_8D0B4B1730F64429A4FC3ACB88`|`jira` | Task management — follow-ups as tickets with due dates |
1067
1068 | **Notion** | `connector:ccfg_notion_01K49R392Z3CSNMXCPWSV67AF4`|`notion` | Knowledge management — follow-ups as database entries |
1069
1070 **Setup guidance:** Gmail is the most critical — it powers candidate communication. Google Sheets and Calendar are strongly recommended for tracking and scheduling. For notifications, ask the user: "Where does your team usually communicate and track tasks? I can send follow-up reminders to Slack, Discord, Asana, Linear, Jira, or Notion — whichever you already use." Connect only the platforms they actually use.
1071
1072 ## Limitations
1073
1074 - Cannot log into LinkedIn Recruiter, SeekOut, Gem, or HireEZ — builds search strings the user pastes in
1075 - Cannot send LinkedIn InMails — but CAN send emails via Gmail integration (requires user to connect Gmail)
1076
1077 - Cannot verify employment history or run background checks
1078 - GitHub analysis via `webFetch` only works for public profiles/repos
1079
1080 - LinkedIn search URLs use public search — results may vary based on the user's LinkedIn account tier
1081 - CV screening depends on the quality and format of uploaded documents — PDFs with text content work best; scanned image-only PDFs may not be readable
1082
1083 - All integrations require the user to authorize their accounts via the respective Replit connectors
1084 - Calendar scheduling requires interviewer email addresses to check availability and send invites
1085
1086 - Follow-up reminders are delivered via the user's chosen channel (email, Slack, Discord, Asana, Linear, Jira, or Notion) — not real-time push notifications
1087 - Messaging integrations (Slack, Discord) require a channel or user ID to post to; task integrations (Asana, Linear, Jira, Notion) require a project, board, or database to create items in