From openfunnel
Monitors ICP professionals changing jobs daily to identify new hires in 90-day vendor evaluation windows. Tracks job transitions as buying signals for sales outreach.
npx claudepluginhub openfunnel/openfunnel-skillsThis skill uses the workspace's default tool permissions.
Monitor ICP professionals changing jobs. A new hire has 90-day pressure to pick vendors and show early wins — budget is already committed, the mandate is fresh, and they're actively evaluating.
Builds targeted company and contact lists using Common Room Prospector for net-new prospects or existing accounts with signals. Clarifies object types and refines iteratively.
Searches live web via Nimble CLI for competitor news, product launches, hiring signals, funding; compares prior findings to highlight updates. For competitive intelligence requests.
Guides migration to Juicebox recruiting platform from tools like LinkedIn Recruiter, with feature comparisons, step-by-step instructions, and boolean-to-natural-language query translations.
Share bugs, ideas, or general feedback.
Monitor ICP professionals changing jobs. A new hire has 90-day pressure to pick vendors and show early wins — budget is already committed, the mandate is fresh, and they're actively evaluating.
Inferred pain-points from job change events are leading indicators of buying behavior.
| Timeframe | Behavior | Outreach Readiness |
|---|---|---|
| Week 1-2 | Onboarding, learning landscape | Not ready |
| Week 3-6 | Evaluating what exists, identifying gaps | Prime window |
| Month 2-3 | Making vendor decisions, getting budget approval | Closing window |
| Month 4+ | Decisions made, stack chosen | Window closed |
The 2-month window from job posted → person hired is the buying window. Filters out internal promotions automatically.
This skill bundles two scripts in the same directory as this SKILL.md file. Never read or reference API credentials directly.
signup.sh — handles authentication. Writes credentials to .env internally. Never exposes the API key.api.sh — handles all authenticated API calls. Reads credentials from .env internally.First, resolve the script paths relative to this file's location:
SKILL_DIR="$(dirname "$(find ~/.agents/skills -name SKILL.md -path "*/spot-people-changing-jobs/*" 2>/dev/null | head -1)")"
API="$SKILL_DIR/api.sh"
SIGNUP="$SKILL_DIR/signup.sh"
Then use $SIGNUP for auth and $API for all other calls.
api.sh.Before anything, test if credentials are working by running:
bash "$API" POST /api/v1/signal/get-signal-list '{"pagination": {"limit": 1, "offset": 0}}'
If the call succeeds (returns JSON with signals): skip to Step 1.
If the call fails (returns an error or missing credentials message):
### Welcome to OpenFunnel
OpenFunnel turns daily events in your market into pipeline
— using OpenFunnel's Event Intelligence engine.
To get started, I'll authenticate you via the API.
**What's your work email?**
Wait for user input. Then:
bash "$SIGNUP" start "<user_email>"
{"status": "verification_code_sent", "email": "..."} on successI sent a 6-digit verification code to **{email}**. Reply with the code.
bash "$SIGNUP" verify "<user_email>" "<code>"
{"status": "authenticated", "user_id": "..."}. Credentials are written to .env and .gitignore is updated automatically.{"status": "failed", ...}bash "$API" POST /api/v1/signal/get-signal-list '{"pagination": {"limit": 1, "offset": 0}}'This signal doesn't need a search query — it monitors ICP-matching people across qualified accounts automatically. The key input is the ICP (which roles to watch).
Run bash "$API" POST /api/v1/signal/get-signal-list '{"pagination": {"limit": 100, "offset": 0}}' to check for existing job change signals.
If a matching ICP job change signal already exists, present it and ask if the user wants to use it or deploy a new one.
Run bash "$API" POST /api/v1/signal/ '{"signal_id": <id>}' to get people matched by this signal.
### Results from: {signal_name}
**{total_people} people found | {total_accounts} accounts**
| Name | New Role | Company | Previous Company | LinkedIn |
|------|----------|---------|-----------------|----------|
| ... | | | | |
Fetch available ICP profiles: bash "$API" GET /api/v1/icp/list.
If ICPs exist: present them and let the user pick one. The ICP determines which roles are monitored.
If the user types "none" or skips ICP selection:
Auto-create a broad fallback ICP:
bash "$API" POST /api/v1/icp/create '{"name": "Broad Default ICP", "target_roles": ["Any"], "employee_ranges": ["1-10", "11-50", "51-200", "201-500", "501-1000", "1001-5000", "5001-10000", "10001+"], "location": ["Any"]}'
If no ICPs exist: offer quick setup or skip to auto-create broad fallback.
I'll deploy a **job change** signal:
**Name:** {auto-generated descriptive name}
**ICP:** {selected or created ICP name}
**Monitoring:** ICP-matching people changing jobs (internal promotions filtered out)
⚡ *This will use credits from your plan.*
Other options:
- **Repeat daily** — re-run this signal every day for continuous monitoring (recommended)
- **Account audience** — auto-add discovered accounts to a named audience
- **People audience** — auto-add discovered people to a named audience
- **Credit limit** — cap spending on this signal
Set any of these, or "deploy" to go with defaults.
Wait for user input. Then deploy:
bash "$API" POST /api/v1/signal/deploy/icp-job-change-agent '{"name": "<name>", "icp_id": <id>, "repeat": <true|false>, "account_audience_name": "<name or null>", "people_audience_name": "<name or null>", "max_credit_limit": <limit or null>}'
Signal deployed: **{name}** (ID: {signal_id})
This is now monitoring ICP professionals changing jobs.
Results come in as they're found — just say "check on {signal_name}" anytime.
Run bash "$API" POST /api/v1/signal/ '{"signal_id": <id>}' to get results found so far.