Icp Onboarding logo

Icp Onboarding

Community
growthenginenowoslawski
icp-onboarding

Conversational intake for cold email campaigns. Interviews the user about their business, ICP (Ideal Customer Profile), offer, lead magnets, and hard vs soft filters. Outputs a structured `client-profile.yaml` that every other skill in the repo reads from. Use at the very start of a new campaign or when onboarding a new business. Triggers on "onboard me", "set up my ICP", "new client", "new business intake", "help me define my ICP".

Overview

Publishergrowthenginenowoslawski
Repositorycoldoutboundskills
Skill nameicp-onboarding
Stars
757
Forks
267
Bundled files
2
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 2 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by growthenginenowoslawski on GitHub. Read the source before you install it.

Installation

Install the Icp Onboarding AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/icp-onboarding
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/growthenginenowoslawski/coldoutboundskills.git /tmp/coldoutboundskills
mkdir -p .claude/skills
cp -r /tmp/coldoutboundskills/skills/icp-onboarding .claude/skills/icp-onboarding
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Icp Onboarding in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Icp Onboarding on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Icp Onboarding is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

ICP Onboarding

Conversational intake. The user arrives with a business; this skill produces a client-profile.yaml every other skill in the repo consumes. Without it, downstream skills guess at targeting and write generic copy.

Why this exists

Most cold email fails because the sender didn't define the ICP tightly enough. "B2B SaaS founders" is not an ICP. "VP of RevOps at 50-500 person B2B SaaS companies in the US that raised Series B in the last 12 months" is an ICP — you can put it into Prospeo and get a list.

This skill forces that precision up front. It also separates hard filters (must match) from soft preferences (nice-to-have), because the #1 mistake beginners make is treating every ICP criterion as required, ending up with a list of 200 leads instead of 5,000.

Inputs

Either:

  • Website URL of the user's business (skill will scrape + infer a lot)
  • Plain description ("I sell X to Y") if no website

Outputs

A single file: ~/cold-email-ai-skills/profiles/<business-slug>/client-profile.yaml

Steps

1. Ask for the website URL FIRST (required)

Before any interview questions, ask:

"What's the website of the business you're running cold email for?"

If the user provides a URL:

bash
npx tsx scripts/scrape-website.ts --url=https://example.com --out=/tmp/scrape.json

Then READ the scraped JSON and immediately produce a one-paragraph summary for the user:

"Based on your website, here's what I understand about your business:

sells <product/service in one sentence> to <who they sell to, based on case studies + homepage>. Their core value proposition appears to be . Notable social proof: <logos, metrics, awards>. Pricing signal: <free tier / self-serve / enterprise / unclear>.

Proposed ICP starting point: <titles + industries + size inferred from case studies>.

Does that sound right? Any corrections before I start the interview?"

This summary is NOT the final ICP — it's the anchor. The user's corrections here save 5+ minutes in the interview.

If the user has no website:

"OK, no website. Give me a two-sentence description of what you sell and to whom. I'll use that as the anchor for the rest of the interview."

2. Interview the user (using scraped context)

