GTM knowledge

How to Run an ICP Simulation in Claude

A step-by-step guide to finding your ICP inside Claude with icp-gtm-sim, our free and open-source skill that runs your product brief against a factorial grid of simulated buyer personas.

Shivansh Vishwakarma · 8 min read · September 27, 2026

A step-by-step guide to finding your ICP inside Claude with icp-gtm-sim, our free and open-source skill that runs your product brief against a factorial grid of simulated buyer personas. Ask Claude "who is my ICP?" and you will get a thoughtful paragraph. It will probably say something like "mid-market B2B companies with a sales team". That is an opinion. You cannot build a list against it, and you have no way to tell whether it came from your product brief or from the most common answer on the internet. An ICP simulation works differently. Instead of asking one question, it puts your brief in front of hundreds of simulated buyers, each defined by attributes you could actually target, and reads which combination responds. We packaged this method as a free, open-source skill called icp-gtm-sim. This guide shows how to install it in Claude and run your first ICP simulation.

What the skill does

You give it a product brief, landing page, pitch or launch post. The skill:

  1. Builds a factorial audience. Role × company size × industry × revenue × geography, or whichever factors fit your product. Every valid combination is included once, and impossible companies are dropped.
  2. Has every persona react to your exact copy. Each one scores relevance, clarity and trust, picks an intent, names the attribute that drove the decision and states their strongest objection.
  3. Checks the results before analyzing them. It flags flat scores, stereotyped responses and batch noise before any segment claim is made.
  4. Reports who it lands with. A specific conjunction you can build a list against, what is holding it back, and what to test next in the real world. One run answers two questions at once: who is this for? and does the message work?

Option 1: Claude Code (recommended for larger runs)

Claude Code is the best place to run the skill. It can run code to build the persona grid and compute segment averages, and it can spawn subagents to run persona batches in parallel. Both matter once your grid gets into the hundreds. Install as a plugin. Inside Claude Code, run: /plugin marketplace add ResearchifyLabs/icp-gtm-sim /plugin install icp-gtm-sim@researchify-labs Or install with skills.sh. From your terminal: npx skills add ResearchifyLabs/icp-gtm-sim Or install manually. The skill is a single SKILL.md file. Clone it into your skills folder: git clone https://github.com/ResearchifyLabs/icp-gtm-sim ~/.claude/skills/icp-gtm-sim Run it. Ask in plain language, for example "Use icp-gtm-sim to find who this is for", followed by your brief. You can also call it directly with /icp-gtm-sim when installed as a skill, or /icp-gtm-sim:icpgtm-sim when installed as a plugin.

Option 2: The Claude app (web and desktop)

Skills also work in the Claude app. Runs happen inside a single conversation, so start with a smaller grid and widen it once the setup looks right. Step 1: Open Settings → Capabilities and make sure Code execution and file creation is turned on. Skills need it. Step 2: Download SKILL.md from the icp-gtm-sim repository. Put it in a folder named icp-gtm-sim (the folder name must match the skill name) and zip the folder. Step 3: Go to Customize → Skills, click +, then Create skill, then Upload a skill, and select the zip. Step 4: Start a new chat and paste your brief with a request like "Use icp-gtm-sim to find who this is for." On Team and Enterprise plans, an admin may need to allow skills and code execution in the organization settings first.

Running your first ICP simulation

Here is what a run looks like, step by step.

Step 1: Give it the real brief

Paste the actual copy, not a description of it. A description tests Claude's summary of your product, not your product. The skill checks three things and raises only what is actually wrong:

Does the copy name its own audience? If your brief says "built for growth marketers", growth marketers will score highest. That is not a finding; it is the answer leaking into the question. The skill will offer to strip those lines and keep the problem description, so the audience is discovered rather than stated. Is there a price or a commercial ask? Price is what separates "I would start today" from "I would need approval". Without it, intent is guesswork. What format is it? A cold email gets four seconds. A landing page gets scrolled. Personas judge accordingly. It will also ask whether you already have a hypothesis about who this is for. If you name one, the report owes you a verdict on it.

Step 2: Shape the audience

The skill proposes 4–5 factors inferred from your brief and shows you the grid: industry Software · E-commerce · Professional services · Manufacturing company_size 1-10 · 11-50 · 51-200 · 201-1000 · 1001+ role Founder/CEO · Marketing lead · Product lead · Sales lead geography United States · Europe · India revenue_usd 0-1m · 1-10m · 10-100m · 100m+ It lists the impossible combinations it dropped (a 1–10 person company above $10M revenue is noise, not a segment) and tells you how many personas remain. You edit in plain language: "drop manufacturing", "add healthcare", "only US", "add funding stage". The count updates each time. Two rules make the result usable. Every factor must be something you could filter a list by, so "innovation appetite" is out and "company size" is in. And company attributes stay separate from person attributes, because the ICP usually lives in their interaction: not "marketing leads", not "11–50 employees", but marketing leads at 11–50 employee companies.

