Pilot Recruitment Pipeline Setup
by @teoslayer
Deploy a recruitment pipeline with 3 agents for candidate sourcing, screening, and interview scheduling. Use this skill when: 1. User wants to set up a recru...
clawhub install pilot-recruitment-pipeline-setupπ About This Skill
name: pilot-recruitment-pipeline-setup description: > Deploy a recruitment pipeline with 3 agents for candidate sourcing, screening, and interview scheduling.
Use this skill when: 1. User wants to set up a recruitment or hiring pipeline 2. User is configuring an agent as part of a recruitment automation setup 3. User asks about candidate sourcing, resume screening, or interview scheduling across agents
Do NOT use this skill when: - User wants to discover a single service (use pilot-discover instead) - User wants to send a one-off alert (use pilot-alert instead) tags: - pilot-protocol - setup - recruitment - hiring license: AGPL-3.0 metadata: author: vulture-labs version: "1.0" openclaw: requires: bins: - pilotctl - clawhub homepage: https://pilotprotocol.network allowed-tools: - Bash
Recruitment Pipeline Setup
Deploy 3 agents that automate candidate sourcing, resume screening, and interview scheduling.
Roles
| Role | Hostname | Skills | Purpose |
|------|----------|--------|---------|
| sourcer | | pilot-discover, pilot-stream-data, pilot-metrics | Scans job boards and referral networks, publishes candidate profiles |
| screener | | pilot-event-filter, pilot-task-router, pilot-alert | Evaluates candidates, scores skills, flags red flags |
| scheduler | | pilot-webhook-bridge, pilot-slack-bridge, pilot-receipt | Coordinates interviews, sends invites, tracks pipeline |
Setup Procedure
Step 1: Ask the user which role this agent should play and what prefix to use.
Step 2: Install the skills for the chosen role:
# For sourcer:
clawhub install pilot-discover pilot-stream-data pilot-metrics
For screener:
clawhub install pilot-event-filter pilot-task-router pilot-alert
For scheduler:
clawhub install pilot-webhook-bridge pilot-slack-bridge pilot-receipt
Step 3: Set the hostname:
pilotctl --json set-hostname -
Step 4: Write the setup manifest:
mkdir -p ~/.pilot/setups
cat > ~/.pilot/setups/recruitment-pipeline.json << 'MANIFEST'
MANIFEST
Step 5: Tell the user to initiate handshakes with direct communication peers.
Manifest Templates Per Role
sourcer
{
"setup": "recruitment-pipeline", "setup_name": "Recruitment Pipeline",
"role": "sourcer", "role_name": "Candidate Sourcer",
"hostname": "-sourcer",
"description": "Scans job boards, LinkedIn profiles, and referral networks. Packages candidate profiles with match scores.",
"skills": {
"pilot-discover": "Search job boards and LinkedIn for candidates matching open roles.",
"pilot-stream-data": "Stream candidate profiles to screener as they are found.",
"pilot-metrics": "Track sourcing metrics: candidates found, match scores, source breakdown."
},
"peers": [
{"role": "screener", "hostname": "-screener", "description": "Receives candidate profiles for screening"},
{"role": "scheduler", "hostname": "-scheduler", "description": "Downstream β does not communicate directly"}
],
"data_flows": [
{"direction": "send", "peer": "-screener", "port": 1002, "topic": "candidate-profile", "description": "Candidate profiles with match scores"}
],
"handshakes_needed": ["-screener"]
}
screener
{
"setup": "recruitment-pipeline", "setup_name": "Recruitment Pipeline",
"role": "screener", "role_name": "Resume Screener",
"hostname": "-screener",
"description": "Evaluates candidates against job requirements, scores skills, flags red flags.",
"skills": {
"pilot-event-filter": "Filter candidates below threshold scores or with disqualifying criteria.",
"pilot-task-router": "Route screened candidates to appropriate interview tracks.",
"pilot-alert": "Alert hiring managers when high-priority candidates are identified."
},
"peers": [
{"role": "sourcer", "hostname": "-sourcer", "description": "Sends candidate profiles for screening"},
{"role": "scheduler", "hostname": "-scheduler", "description": "Receives screened candidates for interview scheduling"}
],
"data_flows": [
{"direction": "receive", "peer": "-sourcer", "port": 1002, "topic": "candidate-profile", "description": "Candidate profiles with match scores"},
{"direction": "send", "peer": "-scheduler", "port": 1002, "topic": "screened-candidate", "description": "Screened candidates ready for interviews"}
],
"handshakes_needed": ["-sourcer", "-scheduler"]
}
scheduler
{
"setup": "recruitment-pipeline", "setup_name": "Recruitment Pipeline",
"role": "scheduler", "role_name": "Interview Scheduler",
"hostname": "-scheduler",
"description": "Coordinates interview slots, sends calendar invites, tracks hiring pipeline status.",
"skills": {
"pilot-webhook-bridge": "Send interview invites via calendar API webhooks.",
"pilot-slack-bridge": "Notify hiring channels when interviews are booked or completed.",
"pilot-receipt": "Track interview confirmations and candidate responses."
},
"peers": [
{"role": "sourcer", "hostname": "-sourcer", "description": "Upstream β does not communicate directly"},
{"role": "screener", "hostname": "-screener", "description": "Sends screened candidates for scheduling"}
],
"data_flows": [
{"direction": "receive", "peer": "-screener", "port": 1002, "topic": "screened-candidate", "description": "Screened candidates ready for interviews"},
{"direction": "send", "peer": "external", "port": 443, "topic": "interview-invite", "description": "Interview invites via calendar API"}
],
"handshakes_needed": ["-screener"]
}
Data Flows
sourcer -> screener : candidate-profile events (port 1002)screener -> scheduler : screened-candidate events (port 1002)scheduler -> external : interview-invite via webhook (port 443)Handshakes
# sourcer and screener handshake with each other:
pilotctl --json handshake -screener "setup: recruitment-pipeline"
pilotctl --json handshake -sourcer "setup: recruitment-pipeline"
screener and scheduler handshake with each other:
pilotctl --json handshake -scheduler "setup: recruitment-pipeline"
pilotctl --json handshake -screener "setup: recruitment-pipeline"
Workflow Example
# On screener β subscribe to candidate profiles:
pilotctl --json subscribe -sourcer candidate-profile
On scheduler β subscribe to screened candidates:
pilotctl --json subscribe -screener screened-candidate
On sourcer β publish a candidate profile:
pilotctl --json publish -screener candidate-profile '{"candidate":"Jane Doe","role":"Senior Backend Engineer","match_score":92,"source":"linkedin"}'
On screener β publish a screened candidate:
pilotctl --json publish -scheduler screened-candidate '{"candidate":"Jane Doe","screen_score":88,"red_flags":[],"recommendation":"interview"}'
Dependencies
Requires pilot-protocol skill, pilotctl binary, clawhub binary, and a running daemon.