Ask these questions in order. Do NOT batch them — wait for each answer before asking the next. Keep answers short. Use the scraped content to PRE-FILL proposed answers where possible, and ask the user to confirm or correct.

  1. What do you sell in one sentence? Pre-fill: "Based on your site, you sell <X>. Confirm or correct?"
  2. Who is your single best customer — name them. (Helps anchor everything else. If they hesitate, ask for the last 3 customers by revenue or fit. If case studies on the website name customers, propose those.)
  3. What job title buys this? (Push back if they say "CEO" for anything >50 employees. Probably not true.)
  4. Headcount range — hard minimum and hard maximum? (E.g. 20-500. Not "enterprise" — actual numbers.)
  5. Industries — in or out? (Use the Prospeo industry taxonomy: see references/prospeo-industries.md. Mark IN or OUT — no fuzzy.)
  6. Geography — countries only, or specific states/regions?
  7. Any triggers that matter? (Recent fundraise, new hires in a role, tech on website, recent product launch, specific Google Ads spend.)
  8. Any disqualifiers? (Competitors, existing customers, partners — domains to exclude.)
  9. Your offer / hook — what are you asking them to do? (E.g. "book a 15-min call", "try our free audit", "reply with a Y and I'll send details".)
  10. Lead magnet — what can you legally give away for free? (If they don't have one, invoke /lead-magnet-brainstorm skill.)
  11. Tone — casual or formal? Peer-to-peer or vendor-to-buyer?
  12. Banned words / legal constraints (any industries that restrict language, e.g. healthcare, finance, crypto).

3. Translate into Prospeo filters

Take the answers and draft Prospeo-compatible filters:

  • Job titles → exact titles + common synonyms (VP of Sales = VP Sales = Head of Sales = SVP Sales)
  • Industries → match the 256 valid Prospeo industry names. See references/prospeo-industries.md.
  • Headcount → map to Prospeo buckets (1-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, 10001+)
  • Geography → country codes or state lists

4. Split hard vs soft

For each criterion, explicitly ask: "If you find someone who matches everything except this, do you reach out anyway — yes or no?"

  • YES → soft preference (log it, but don't filter on it)
  • NO → hard filter (must match)

Common answers:

  • Job title: usually HARD
  • Industry: usually HARD (if targeting a vertical)
  • Headcount: usually SOFT on the edges (one person above the cap is often fine)
  • Trigger (funded, hired, etc): ALMOST ALWAYS SOFT — it's a personalization signal, not a filter

5. Write client-profile.yaml

Use this schema:

yaml
business:
  name: <business name>
  website: <url>
  one_liner: <what they sell>
  tone: <casual|formal|peer-to-peer>

offer:
  primary_cta: <what you ask the lead to do>
  lead_magnet: <free thing you can give>
  value_prop: <why they should care, one sentence>

icp_hard_filters:
  job_titles:
    - <exact title>
    - <synonym>
  industries_in:
    - <prospeo industry>
  industries_out:
    - <prospeo industry>
  headcount_min: <int>
  headcount_max: <int>
  countries:
    - <country code>
  states: []  # US only, optional
  excluded_domains:
    - <competitor.com>
    - <existing-customer.com>

icp_soft_preferences:
  triggers:
    - recent_fundraise
    - new_hire_in_role
    - tech_installed: <tech>
  personas_to_prioritize:
    - <e.g. "Director-level over VP-level at <200 headcount">

legal:
  banned_words: []
  regulated_industry: false

created_at: <YYYY-MM-DD>

6. Save + confirm

Save to ~/cold-email-ai-skills/profiles/<business-slug>/client-profile.yaml. Print the yaml back to the user and ask "look right?" before ending the conversation.

Common gotchas

  • Don't accept "SMBs" as an answer. Ask for headcount numbers.
  • "Our ICP is anyone who needs X" = they don't have an ICP. Push for a named-customer example.
  • Titles: always include synonyms. "VP of Talent" without "VP of People", "Head of Talent", "Chief People Officer" will miss 60% of matches.
  • Prospeo industries: exact match required. "Manufacturing" is not a valid Prospeo industry. "General Manufacturing" is. See references/prospeo-industries.md.
  • Triggers are NEVER hard filters. If you make "must have raised in last 6 months" a hard filter, your list shrinks 20x and most of those companies are already getting pitched by everyone.

What to do next

With client-profile.yaml in hand, the user's next skill is /cold-email-starter-kit (manual first campaign) or /auto-research-public (automated daily campaigns).

Files

  • references/prospeo-industries.md — full list of 256 valid Prospeo industry names
  • references/example-profiles/ — 3 example client-profile.yaml files (B2B SaaS, local SMB, agency)
  • scripts/scrape-website.ts — minimal website scraper (homepage + linked pages)

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Icp Onboarding AI skill do?

Conversational intake for cold email campaigns. Interviews the user about their business, ICP (Ideal Customer Profile), offer, lead magnets, and hard vs soft filters. Outputs a structured `client-profile.yaml` that every other skill in the repo reads from. Use at the very start of a new campaign or when onboarding a new business. Triggers on "onboard me", "set up my ICP", "new client", "new business intake", "help me define my ICP".

Why use Icp Onboarding on TypingMind?

Because you install it once and use it with any model. Icp Onboarding is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Icp Onboarding in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/growthenginenowoslawski/coldoutboundskills/tree/main/skills/icp-onboarding. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Icp Onboarding?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Icp Onboarding?

As many as you like. As long as a model supports skills, you can use Icp Onboarding with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Icp Onboarding AI skill free?

Yes. It is published on GitHub by growthenginenowoslawski under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