Step 3: Run it

Every persona reacts to your exact copy and produces one row: relevance: does this address a problem I actually have? clarity: did I understand what it is and does? trust in the product: do I believe it works as described? trust in the method: do I believe the underlying approach delivers? (used when the mechanism is in question, such as an AI product) intent: ignore, reject, inspect details, start a self-serve trial, or bring it to the team driver: the one attribute that decided the intent objection: their strongest reservation, in their words Scores use two decimals on a 1.00–5.00 scale. Whole numbers pile most answers onto one or two values and hide real differences between segments.

The intent ladder matters too. The line between self-serve trial and bring to team tells you whether a segment can buy on its own or needs budget, procurement or a peer's approval. That is often the difference between a segment that converts and one that stalls. In Claude Code, the skill splits the list into batches of about 40 and runs them in parallel subagents, with personas assigned to batches at random so batch drift does not look like a segment effect.

Step 4: Let it check the data

Before interpreting anything, the skill looks at the table it just produced: Does each score actually vary, or are most rows sitting on one value? Did at least three intent codes appear? Did any segment land on a single intent? Real audiences are never that clean. That is a stereotype about the label, not a response to your copy. Is one attribute driving more than ~60% of decisions? If a check fails, it tells you what that implies and fixes the setup instead of presenting a tidy ranking built on noise.

Step 5: Read the report

The report is short and structured: The answer. Who it lands with, how strongly and how much to trust it. Who it lands with. A segment table with the number of personas behind every figure. What is holding it back. Separated into wrong audience (fix the targeting) and wrong message (fix the copy or proof). Your hypothesis. Supported, not supported or not answerable, with the number. What I would do next. One real-world check and one message variant worth testing. Run stats. Personas, batches, total time and tokens used. You also get the full results as a CSV, which is your audit trail for any later comparison.

How to read an ICP simulation

A few principles make the output far more useful. Look for conjunctions, not single factors. "Founders" is not an ICP. "Founders at 11–50 person B2B SaaS companies under $1M revenue" is. The skill cross-tabulates role × company size first for exactly this reason. Separate audience problems from message problems. Weak relevance means the wrong audience. Weak clarity or trust means the right audience and the wrong message. Only weak relevance justifies dropping a segment. Disqualifying a segment because your copy confused them is an expensive mistake. Untested is not unattractive. A segment nobody simulated looks identical, in the output, to a segment everybody disliked. If a segment matters to you, add it to the grid. Treat results as hypotheses. These are model predictions about attribute labels, not real customers. The output is a sharper hypothesis and a shorter list of things to test with real people.

Iterate

The first run mostly tells you which question to ask second. Change the audience. Change the message. Or compare two variants head to head: the skill can compare runs, as long as both tested the same copy, format and price. See how to run a GTM message simulation in ChatGPT for a walkthrough of message comparisons, which works the same way in Claude.

When to use the hosted version

The skill is free and open source, and it will stay that way. Large grids are token-heavy, though, and the skill reports exact time and token usage at the end of every run so you can see it. If you are running simulations regularly, Tesemble runs the same method with more accurate, cheaper and faster results, with a visual report you can slice by any attribute. Every new account starts with 10,000 free credits. See how Tesemble works.

FAQ

What is an ICP simulation? An ICP simulation tests your product brief against a defined audience of

synthetic buyer personas, built from attributes like role, company size, industry and revenue, and identifies which combination of attributes responds most strongly.

Is the icp-gtm-sim skill free? Yes. It is open source under the MIT license and available on GitHub.

Does it work in the Claude app or only in Claude Code? Both. Claude Code is better for larger runs because it can run code and spawn subagents to process persona batches in parallel. In the Claude app, enable code execution, upload the skill as a zip and start with a smaller grid.

How many personas can it simulate? The skill runs every valid combination of your factor levels

once. If more than 10,000 combinations remain, it randomly samples 10,000 while keeping every level represented.

Can I use it for messaging as well as ICP? Yes. The same run tells you who the message lands with

and whether the message itself works. It can also compare two message variants against each other.

Are simulated personas real customers? No. They are model predictions about attribute labels. Use

the output to sharpen your hypothesis and shorten the list of things you test with real people. Read more in Synthetic audiences: when they work and when they don't.

You've got more GTM ideas than you can test.

Test them with Tesemble first.

Try for free

10,000 free credits at launch. No credit card.