Champion Job-Change Watcher — daily LinkedIn company-change detection
A champion moving to a new company is one of the highest-conversion outbound signals in B2B. They already trust your product; their new employer doesn't. This agent walks your champion + customer list daily, detects company changes from LinkedIn, and pings Slack the morning it happens.
Build this with agnt_
Skip the copy-paste. We'll spin up a builder session prepopulated with this blueprint's spec — providers, schedule, database schema, and the questions the agent should ask you to personalize it for your product.
Sign up free · no credit card
The motion
The best outbound lead is a champion who just changed companies. They already used your product, already evangelized it, already know the rough deployment shape — and their new employer is a fresh logo where they have purchasing influence. The window to catch it is narrow: too early and they're still onboarding; too late and someone else sold the new company a competitor. This agent watches your tracked_contacts table (your hand-picked champions + customers) once a day, walks the 20 oldest-checked rows, fetches each contact's LinkedIn profile, and compares the current company to the snapshot stored in your DB. Changes get written to a `job_change_signals` table and surfaced in Slack at 9am — usually before your team is at their desks. Bounded to 20 per run so at 400 tracked contacts every person gets checked every ~3 weeks, the right cadence for catching moves without burning API spend. Detection-only by design: pair with your outbound stack for the activation half.
A champion at their new company is the warmest possible cold outreach. They know you, they have influence, their new employer is a clean logo.
9am Slack ping means you hear about the move before your team logs in. The right time to reach out is the first 2–4 weeks of the new role.
20 contacts per daily run. At 400 tracked people, every contact is checked every ~3 weeks — the right cadence for catching moves without burning credits.
Writes signals to a table, posts to Slack, stops. Activation (reach-out, sequencing, account creation) is a separate motion downstream.
Daily LinkedIn company-change detection across a hand-picked list of champions + customers. Bounded batch keeps cost predictable, atomic per-row updates mean a mid-run crash never loses data. The agent does detection only — activation is a separate motion downstream.
Build this with agnt_
Skip the copy-paste. We'll spin up a builder session prepopulated with this blueprint's spec — providers, schedule, database schema, and the questions the agent should ask you to personalize it for your product.
Sign up free · no credit card
Or copy a prompt into another platform
Prefer to build with OpenClaw, Hermes, or Claude Code? Drop this prompt into your agent of choice — it seeds the goal, the agntdata endpoints to use, and a step-by-step plan.
You are helping me build a Champion Job-Change Watcher. It runs daily, walks the oldest-checked rows in my `tracked_contacts` table, fetches each contact's LinkedIn profile, detects whether they've moved to a new company since the last check, writes a signal row when they have, and posts a Slack summary to my signals channel.
A champion or customer moving to a new company is one of the highest-conversion outbound signals in B2B. They already know your product; their new employer doesn't. This agent surfaces those moments at 9am every day before anyone on your team has logged in.
REFERENCE DOCS
- agntdata API documentation: https://agnt.mintlify.app/apis/overview
- LinkedIn endpoint used: `Get_Profile_Data_By_URL` — full profile fetch including current company.
- agntdata Slack connector: `slack_post_message`.
ABOUT MY MOTION
- Who do you track? Champions (people who advocated for you at past employers) + customers (current users you don't want to lose track of when they move).
- Slack channel for signals: <SIGNALS_CHANNEL_ID>
- Daily run time: <CRON_LOCAL_TIME> (default 9am UTC)
- Batch size: <BATCH_SIZE> (default 20 oldest-checked contacts per run — keep bounded so the API spend is predictable)
DATABASE (the blueprint creates these on first run)
- `tracked_contacts` — the people you're watching. Columns: id, linkedin_profile_url (unique), full_name, current_company (snapshot of where they were last time we checked), current_role, champion_relationship (free text, e.g. "champion at example-co", "customer at AcmeCorp Q3 2025"), last_checked_at, created_at.
- `job_change_signals` — one row per detected change. Columns: id, tracked_contact_id (FK), full_name, linkedin_profile_url, old_company, new_company, new_job_title, champion_relationship, detected_at.
WHAT TO BUILD
- A scheduled agent (claude-haiku-4-5 — comparison is mechanical, no judgment).
- A TypeScript skill named `check_job_changes` that does all the work: SELECT oldest 20 from tracked_contacts → for each, Get_Profile_Data_By_URL → compare new company to stored current_company → if different, INSERT to job_change_signals + UPDATE tracked_contacts.current_company + last_checked_at → if same, just update last_checked_at → return a structured summary.
- The agent's only jobs: invoke the skill, format the Slack summary, post it.
DELIVERY (Slack summary format)
```
🔍 Job-Change Monitor — <today's date>
✅ Checked: <N> contacts | 🚨 Signals: <M> new job changes
(if signals > 0, list top 3 by champion_relationship priority — "champion" rows before "customer" rows):
• <full_name> (<champion_relationship>): <old_company> → <new_company> as <new_job_title> — <linkedin_profile_url>
(if signals == 0):
No job changes detected today.
Data written to job_change_signals table.
```
GUARDRAILS
- Never hallucinate contact data — only use what the skill's JSON output returns.
- If the skill errors, post the error to Slack and exit (don't retry, don't fake-succeed).
- Bound the batch to 20 per run — keeps API spend deterministic and gives every contact ~3 weeks between checks if you track a few hundred.
- Don't email the contact from this agent. This is the detection layer; activation is a separate agent.
When you're ready, ask me the ABOUT MY MOTION block.Paste into OpenClaw to scaffold this agent. Tweak the inputs and goal at the top of the prompt.
How to build it
7 steps. Each one links to the underlying agntdata endpoints — open them in a new tab to inspect parameters and pricing as you build.
One key gets you LinkedIn + Slack connector + meta-agent builder. Credit-based.
Install the Slack connector. Pick the channel where signals should land (a dedicated #signals channel works well — less noise).
This is the hand-curated piece. You decide who's worth watching. Format: LinkedIn URL + name + champion_relationship descriptor (e.g. "champion at Acme 2024", "customer at Beta"). CSV import is easiest.
Click "Build with agnt_". The meta-agent asks Slack channel + cron + batch size, then deploys the agent + skill + creates the two tables.
Trigger a one-off run on a small subset. Verify the Slack summary format + that the diff logic catches a known recent change (seed with a contact whose current_company you set to their previous employer).
`0 9 * * *` default (9am UTC). Change timezone via the schedule timezone field — Slack timing should match when your team starts their day.
This agent is detection only. Pair with a webhook-triggered sequencer or a job-change-specific outreach writer that reads job_change_signals and writes the right opener ("saw you just joined <new_company> — congrats. last time we talked, <product> was solving X for you at <old_company> — want to set it up at <new_company>?").
Endpoints used
The agntdata endpoints this blueprint depends on. All available with one API key.
Get Profile Data By URL
/get-profile-data-by-url
Per-contact profile fetch — current company comes from the most-recent experience entry. Compared to the stored snapshot to detect changes.
View endpoint docsShip this blueprint today
One click spins up a builder session prefilled with this blueprint's spec. We'll ask you a handful of personalization questions, then generate the agent.
Related blueprints
Browse all →Hand any X username to this agent and get back a qualified, ICP-scored lead with a verified email and a resolved LinkedIn profile.
Hand any LinkedIn profile URL to this agent and get back a qualified, ICP-scored lead with a verified email and a website summary attached.
Hiring for a role is the loudest buying signal LinkedIn gives away for free. This agent watches it daily — captures every company posting jobs in your buyer's role family, plus the hiring team behind each post — and writes them to a deduped pipeline of accounts + decision-makers ready for outreach.