auto-research-public
Autonomous cold email campaign launcher. Takes one target company domain, scrapes their…
The 3-bullet creative ideas email. Produces three per-company bullets that each sit in a slot the operator defined up front, so the model fills in the company detail and never invents a new idea. Triggers on "creative ideas campaign", "three ideas email", "I had a few ideas for
$ npx -y skills add growthenginenowoslawski/coldoutboundskills --skill playbook-creative-ideas --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/playbook-creative-ideasContext preview
The summary Claude sees to decide when to auto-load this skill.
The 3-bullet creative ideas email. Produces three per-company bullets that each sit in a slot the operator defined up front, so the model fills in the company detail and never invents a new idea. Triggers on "creative ideas campaign", "three ideas email", "I had a few ideas for
name: playbook-creative-ideas description: The 3-bullet creative ideas email. Produces three per-company bullets that each sit in a slot the operator defined up front, so the model fills in the company detail and never invents a new idea. Triggers on "creative ideas campaign", "three ideas email", "I had a few ideas for you", "3 bullets", "use cases for their business", "what could they build with us". Outputs creative_idea_1, creative_idea_2, creative_idea_3 plus a rendered bullet block.
> Best practice, not law. Override when the campaign calls for it; note the practice once and proceed.
**Use when** the premise is "I looked at your business and had three ideas."
**Not when** one personalized sentence tops an otherwise fixed email (`playbook-ai-specificity`), or the hook is an event.
**Output:** `creative_idea_1 = "a production scheduler that plans injection molding runs against cleanroom capacity"`
**The operator names what bullets 1, 2 and 3 are about. Those slots stay fixed for every lead, and the model only fills a slot with a detail true of that company.** It never picks a subject, never adds a fourth, and never writes an idea the seller cannot deliver.
The measurement that settles this:
| Approach | Usable | |---|---| | Free-form "have three ideas about this company" | **2/5** | | Slot-defined, operator-named subjects | **21/23 (91%)** |
That is the entire playbook. Everything else is plumbing.
1. **What is bullet 1 about?** Name the one thing the seller builds, sells or runs that goes in slot 1 — **in the seller's own words.** 2. What is bullet 2 about? 3. What is bullet 3 about? 4. **For each slot, what specific detail about the prospect has to appear?** 5. **What must never appear?** Competitors, dollar figures, headcounts, named customers, anything the seller does not actually do. 6. **Hand-write the examples.** See the gate below.
⚠️ **If the operator cannot name three slots, this is the wrong playbook for the campaign.** Do not fill the gap yourself. **An idea the operator did not ask for is an idea the seller cannot deliver on the call.**
**AI never drafts the exemplars it is graded against.**
If the model writes the examples, the examples encode the model's instincts rather than the seller's offer, and every downstream grading round is measuring the model against itself. This is the same contamination failure that forced a verdict to be withdrawn in `playbook-pricing-page` — a few-shot block that contains the answers is not a prompt, it is an answer key.
`creative_idea_1/2/3` (140 chars each) + `evidence_1/2/3` + `creative_ideas_block`.
**Abstain is `""`.** Never a sentinel string, never `null`.
⚠️ **Any empty bullet excludes the row** into a separate non-ideas campaign, because a sequencer cannot pin a lead to a specific sequence variant. A 3-bullet email with 2 bullets is not a degraded version of this campaign — it is a different email.
**Namespace the custom fields per client** (`creative_idea_1_<client>`). The JSON keys stay unchanged; the suffix is on the pushed field. Near-duplicate custom-field names coexist silently on the same lead record, and that is a very quiet way to send last client's bullets.
**Only the evidence text is sourced.** Order: an internal company description, then a **free** company-enrichment source, then client-owned tables, then a company-search API, then a rendering proxy.
**A row still thin after all of that abstains.**
⚠️ **Gate each rung on the evidence being SHORT (`length < 200`), not on it being empty.** A two-sentence boilerplate description is technically non-empty and produces three generic bullets that read like a mail merge. Emptiness is the wrong test.
**VERDICT: PASS 5/6 (83%)** on the script path, **plus 27/32 (84%) grading real production rows across seven live campaigns.**
The second number is the more useful one: it is out-of-sample, at real volume, across different sellers.
⚠️ **Script path only.** Run the Clay acceptance check in `clay-table.md` before trusting a Clay build.
Re-test if the usable rate drops under 60% on 20 rows, or evidence coverage drops under 80%.
**Outside Clay: a nano-class model at minimal reasoning effort.** Measured at 1,195 input and 148 output tokens per row: **$0.12 per 1,000 rows against $0.27 for a mini-class model — nano wins by 2.2x.** Params: `max_completion_tokens=1200`, no `temperature`, JSON response format, flex tier for batch.
**Inside Clay: `gpt-4o-mini`.** This is the opposite of the outside-Clay choice and it is deliberate.
⚠️ **A Clay AI column set to a nano-class model with reasoning unset is the worst of both worlds:** it burns thousands of hidden reasoning tokens per row at standard pricing, runs roughly **19x more expensive than mini**, and **frequently returns blank content** because the reasoning eats the token budget. Clay has no flex or batch tier to soften that.
So build on mini, **write the model name in the column description**, and budget **$0.27/1k** for the Clay path rather than $0.12. Switch only if you have opened the column and **confirmed** you can set reasoning to its lowest value — then record the accepted value so the whole team stops paying mini prices.
output contract.
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…