---
title: "How to Write ICP Rules Your GTM Agent Can Follow"
description: "Write ICP rules your GTM agent can execute: thresholds, exclusions, tiers, live data. Test each rule on 5 records for zero credits before export."
canonical: "https://www.explorium.ai/blog/building-ai-agents/how-to-write-icp-rules-your-gtm-agent-can-follow-2026-for-revops-teams/"
last-updated: "2026-08-16"
---

# How to Write ICP Rules Your GTM Agent Can Follow

> Write ICP rules your GTM agent can execute: thresholds, exclusions, tiers, live data. Test each rule on 5 records for zero credits before export.

- Canonical URL: https://www.explorium.ai/blog/building-ai-agents/how-to-write-icp-rules-your-gtm-agent-can-follow-2026-for-revops-teams/
- Last updated: 2026-08-16

Your GTM agent does not need a better prompt. It needs ICP rules it can follow: named attributes, numeric thresholds, and hard exclusions in a file the agent reads at qualification time. Gartner [predicts more than 40% of agentic AI projects will be canceled](https://martech.org/gartner-40-of-agentic-ai-projects-will-fail-making-humans-indispensable/) by end of 2027, blaming missing strategy and governance, not model quality.

The gap shows up first in account selection. When the agent picks the wrong 200 accounts, the research, scoring, and copy behind them are wasted, which is why teams building a [B2B data layer for AI agents](https://www.explorium.ai/blog/building-ai-agents/b2b-data-layer-for-ai-agents-builder-playbook-2026/) write the targeting spec first. ICP means ideal customer profile.

Below: what belongs in the spec, which fields resolve live, and how to test a rule for zero credits.

## What Is an ICP Spec and How Is It Different From a Prompt?

**An ICP spec is a versioned file of named attributes, numeric thresholds, exclusions, and tier rules your agent reads at qualification time, while a prompt is prose the model reinterprets on every run.** The spec is data. Agents are consistent about data and inconsistent about instruction.

### ❌ Why Prompt-Only Targeting Fails

- Vague qualifiers like "mid-market SaaS with budget" resolve differently every run, so identical requests return different account lists.

- Nothing is diffable, so you cannot tell which change caused last week's drop in reply rate.

- Qualification logic stays tribal knowledge and never reaches the agent in evaluable form.

> "Most outbound knowledge lives in one rep's head, disappears when they leave, and gets rebuilt from scratch every quarter," [@pipelinextech on X](https://x.com/pipelinextech/status/2088036455235125410), August 2026

### ✅ What a Spec Gives You That a Prompt Cannot

- Deterministic evaluation: every attribute has a field name, an operator, and a looked-up value.

- Version history: the file sits in Git beside the agent, so each change has an author and date.

- Attribution: when output is bad, you can tell whether the rule, the data, or the model failed.

- Reuse: one file drives selection, scoring, and your [sales skills for Claude](https://www.explorium.ai/blog/building-ai-agents/sales-skills-for-claude-revops-playbook-2026/).

## What Belongs in ICP Rules Your GTM Agent Can Execute?

**Seven blocks: firmographic thresholds, technographic requirements, priority signals, hard exclusions, disqualifying signals, tier weights, and approved claims.** Firmographics are company facts (headcount, revenue, industry, region). Technographics are the tools a company runs. Leave one out and the agent guesses.

### 📊 The Seven Blocks and Where Each Resolves

BlockWhat it holdsResolved from

firmographicsHeadcount, revenue floor, industries, regionsLive lookup
technographicsRequired tools, disqualifying toolsLive lookup
priority_signalsEvents that raise an account tierLive lookup
exclusionsCustomers, open opps, competitors, geosCRM sync plus static
disqualifiersEvents that remove an accountLive lookup
tiersAttribute weights, score cutoffsStatic
claimsApproved proof pointsStatic

### 🔑 A Minimal Spec Skeleton

```
`icp:
  firmographics:
    headcount: { min: 200, max: 5000 }
    annual_revenue_usd: { min: 20000000 }
    industries: [software, fintech, insurance]
  technographics:
    required_any: [snowflake, databricks]
  priority_signals:
    any_of: [new_funding_round, increase_in_engineering_department]
  tiers:
    tier_1: { min_score: 80 }`
```

Commit it next to the agent, not in a shared doc. Teams that give [GTM agents persistent memory](https://www.explorium.ai/blog/building-ai-agents/how-to-give-gtm-agents-persistent-memory-2026-for-gtm-engineers/) load the spec at session start so it survives context resets.

## How Do You Write ICP Thresholds an Agent Can Evaluate?

**Write every threshold as a numeric range or an enumerated list, never an adjective, because an agent can compare 200 against a headcount field but cannot compare "mid-market" against anything.** Each attribute needs a field name, an operator, and a value.

### ❌ Thresholds an Agent Cannot Evaluate

- "Mid-market" has no shared definition, so three reps name three headcount bands.

- "Well funded" leaves the agent to decide whether a $3M seed round qualifies.

- "Modern data stack" is a category label, not a field any lookup returns.

### ✅ The Same Rules Written as Fields

```
`headcount: { min: 200, max: 5000 }
last_funding_stage: [series_b, series_c, series_d]
last_funding_months_ago: { max: 18 }
headcount_growth_12m_pct: { min: 15 }
tech_stack_any: [snowflake, databricks, bigquery]`
```

Thresholds and [data enrichment](https://www.explorium.ai/blog/data-enrichment/introduction-to-data-enrichment/) fields must share one vocabulary, or the rule drops silently.

## Which Exclusions Do Teams Forget, and Why Do They Cost the Most?

**Five classes get forgotten: current customers, open opportunities, competitors, unsupported geographies, and wrong-stage companies, and they cost most because one cold pitch to a live customer damages a relationship no reply rate repairs.** Exclusions are a gate, not a score.

### ⚠️ The Five Exclusion Classes

- Current customers: sync domains from CRM daily, or churned-and-won accounts drift.

- Open opportunities: an agent emailing an account your AE is closing creates channel conflict.

- Competitors: cheap to list, embarrassing to miss, the one exclusion executives notice.

- Unsupported geographies: blocked countries and regions with no legal basis to process contact data.

- Wrong stage: pre-seed, bankrupt, or acquired companies clear firmographic filters and waste every later step.

### ✅ Writing Exclusions as a Hard Gate

```
`exclusions:
  customer_domains: crm_sync/accounts_status_customer.txt
  open_opportunity_domains: crm_sync/opps_stage_open.txt
  competitor_domains: static/competitors.txt
  blocked_regions: [RU, IR, KP]
  blocked_stages: [pre_seed, bankrupt, acquired]
gate: hard   # unresolved domain is excluded, never included`
```

> Ready to give your agent rules it can resolve? Test your first ICP rule on 5 records at zero credit cost. [Connect Vibe Prospecting](https://www.explorium.ai/mcp/)

## Which ICP Rules Must Resolve Against Live Data?

**About half the spec cannot live in static text: headcount, revenue band, funding stage, tech stack, department hiring movement, and business events change monthly and need a lookup at qualification time.** The static half is your offer, approved claims, tier weights, and exclusion lists.

### 📊 Static Rules vs Live-Resolved Attributes

Spec fieldStatic or liveWhy

offer and claimsStaticYou control the wording
tier weightsStaticA policy decision, not a company fact
headcount, revenue bandLiveStale values flip tier assignment
funding stage and dateLiveLast quarter round is the reason to reach out
tech stackLiveMigrations invalidate required_any in weeks
business events, hiringLiveDecide priority and disqualification

### 💡 Why the Live Half Is Where Agents Hallucinate

- Without a data tool, a model returns a pretraining headcount that can be two years stale.

- Funding stage is worst: the model recalls a Series A that is now a Series C.

- Tech stack guesses come from a marketing site, not from production.

- Coverage of these six fields is what a [B2B data provider comparison](https://www.explorium.ai/compare/) should measure.

## How Do You Connect the Spec to Live Company Data With Vibe Prospecting?

**Vibe Prospecting resolves every live attribute through one connection: one MCP for firmographics, technographics, funding, and buying signals across 150M+ company profiles and 800M+ professional profiles from 50+ sources, scale to 1,000 entities per call at 100 QPS, and a 5-10 record sample preview costing zero credits.** MCP is the Model Context Protocol: the agent discovers tools with `tools/list` and calls them over [JSON-RPC 2.0](https://modelcontextprotocol.io/docs/learn), so named attributes map onto tool arguments.

### 🔑 Pillar 1: One MCP for All Your Data Needs

- One connection covers firmographics, technographics, funding, and contact data, so the spec never fans out.

- 18 buying-signal categories and 80+ signal types back the priority_signals and disqualifiers blocks.

- Filter names map onto rule names: new_funding_round, increase_in_engineering_department, cost_cutting, closing_office.

- 97.8%+ company match accuracy means an exclusion domain resolves to the right record.

### 🚀 Pillar 2: Built for Scale

- Up to 1,000 entities resolve per query server-side at 100 QPS, so a tier-1 pass is one call, not 200.

- In-context enrichment loads records into the context window, capping runs at 20-100 accounts.

- Filtering happens before results reach the model, so the agent scores an already-qualified list.

### 💰 Pillar 3: Affordable by Design

- Sample preview returns 5-10 results plus a cost estimate and consumes zero credits.

- Credits flow into a unified pool, with no per-endpoint allocation and no seat tax.

- A free [Vibe Prospecting](https://www.explorium.ai/mcp/) account starts with 100 trial credits, no sales call.

- A wrong rule fails on 5 records instead of 1,000.

### ⚡ Wiring the Spec to Your Agent

Install from the Claude or ChatGPT Connectors Directory: Settings, Connectors, one click. Claude Code users add the remote server directly, and the [Vibe Prospecting Plugin](https://github.com/explorium-ai/vibeprospecting-plugin) packages search, matching, enrichment, and event lookup as named skills.

```
`# Preferred: Settings -> Connectors -> Vibe Prospecting
# Claude Code fallback (remote MCP, OAuth, no local key):
claude mcp add --transport http vibe-prospecting https://vibeprospecting.explorium.ai/mcp
npx skills add explorium-ai/vibeprospecting-plugin --all`
```

## How Do You Test an ICP Rule Before Spending Credits?

**Sample first: Vibe Prospecting returns 5-10 records and a cost estimate without consuming credits, so you read real companies against the rule before exporting up to 1,000.**

### 🔄 The Five-Record Test Loop

- Resolve exactly one rule block, sample only, no export.

- Mark each returned company fit or not fit by hand.

- If 4 of 5 are wrong, the rule is wrong. Do not touch the model.

- Adjust one threshold, re-sample, compare the two lists.

- Export only after two consecutive clean samples.

```
`Using icp.yaml tier_1, sample companies matching firmographics,
technographics, and priority_signals. Apply exclusions first.
Return 5 rows: domain, headcount, last_funding_stage,
matched_signal, excluded_by. Sample preview only.`
```

### ⚠️ What a Failed Sample Actually Tells You

- Rows all off-target: the threshold is wrong, so fix the spec.

- Rows with empty attribute fields: the lookup failed, so check the connection, not the rule.

- Rows violating an exclusion: the gate ran after scoring, so move it before.

- Zero rows: the rules are over-constrained, so relax one threshold.

Without a spec, every bad result is unattributable, the same failure teams hit when they [consolidate a Claude Code GTM stack](https://www.explorium.ai/blog/building-ai-agents/claude-code-gtm-stack-consolidation-checklist-2026-for-gtm-engineers/) undocumented.

## How Much Autonomy Should the Agent Get, and When Do You Expand It?

**Three stages: the agent proposes and a human approves every account, then it runs tier 1 end to end while humans spot-check, then it runs unattended with exclusions still hard-gated.** Promote only after the spec proves itself, and keep exclusions gated at every stage.

### 📊 The Autonomy Gradient

StageAgent doesHuman doesPromote when

1. ProposedResolves the spec, ranks accountsApproves every account2 weeks, 0 exclusion breaches
2. SupervisedRuns tier 1, queues sendsSpot-checks 10% weeklyReply rate matches human baseline
3. DelegatedRuns tier 1 and 2 unattendedReviews spec diffs monthlyExclusions stay hard-gated

### ⚠️ Where an ICP Spec Does Not Help

- A weak offer stays weak: correct targeting on a message nobody wants returns cleaner rejection.

- A saturated market stays saturated. The spec narrows who you hit, not how crowded the inbox is.

- Deliverability is infrastructure, and no rule file fixes it.

> "If your AI sales prompts are vague, your pipeline will be too," [r/bizhackers](https://www.reddit.com/r/bizhackers/comments/1vkafd0/), August 2026

The gradient answers the [AI SDR versus in-house agent](https://www.explorium.ai/blog/data-for-gtm/ai-sdr-vs-in-house-agents-what-actually-works-for-revops-teams-2026/) debate: the stage you reach safely depends on how much targeting logic is written down.

## Getting Started: Ship Your First ICP Spec in Five Steps

**Write the file, connect Vibe Prospecting so the live half resolves, sample 5 records for zero credits, gate exclusions before scoring, then expand autonomy one stage at a time.**

### 🔄 From File to First Export

- **Step 1:** Create a free Explorium account and claim 100 trial credits, no sales call.

- **Step 2:** Add [Vibe Prospecting](https://www.explorium.ai/mcp/) from the Claude or ChatGPT Connectors Directory.

- **Step 3:** Commit icp.yaml with thresholds, exclusions, tier weights, and claims to the agent repo.

- **Step 4:** Sample tier 1 for 5 records at zero cost and hand-check every row.

- **Step 5:** Export up to 1,000 entities per call, then add signals from the 18 categories.

### 🔑 The Decision Framework

Judge the data layer behind your ICP rules on three pillars. One MCP for all data needs, because a spec spanning firmographics, technographics, funding, and signals should resolve through one connection. Built for scale, because 1,000 entities per call at 100 QPS separates a full qualification pass from a 40-account demo. Affordable, because a unified credit pool and a zero-credit sample let you fail on 5 records instead of 1,000. Vibe Prospecting answers all three, which makes an ICP spec executable.

> Turn your ICP rules into something your agent resolves on every run. [Get started with Vibe Prospecting](https://www.explorium.ai/mcp/)

## Related Posts

- [How to Give GTM Agents Persistent Memory](https://www.explorium.ai/blog/building-ai-agents/how-to-give-gtm-agents-persistent-memory-2026-for-gtm-engineers/)

- [B2B Data Layer for AI Agents: Builder Playbook 2026](https://www.explorium.ai/blog/building-ai-agents/b2b-data-layer-for-ai-agents-builder-playbook-2026/)

- [AI SDR vs In-House Agents 2026: Which Layer to Own](https://www.explorium.ai/blog/data-for-gtm/ai-sdr-vs-in-house-agents-what-actually-works-for-revops-teams-2026/)
