auto-research-public
Autonomous cold email campaign launcher. Takes one target company domain, scrapes their…
Produces a copy-ready clause about a company adding people to one specific department in the last 6 months, plus the department-level headcount counts that drive the segment gate. Triggers on "they're hiring", "hiring surge", "growing their sales team", "scaling the team",
$ npx -y skills add growthenginenowoslawski/coldoutboundskills --skill playbook-hiring-surge --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/playbook-hiring-surgeContext preview
The summary Claude sees to decide when to auto-load this skill.
Produces a copy-ready clause about a company adding people to one specific department in the last 6 months, plus the department-level headcount counts that drive the segment gate. Triggers on "they're hiring", "hiring surge", "growing their sales team", "scaling the team",
name: playbook-hiring-surge description: Produces a copy-ready clause about a company adding people to one specific department in the last 6 months, plus the department-level headcount counts that drive the segment gate. Triggers on "they're hiring", "hiring surge", "growing their sales team", "scaling the team", "headcount growth", "who added SDRs", "companies that just built a marketing team". Outputs hiring_surge_line, a lowercase second-person clause that completes "Noticed <line>."
> All rules here are best practice, not law. Override any of them when the campaign calls for it; note the best practice once and move on.
**Use when:** the angle is "you are scaling this team right now".
**Do not use when:** you want the job ad itself (`playbook-job-posting-language`), the person who just started (`playbook-new-in-role`), or money rather than people (`playbook-fundraising`).
**One-line output:** `hiring_surge_line = "your sales team has 8 people who started new roles in the last six months"`
1. **It is role starts, not hires. Measured 28.3% internal moves.** The filter counts people whose *current role started* in the window — promotions, re-titles and lateral moves included. Ship `started new roles`; never `hired`, `added`, `brought on`. 2. **Never buy a LinkedIn URL with enrichment credits to feed this.** The company-enrichment action that returns one costs ~8 credits per company and was, by three orders of magnitude, the largest cost line here. Use a free LinkedIn URL off your intake payload where you have one, and the bare normalized domain everywhere else. Both are free. 3. **The gate is a ratio PLUS absolute floors:** `role_starts >= 2 && dept_total >= 4`. This cuts the qualifying segment from 14.6% to **5.2%**, so plan roughly **96,000 source rows per 5,000-lead campaign**. Do not loosen it to hit volume; source more rows.
A hiring surge is a **department-level** fact, not a company-level one. "This company grew from 200 to 260 people" is almost useless in copy, because the reader cannot tell whether it means anything to them. "Your sales team has 8 people who started new roles in the last six months" is specific, checkable, and implies a budget owner. This playbook produces the second kind.
The whole signal comes from one Clay **table action**, `Find Employee Headcount by Criteria`, which is **free on every Clay plan**. It counts how many people currently at a company match a filter set, and it accepts a recency filter (`current_role_max_months_since_start_date`), so running it twice per department gives you the department total and the department's last-6-months intake in one pass. No other vendor does department-sliced recency counts at zero marginal cost. That is why this playbook has exactly one source and no expensive fallback.
March".
pattern extends to engineering, RevOps, customer success or finance.
The filter counts people whose **current role started** in the last 6 months. That set includes external hires, internal promotions, title changes and lateral moves. LinkedIn also generates a new role start date when someone merely edits or re-titles an existing position.
The second sentence is a factual claim about the reader's own team that they can disprove instantly if three of those eight were promotions, and cold copy does not survive that.
**The over-count rate is measured: 28.3%.** Of 276 people whose current role started inside a six-month window across 18 companies, **78 were already working at that company before the window opened**. Sliced by title: sales-titled **24.4%**, marketing-titled **34.6%**. And that is a *lower bound* — the detector only sees a prior role that started 7+ months ago, so a February joiner promoted in July counts as a joiner. Real examples from the audit: a Business Development Representative who became a Mid-Market Account Executive; a Manager of Customer Success who became a Senior Manager; a Project Manager II who became a Project Manager III.
On one company in the audit, **5 of the 7 recent sales starters were internal moves** — "you hired 3 people for sales" would have been wrong about most of the evidence behind it.
Treat every count as an **upper bound** on hires. Roughly 1 reply in 4 has a right to say "nobody joined my team, I was promoted", and the locked prompt is written so that reply contradicts nothing you sent. If a client insists on "you hired", show them the 28.3% first. That is an operator sign-off, not a default.
**Re-measuring the confound on a new ICP is free** (about 40 searches). Per company, run two people searches: one for `current_role_max_months_since_start_date: 6` (the population the gate counts), one for everyone already there before the window (`include_past_experiences: true` with a `role_range_end_month` of `YYYY-MM`). Intersect on the LinkedIn profile URL: anyone in both started a new role at a company they already worked at.
| Field | Type | Source | Required? | |---|---|---|---| | `company_linkedin_url` | string | your intake payload, as a free formula column | yes when present — this is the preferred and free identifier | | `company_domain` (fallback) | string, bare lowercase, no `www` | your list, via
Open-source Claude Code skills for cold email infrastructure, lead sourcing, copywriting, and operations. Built by GrowthEngineX from patterns across 1,000+ real B2B campaigns. 31 skills that work together.
Repo: growthenginenowoslawski/coldoutboundskills
Autonomous cold email campaign launcher. Takes one target company domain, scrapes their…
Use the Blitz API to find decision-makers at specific companies when you already have a list…
Creates cold email copy through a stepwise confirmation process. Use when writing email…
Generates 15-25+ cold outbound campaign ideas with targeting strategies, AI personalization…
Single "start here" orchestrator for new cold email operators. Asks infrastructure-status…
Complete beginner-friendly cold email toolkit. Walks from zero to launched campaign — domain…