How to create an ICP for a B2B service firm
A guide for agencies, consultancies and dev shops: describe when a client starts looking for help, who to turn away, and tie each ICP to a service.

If you run an agency or a dev shop, you probably know which clients you work with best, but it isn’t written down anywhere. When you try to write it down, the obvious starting points are industry, company size and region. In a service firm that isn’t enough. A client buys a service because something happened in their business, and industry and size only narrow down the list of companies that could buy at all.
In this post I’ll walk through a five-step method, a template you can copy with a filled-in example, and our own ICP with the mistakes we found in it.
What an ICP is in a service firm
An ICP (ideal customer profile, often called an ideal client profile in services) describes the company your service helps best. In a service firm it answers three questions: what kind of company buys, in what situation it starts looking for help, and who you don’t want to work with. A buyer persona is something else. It describes a person in that company who decides on the purchase or will use the service, for example the owner or the head of marketing.
A service is bought in a specific situation
You can compare products in a table: features, price, integrations. Services are usually bought differently. A company starts looking for an agency, a dev shop or a consultant when something changes. A new project starts, the person who handled something in-house leaves, the board sets a new goal, or a deadline turns out to be closer than the team can handle. Without a change like that, the same company, in the same industry and of the same size, usually isn’t looking for a vendor.
That’s why the most important field in a service firm’s ICP is the buying situation: the moment the client starts actively looking for help. Next to it, write down the triggers: events after which that situation appears. A good trigger can be seen from the outside (a new person in a role, an announced project, a job posting), or the client describes it as a dated event, for example “our developer left in March”. A state such as “the company feels pressure” is not a trigger yet. We made that mistake ourselves, as you’ll see in the example below.
The buying mode helps too. A client buys reactively when they have an urgent problem or a risk, and proactively when they want growth or an improvement. The same service can be bought both ways. A proactive purchase also has its moment, such as a new budget year or a new strategy. The mode shapes the tone of your proposal and how fast the client expects an answer.
Here is what a well-written buying situation can look like. The example is made up to show the format, for a dev shop that rebuilds warehouse systems:
- Company: logistics firms that run their own warehouse.
- Buying situation: before peak season it turns out the warehouse system won’t handle the order volume and the in-house IT team can’t rebuild it in time, so the company looks for a vendor with a fixed deadline.
- Triggers: a new warehouse announced, the developer who knew the system leaves, a hiring post for an IT manager, the system slowing down during the last order peak.
Firmographics (industry, size, location) are still useful as a filter, but they won’t tell you when to call.
Tie each ICP to a service, not to the whole firm
It’s easy to end up with one ICP for the whole firm, usually very broad, along the lines of “B2B companies, 20–200 people”. Yet the same company buys different services for different reasons. A marketing strategy is bought by a board that wants to enter a new market. A system implementation is bought by an operations director whose old process stopped working. Each of them asks different questions in a sales call.
I recommend tying an ICP to one specific service. Broad firmographics then matter less, because the buying situation of that one service narrows them down. If you sell three services, start with the one you most want to grow.
How to create an ICP in 5 steps
Ideally you have at least 7–8 clients of that service: your five best and a few difficult ones. If you have fewer, see the questions at the end of this post. Step 2 needs conversations, so steps 1 and 2 take anywhere from a few days to a few weeks, depending on how quickly you can book them. Steps 3–5 fit into one or two meetings. Invite the person who sells and the person who runs projects. In a small firm that is often you and one project manager.
1. Pick your best and your most difficult clients of this service
Pick five clients whose projects went well, who paid on time, referred you and whom your team enjoyed working with. Add two or three where the work was difficult or unprofitable. The first group gives you the buying situation, the second your “we don’t take” list. Client names stay with you; only the shared traits go into the ICP.
2. Ask your best clients about the last time
Talk to your best clients; for the difficult ones, a conversation with your team is enough. Instead of asking a client what they need, ask about a moment before you worked together, when they had the problem your service solves: “Tell me about the last time you had this problem, before you started looking for help. What did you do and how long did it take?” The client then describes a concrete event, and the buying situation comes out of that description.
A few follow-up questions:
- What changed in the company right before you started looking for help?
- How urgent was it, and what would have happened if you had waited?
- Who else did you consider, including doing it yourselves or putting it off?
- Where did you look for a vendor, and how did you hear about us?
- Who had to approve the choice of vendor, and who worked with us afterwards?
- Last: what did the problem cost you?
How to set it up in practice:
- Send the client a short note: you’re refining your offer and want to ask about their experience; the call takes about 30 minutes and there’s no selling in it.
- Ideally the call is run by someone who didn’t sell to this client. In a small firm where the owner sells everything, it’s enough to say up front that this time you’re only listening.
- Take notes or record, but record only with the client’s consent.
- Ask about cost at the end of the call, as in the list above. Clients often don’t know it; then ask about their team’s time or what the problem pushed back in their schedule.
3. Write down what repeats
After the conversations, look for patterns. Write down:
- the firmographics your best clients share: industry, size, location,
- fit criteria: traits beyond industry and size that tell you a company fits (for example the kind of system they run or how they work),
- the buying situation in one sentence,
- 3–5 triggers, meaning events, not states,
- the buying mode: reactive, proactive or both,
- current alternatives: the kinds of options the client considered (another firm, their own team, putting it off), plus company names if they come up,
- who decides on the purchase and who uses the service,
- where clients looked for a vendor.
4. Write down who you don’t take
From the conversation with your team about difficult clients, list your disqualifiers. Typical signals are in the next section.
5. Fit it on one page
Put the result on one page, so sales can read it before a call and marketing before writing (in a small firm that’s often the same person). For each person who decides on the purchase or will use the service, add a short persona: job title, what they’re responsible for, what worries them about the purchase, and what they ask in a sales call.
The “we don’t take” list is part of the ICP
In a service firm, disqualifiers matter as much as the description of a good client. A client who doesn’t fit the service takes up your team’s time for the whole project. That’s why you should write the disqualifiers together with the people who deliver projects. Sales knows a client only from the calls before the contract is signed, while the team knows how that kind of client behaves after a few months of work.
Typical disqualifying signals:
- the client can’t say how they’ll know the project worked,
- nobody on the client’s side has time for decisions and approvals,
- the scope is to be “figured out along the way”, but the budget is fixed,
- the client wants the cheapest vendor for work you sell as expert work,
- an industry or technology where you have no experience or examples.
ICP template for a service firm
These are the fields I recommend filling in. A document or a spreadsheet is enough.
| Field | What to write |
|---|---|
| Service | The one service this ICP is tied to |
| Company | Industry, size, location (as a filter) |
| Fit criteria | Traits beyond firmographics that tell you a company fits |
| Buying situation | The moment the client starts looking for help, in one sentence |
| Triggers | 3–5 events you can see from the outside or hear in a conversation |
| Buying mode | Reactive (urgent problem, risk), proactive (growth, improvement) or both |
| Current alternatives | Kinds of options: another firm, own team, putting it off; names if they come up |
| Who decides and who uses | Roles plus a short persona for each: job title, what they’re responsible for, what worries them, what they ask |
| Disqualifiers | Signals that make you say no |
| Where they look for a vendor | Referrals, search, events, communities |
A filled-in template
This example is made up to show what a finished result looks like. It continues the dev shop from the section on the buying situation.
| Field | Example |
|---|---|
| Service | Rebuilding a company’s own warehouse system |
| Company | Logistics and distribution firms that run their own warehouse |
| Fit criteria | A custom-built warehouse system rather than an off-the-shelf product; a small IT team that maintains it but has no time to rebuild it |
| Buying situation | Before peak season it turns out the system won’t handle the order volume and the IT team can’t rebuild it in time, so the company looks for a vendor with a fixed deadline |
| Triggers | A new warehouse announced; the developer who knew the system leaves; a hiring post for an IT manager; the system slowing down during the last order peak |
| Buying mode | More often reactive (the season is coming), sometimes proactive (a new warehouse planned for next year) |
| Current alternatives | Their own IT team working overtime, an off-the-shelf warehouse system, postponing changes until after the season |
| Who decides and who uses | The operations director decides together with the board; the warehouse manager and the IT team use the result. The operations director is responsible for on-time shipping, worries about downtime in peak season and asks about the deadline and a fallback plan |
| Disqualifiers | Nobody on the client’s side for approvals; a deadline shorter than a realistic rebuild; a fixed price expected for an unknown scope |
| Where they look for a vendor | Referrals from other logistics firms, search, industry trade fairs |
How to spot triggers once your ICP is written
A written ICP also helps you notice triggers at companies that aren’t your clients yet. You don’t need special tools for that. These are enough:
- job changes at companies on your list, visible on LinkedIn,
- job postings that reveal a new project or a staffing gap,
- press releases and news on those companies’ websites,
- conversations with current clients and partners who know other firms in the industry.
Write down every trigger you notice next to the company name, in your CRM or a plain spreadsheet, with the date and the source. Once a week, go through the list and pick the companies worth reaching out to.
Example: our ICP and what’s missing from it
B2BForce is a free set of ready-made instructions for AI assistants, built for service firms, and our paid service is setting it up in a client’s firm. For that service we wrote an ICP: small service firms of up to 50 people, meaning agencies, dev shops, studios and consultancies. The decision is made by the owner or the person responsible for operations or marketing. We wrote it before we had our first documented implementations of this service, so it’s a hypothesis, not the result of the five steps in this post.
As triggers we wrote down:
- pressure on productivity: the firm wants to work like a bigger team without hiring,
- frustration with generic AI tools: the team has tried them, but they lacked a structure that fits a service firm,
- sensitivity to vendor lock-in: the firm wants to own its files and its data,
- no time to set it up themselves.
When we compared this with the template in this post, three problems came up. First, pressure, frustration and lack of time are states. Behind the frustration there is an event (“the team tried AI tools and gave up on them”), but we didn’t write it that way, so the next version should name the events after which these states appear. Second, the third point on the list isn’t a trigger at all but a fit criterion: it says who fits, and it belongs in the “Fit criteria” field. Third, several template fields are missing: the buying situation in one sentence, the buying mode, current alternatives, the people who use the service and their personas, the “we don’t take” list and where clients look for a vendor. We treat the corrected list of triggers as a hypothesis to test in conversations with our first clients:
- the firm wins a new client or project its current team can’t handle without hiring,
- the team tries an AI tool and drops it after a few weeks,
- the person who prepared proposals or content leaves the firm.
An ICP as a file for an AI assistant
If you don’t use AI assistants, you can skip this section: the template in this post works in a plain document.
If your firm uses AI assistants that work on your files, such as Claude Code, Cursor or Codex, you can keep your ICP as a file the assistant reads before writing content or a message to a prospect. That’s how B2BForce works: a free set of ready-made instructions (called skills) for service firms, released under the MIT license. The marketing-icp instruction creates one ICP and one to three personas for a chosen service and saves them in the workspace/marketing/icp/ folder. Instructions that write content or emails to prospects first check whether the service has an ICP, and ask for one if it doesn’t. The code is on GitHub.
Frequently asked questions
What’s the difference between an ICP and a buyer persona?
An ICP describes a company and the situation in which it buys. A persona describes a person in that company who decides on the purchase or uses the service: their job title, what they’re responsible for, what worries them and what they ask. A service firm needs both, because a service purchase is often decided by more than one person.
How many ICPs should a service firm have?
Usually one per service. The exception: if the same person buys two services in the same situation, they can share an ICP. To start, one is enough, for the service you most want to grow.
What if I have only a few clients of a service?
Talk to the ones you have and add companies you want to work with. A profile like that is a hypothesis, just like our ICP in the example, so test it in every sales call and keep correcting it.
How often should I update my ICP?
After every win or loss that surprised you, and once a quarter.
Summary
Pick one service, book calls with your best clients and ask them about the last time they needed help. Go through the difficult cases with your team. From the answers you’ll write down the buying situation, the triggers and your “we don’t take” list, and the template in this post is enough to start.
Every method on this blog also runs as a skill in the open-source B2BForce repo. About the repo