Рынок и конкуренты: сегменты, ICP, TAM/SAM/SOM, позиционирование
Трек до этой статьи разбирал вопросы «что болит» (https://courses.digitable.life/post/product-management/01-discovery-and-research/), «как измерить» (https://courses.digitable.life/post/product-management/02-metrics/), «что делать раньше» (https://courses.digitable.life/post/product-management/03-prioritization/) и «куда идти» (https://courses.digitable.life/post/product-management/04-strategy-and-roadmap/). Все они молча предполагали, что поле игры уже выбрано: известно, для кого продукт, сколько таких людей и против чего вы играете.
На практике именно этот слой чаще всего пропущен. Команда полгода делает отличный продукт для сегмента, который физически не может окупить её зарплату; или считает конкурентом соседний стартап, пока 80% сделок проигрываются Excel’ю. Эта статья закрывает пробел: как посчитать рынок так, чтобы число что-то решало, как выбрать сегмент, как читать конкурентов и как сформулировать позиционирование, которое переживёт следующий квартал.
1. Зачем продакту считать рынок
1.1. Число ради решения, а не ради слайда
Стандартная ошибка — начать с вопроса «какой у нас TAM». Правильный порядок обратный: сначала называется решение, потом считается число, которое это решение меняет. Решений всего три, и они требуют разных чисел:
| Решение | Какое число нужно | Точность |
|---|---|---|
| Входить ли в новый сегмент/рынок | достижимая выручка за 3 года (SOM) | порядок величины |
| Сколько вкладывать в сегмент | выручка на сегмент против стоимости команды | ±50% |
| Какой сегмент выбрать первым | сравнение сегментов между собой | относительная |
Обратите внимание: во всех трёх случаях абсолютная точность не нужна. Нужно понять, отличается ли ответ от порога в разы. Оценка «рынок 40–90 млн, а команда стоит 60 млн в год» полезна; оценка «рынок 12,4 млрд» бесполезна, потому что не сравнивается ни с чем.
1.2. Почему цифра из отчёта не работает
«Мировой рынок BI — 30 млрд USD к 2030» — это не ваш рынок. В таком числе:
- чужая сегментация: аналитик считал всё, что продаётся под словом BI, включая лицензии Oracle и консалтинг внедренцев;
- чужая география и валюта (курс, покупательная способность, платёжные ограничения);
- чужая единица: иногда это выручка вендоров, иногда — бюджеты покупателей, иногда — «стоимость проблемы», которую никто никому не платит;
- прогноз, то есть экстраполяция, а прогнозы рынков систематически оптимистичны — их заказывают те, кому нужен растущий график.
Практический вывод: отчёт годится как верхняя граница здравого смысла («мы не можем взять больше, чем весь рынок»), но не как основа решения. Основу считают снизу — из клиентов, которых вы физически можете достать.
1.3. Формулировка, которая делает расчёт честным
Замените вопрос «какой у нас рынок» на:
Сколько денег в год может принести один сегмент, если мы достанем ровно ту его часть, до которой дотягивается наш канал, при цене, которую мы уже видели в сделках?
Каждое слово тут — проверяемое утверждение, и каждое можно ошибиться отдельно и об этом узнать. Именно так расчёт превращается из презентации в модель.
2. Сегментация: группировать по работе, а не по демографии
2.1. Что такое сегмент строго
Сегмент — это группа клиентов, у которых одинаковая работа (job), похожая альтернатива и похожая готовность платить. Если две группы решают одну задачу, но одна сравнивает вас с ручным Excel, а вторая — с внедрённым за 20 млн энтерпрайз-решением, это разные сегменты, даже если компании одного размера и из одной отрасли.
Формально сегментация полезна, когда выполнено:
внутрисегментная дисперсия поведения << межсегментная дисперсия поведения
То есть люди внутри сегмента ведут себя похоже, а сегменты между собой различаются. Если ваши «малый бизнес» и «средний бизнес» имеют одинаковые retention, ARPU и сценарии — это не сегменты, а строки в CRM.
2.2. Оси, по которым режут
Фирмографика удобна (данные есть в CRM), но сама по себе слабо предсказывает поведение. Рабочее правило: режьте по работе и экономике, а фирмографику используйте как прокси, чтобы сегмент можно было адресовать в рекламе и в продажах.
2.3. Пять критериев годного сегмента
- Различимость. Вы можете сказать про конкретную компанию, входит она в сегмент или нет. Если критерий «продвинутые пользователи» — сегмент негодный: непроверяемо.
- Достижимость. Существует канал, через который вы до них дотягиваетесь за разумные деньги.
- Однородность. Внутри сегмента одна работа и одна альтернатива.
- Платёжеспособность. У проблемы есть бюджет — хотя бы в виде зарплаты людей, которые сейчас делают это руками.
- Достаточность. Сегмент способен оплатить команду, которая его обслуживает, с запасом.
Отсутствие пятого пункта — самая дорогая ошибка: продукт получается любимым и убыточным.
2.4. Сравнение сегментов по своим данным
Пока сегментов нет в проде — считают по интервью и сделкам. Как только есть хоть какая-то база, сегменты сравнивают числами. Минимальная модель: выручка на клиента, удержание, стоимость привлечения и стоимость обслуживания.
from dataclasses import dataclass
@dataclass(frozen=True)
class Segment:
name: str
accounts: int # сколько таких клиентов доступно нашему каналу в год
arpa_year: float # средняя годовая выручка с клиента, ₽
gross_margin: float # валовая маржа, 0..1 (за вычетом инфраструктуры и поддержки)
retention_year: float # доля клиентов, доживающих до следующего года
cac: float # стоимость привлечения одного клиента, ₽
win_rate: float # доля сделок, которые мы выигрываем в этом сегменте
def segment_economics(s: Segment, horizon_years: int = 3, discount: float = 0.15) -> dict:
"""Дисконтированная валовая прибыль с одного клиента и окупаемость привлечения.
Модель геометрическая — она завышает LTV на длинном горизонте (см. 02-metrics),
поэтому горизонт жёстко ограничен тремя годами: это тот срок, за который
команда должна доказать, что сегмент рабочий.
Время: O(horizon_years), память: O(1).
"""
lifetime_value = 0.0
alive = 1.0
for year in range(horizon_years):
lifetime_value += alive * s.arpa_year * s.gross_margin / (1 + discount) ** year
alive *= s.retention_year
# Полная стоимость привлечения одного клиента с учётом проигранных сделок.
effective_cac = s.cac / max(s.win_rate, 1e-9)
return {
"segment": s.name,
"ltv3": round(lifetime_value),
"cac_eff": round(effective_cac),
"ltv_cac": round(lifetime_value / effective_cac, 2),
"ceiling_year": round(s.accounts * s.arpa_year * s.win_rate),
}
segments = [
Segment("Микробизнес", accounts=40000, arpa_year=18000, gross_margin=0.75,
retention_year=0.45, cac=6000, win_rate=0.30),
Segment("SMB", accounts=6000, arpa_year=180000, gross_margin=0.78,
retention_year=0.80, cac=90000, win_rate=0.25),
Segment("Средний+", accounts=700, arpa_year=900000, gross_margin=0.70,
retention_year=0.90, cac=600000, win_rate=0.18),
]
for row in (segment_economics(s) for s in segments):
print(row)
# {'segment': 'Микробизнес', 'ltv3': 22712, 'cac_eff': 20000, 'ltv_cac': 1.14, 'ceiling_year': 216000000}
# {'segment': 'SMB', 'ltv3': 355687, 'cac_eff': 360000, 'ltv_cac': 0.99, 'ceiling_year': 270000000}
# {'segment': 'Средний+', 'ltv3': 1663277,'cac_eff': 3333333, 'ltv_cac': 0.50, 'ceiling_year': 113400000}
Разбор результата важнее самих чисел. Все три сегмента в этом примере не окупаются на трёхлетнем
горизонте: LTV/CAC меньше 3 (обычный ориентир) и даже меньше 1,2. При этом «потолок выручки» у
SMB выглядит самым красивым — 270 млн в год. Именно так возникает классическая ловушка: команда
выбирает сегмент по размеру потолка и через год обнаруживает, что каждый новый клиент приносит
убыток. Правильные следующие шаги — не «выбрать лучший», а изменить одну из переменных: поднять
win rate (позиционирование, раздел 6), снизить CAC (канал, https://courses.digitable.life/post/product-management/10-go-to-market-and-launch/)
или поднять удержание (https://courses.digitable.life/post/product-management/02-metrics/).
3. ICP: профиль идеального клиента
3.1. Чем ICP отличается от персоны
- Персона — про человека: цели, контекст, поведение. Нужна, чтобы проектировать интерфейс (см. https://courses.digitable.life/post/product-management/06-ux-and-requirements/ и трек https://courses.digitable.life/post/ux-design/02-personas-and-jtbd/).
- ICP — про организацию или аккаунт: какие клиенты приносят деньги и остаются. Нужен, чтобы решать, кого привлекать, кому говорить «нет» и какие фичи не делать.
В B2C аналог ICP — «профиль удержавшегося пользователя»: не «кто зарегистрировался», а «кто дожил до 90-го дня и платит».
3.2. Как вывести ICP из данных, а не из головы
Идея простая: взять признаки аккаунтов и сравнить их распределение среди «хороших» клиентов (дожили, платят, расширились) и всех остальных. Признак полезен, если он поднимает долю хороших — это lift.
from collections import defaultdict
def icp_lift(accounts: list[dict], is_good, features: list[str]) -> list[tuple]:
"""Lift признака = P(хороший | признак) / P(хороший).
accounts — список словарей с категориальными признаками.
Lift > 1 означает: среди аккаунтов с этим значением доля хороших выше базовой.
Время: O(|accounts| * |features|), память: O(число уникальных значений).
"""
base = sum(1 for a in accounts if is_good(a)) / len(accounts)
good = defaultdict(int)
total = defaultdict(int)
for a in accounts:
for f in features:
key = (f, a[f])
total[key] += 1
if is_good(a):
good[key] += 1
rows = []
for key, n in total.items():
if n < 30: # маленькие ячейки шумят: 3 из 4 — это не сигнал
continue
p = good[key] / n
rows.append((key[0], key[1], n, round(p, 3), round(p / base, 2)))
return sorted(rows, key=lambda r: -r[4])
# Пример вывода на реальных данных выглядит так:
# ('интеграция_с_1С', 'да', 412, 0.71, 2.03) ← сильный признак ICP
# ('размер', '50-200', 980, 0.55, 1.57)
# ('канал', 'партнёр', 210, 0.49, 1.40)
# ('отрасль', 'ритейл', 640, 0.38, 1.09) ← почти базовый уровень, не признак
# ('канал', 'реклама', 1500,0.19, 0.54) ← антипризнак
Три предостережения, без которых из этой таблицы делают ерунду:
- Корреляция не причинность. «Подключил интеграцию» может быть не причиной удержания, а его следствием: остаются те, кому продукт и так подошёл. Проверять — экспериментом или квазиэкспериментом (https://courses.digitable.life/post/product-management/08-analytics-and-decisions/, https://courses.digitable.life/post/data-analytics/10-causality/).
- Смещение выжившего. Признаки считаются по тем, кто до вас дошёл. Про сегменты, до которых ваш канал не дотягивается, данные молчат.
- Самосбывающийся ICP. Если продажи уже фокусируются на ритейле, ритейл и окажется в данных. Раз в полгода полезно осознанно проверять «неканонический» сегмент небольшим экспериментом.
3.3. Что меняется, когда ICP есть
- В discovery: интервью берут у ICP, а обратную связь не-ICP явно помечают и взвешивают меньше.
- В приоритизации:
Reachв RICE (https://courses.digitable.life/post/product-management/03-prioritization/) считается по ICP, а не по всей базе — иначе фичи для шумного меньшинства всегда выигрывают. - В продажах: появляется право дисквалифицировать сделку. Это самый недооценённый эффект: сделки вне ICP отравляют роадмап на годы вперёд (подробно — https://courses.digitable.life/post/product-management/11-b2b-and-enterprise/).
4. TAM, SAM, SOM: считаем снизу вверх
4.1. Определения без тумана
- TAM (Total Addressable Market) — вся выручка, если бы у вас были 100% всех, у кого есть эта работа, при вашей цене.
- SAM (Serviceable Addressable Market) — часть TAM, до которой достаёт ваша модель: география, язык, регулирование, канал, размер клиента, платформа.
- SOM (Serviceable Obtainable Market) — часть SAM, которую вы реально возьмёте за горизонт планирования (обычно 3 года) при вашей ёмкости привлечения и вашем win rate.
4.2. Top-down против bottom-up
Top-down: «рынок 30 млрд, возьмём 1% = 300 млн». Метод плох не арифметикой, а тем, что «1%» — это не решение и не гипотеза, а желание. Никакая работа команды не связана с этим числом.
Bottom-up: «в стране 6 000 компаний с 50–200 сотрудниками в наших отраслях; в год мы дотягиваемся до 1 200 через два канала; конверсия в сделку 22%; средний чек 180 000 ₽ в год». Каждое число можно проверить и каждое можно улучшить конкретным действием. Именно поэтому bottom-up — рабочий метод продакта, а top-down — материал для проверки порядка величины.
компании / рабочие места / транзакции"] B --> C["Оценить N — сколько таких единиц
в доступной географии"] C --> D["Цена: из реальных сделок,
а не из прайса"] D --> E["TAM = N × цена"] E --> F["Отсечь недостижимое:
язык, регулирование, платформа, размер"] F --> G["SAM"] G --> H["Ёмкость канала за год
× конверсия × горизонт"] H --> I["SOM"] I --> J{"SOM ≥ 3× годовой стоимости
команды через 3 года?"} J -- "нет" --> K["Сегмент не окупает команду:
менять сегмент, цену или модель"] J -- "да" --> L["Считать вторым способом
и искать расхождение"] L --> M["Решение о входе"]
4.3. Расчёт с проверкой двумя способами
Главная гигиена оценки рынка: посчитать двумя независимыми способами и объяснить расхождение. Если способы дают 90 млн и 800 млн — ошибка не в округлении, а в определении единицы счёта.
def bottom_up_som(
reachable_accounts_per_year: int,
win_rate: float,
price_year: float,
years: int,
annual_retention: float,
) -> dict:
"""SOM снизу вверх: накопленная база платящих с учётом оттока.
Модель: каждый год добавляется когорта новых клиентов; предыдущие тают
с коэффициентом annual_retention. Считаем выручку последнего года —
именно она сравнивается со стоимостью команды.
Время: O(years), память: O(1).
"""
base = 0.0
for _ in range(years):
base = base * annual_retention + reachable_accounts_per_year * win_rate
return {"accounts_year3": round(base), "revenue_year3": round(base * price_year)}
def top_down_check(market_report_rub: float, our_slice: float) -> float:
"""Проверка порядка величины: доля от отчётного рынка. Только как sanity check."""
return market_report_rub * our_slice
som = bottom_up_som(
reachable_accounts_per_year=1200,
win_rate=0.22,
price_year=180_000,
years=3,
annual_retention=0.80,
)
print(som)
# {'accounts_year3': 641, 'revenue_year3': 115380000}
print(round(top_down_check(30_000_000_000, 0.004)))
# 120000000
Два способа дали 115 и 120 млн — расхождение в пределах 5%, порядок величины подтверждён. Это не значит, что оценка верна; это значит, что она внутренне непротиворечива.
4.4. Диапазон вместо точки
Точечная оценка рынка всегда ложна. Минимально честная форма — три сценария с явными допущениями:
| Сценарий | Ёмкость канала | Win rate | Цена | Выручка 3-го года |
|---|---|---|---|---|
| Пессимистичный | 800 | 0,15 | 150 000 | 45 млн |
| Базовый | 1 200 | 0,22 | 180 000 | 115 млн |
| Оптимистичный | 1 800 | 0,30 | 220 000 | 290 млн |
Решение принимается по пессимистичному сценарию («выживем ли, если всё пойдёт средне-плохо»), а планы по найму — по базовому. Оптимистичный нужен только для одного: понять, есть ли вообще смысл в этой ставке, если всё сложится хорошо. Если оптимистичный сценарий не окупает команду, дальше можно не считать.
5. Конкуренты: вы играете против альтернативы, а не против компании
5.1. Кто ваш конкурент на самом деле
Конкурент — это всё, что клиент может нанять на ту же работу. Для B2B-продукта типичный список: прямой аналог, соседняя категория (её «достаточно хорошая» функция), внутренняя разработка, аутсорс, Excel и ручной процесс, и наконец — ничего не делать. Последний вариант выигрывает чаще всех: у статус-кво нулевая стоимость внедрения и нулевой риск для того, кто принимает решение.
Практическая проверка: в CRM у проигранных сделок посмотрите поле «причина». Если там почти нет «решили пока ничего не менять» — скорее всего, поле заполняют формально.
5.2. Карта конкуренции
Полезная карта строится не «по фичам», а по двум осям, которые важны клиенту при выборе. Например, для инструмента аналитики это «нужен ли инженер для внедрения» и «глубина анализа»:
Такая карта отвечает на вопрос, который нельзя получить из таблицы фич: куда вы двигаетесь и почему клиент выберет именно эту точку. Если ваша точка ничем не отличается от соседней — позиционирование не спасёт, отличаться нужно в продукте.
5.3. Матрица фич и почему она опасна
Таблица «у нас есть, у них нет» кажется объективной, но провоцирует гонку паритета: каждая недостающая галочка выглядит как задача. Обезвредить её можно, наложив модель Кано (https://courses.digitable.life/post/product-management/03-prioritization/):
- must-be — отсутствие убивает сделку (SSO, экспорт, права доступа). Их закрывают до паритета и не более того;
- performance — по ним конкурируют численно (скорость, лимиты, цена);
- attractive — то, чего у конкурентов нет и что вызывает «ого». Только они создают дифференциацию, и только на них тратят инновационный бюджет.
Правило: паритет по must-be, преимущество в одном performance, монополия в одном attractive. Попытка выиграть по всем колонкам — это стратегия «без стратегии» из https://courses.digitable.life/post/product-management/04-strategy-and-roadmap/.
5.4. Пять сил Портера — коротко и с оговоркой
Модель Портера («How Competitive Forces Shape Strategy», HBR, 1979) описывает, кто забирает прибыль отрасли: сила покупателей, сила поставщиков, угроза новых игроков, угроза заменителей, интенсивность соперничества. Для продакта она полезна одним конкретным вопросом: что мешает следующему игроку повторить вас за квартал?
Честный ответ обычно один из: сетевые эффекты, данные, накопленные в продукте, стоимость переключения, интеграции и дистрибуция, регуляторные лицензии, бренд. «Мы просто лучше сделаны» — не барьер: это фора на 6–12 месяцев. Ограничение модели: она описывает устойчивую отрасль и плохо работает на молодых рынках, где категория ещё формируется, — там важнее скорость обучения.
5.5. Win/loss-анализ: единственный честный источник о конкурентах
Мнения о конкурентах дешёвы, данные из сделок — дороги и полезны. Минимальная дисциплина: по каждой закрытой сделке фиксируется исход, конкурент и причина; раз в квартал это агрегируется.
from collections import Counter
from math import sqrt
def win_loss_report(deals: list[dict], min_n: int = 20) -> list[dict]:
"""Win rate против каждого конкурента с грубым доверительным интервалом.
deals: [{'competitor': 'BI-А', 'won': True, 'reason': 'цена'}, ...]
Интервал — нормальное приближение; при n < 20 не показываем вовсе,
потому что «выиграли 2 из 3» не означает ничего.
Время: O(|deals|), память: O(число конкурентов).
"""
total, wins = Counter(), Counter()
reasons = {}
for d in deals:
c = d["competitor"]
total[c] += 1
if d["won"]:
wins[c] += 1
else:
reasons.setdefault(c, Counter())[d["reason"]] += 1
out = []
for c, n in total.items():
if n < min_n:
continue
p = wins[c] / n
half = 1.96 * sqrt(p * (1 - p) / n)
out.append({
"competitor": c,
"n": n,
"win_rate": round(p, 2),
"ci": (round(max(0, p - half), 2), round(min(1, p + half), 2)),
"top_loss_reason": reasons.get(c, Counter()).most_common(1),
})
return sorted(out, key=lambda r: r["win_rate"])
# Типичный итог квартала:
# {'competitor': 'Статус-кво', 'n': 140, 'win_rate': 0.21, 'ci': (0.14, 0.28),
# 'top_loss_reason': [('нет бюджета в этом году', 44)]}
# {'competitor': 'BI-А', 'n': 62, 'win_rate': 0.44, 'ci': (0.32, 0.56),
# 'top_loss_reason': [('нет прав доступа на уровне строк', 12)]}
Из такого отчёта получаются задачи, а не эмоции: «нет прав доступа на уровне строк» — проверяемая гипотеза о фиче, «нет бюджета» — задача для ценообразования и упаковки (https://courses.digitable.life/post/product-management/07-pricing-and-growth/), а не для продукта.
Отдельно проговорим гигиену: сведения о конкурентах собирают из публичных источников — сайты, документация, прайсы, отзывы клиентов, публичные демо, интервью с теми, кто у них был. Промышленный шпионаж, фальшивые аккаунты и выманивание NDA-материалов — не «серая зона», а способ потерять и репутацию, и юриста.
6. Позиционирование: как объяснить, кто вы
6.1. Пять компонентов по Эйприл Данфорд
Эйприл Данфорд в «Obviously Awesome» (2019) разбирает позиционирование как последовательность, а не как слоган:
- Конкурентные альтернативы — что клиент сделает, если вас не будет.
- Уникальные атрибуты — что у вас есть, чего нет у альтернатив (факты, не прилагательные).
- Ценность — что эти атрибуты дают клиенту (следствия, измеримые).
- Кто это особенно ценит — сегмент, для которого ценность максимальна.
- Рыночная категория — контекст, в который вы себя помещаете, чтобы всё вышеперечисленное звучало осмысленно.
Порядок важен: категория выбирается последней, из ценности, а не первой из моды.
альтернативы"] --> B["Уникальные
атрибуты"] B --> C["Ценность
для клиента"] C --> D["Кто ценит
больше всех"] D --> E["Рыночная
категория"] E --> F["Сообщение,
сайт, продажи"] F -. "проверка на клиентах" .-> A
6.2. Шаблон и пример
Для <сегмент из п.4>,
которые <работа / ситуация>,
<продукт> — это <категория из п.5>,
который <ключевая ценность из п.3>,
в отличие от <альтернатива из п.1>,
потому что <уникальный атрибут из п.2>.
Заполненный пример:
Для операционных руководителей в рознице с 50–200 магазинами,
которым нужно к утру понимать, что вчера пошло не так,
«Компас» — это операционная аналитика, а не BI,
который присылает готовый разбор отклонений без запроса аналитику,
в отличие от выгрузок в Excel и классического BI,
потому что подключается к 1С и кассам за час и сам находит аномалии.
Проверка качества: уберите название продукта и покажите текст клиенту. Если он не может сказать, о ком речь и почему это отличается от Excel, — позиционирование не готово.
6.3. Категория как рычаг и как риск
Заявить новую категорию («не BI, а операционная аналитика») выгодно: в новой категории вы — эталон, и сравнение по чужому чек-листу теряет силу. Цена — вы обязаны объяснять категорию сами, а это дорого: клиент не ищет то, для чего у него нет слова. Практическое правило: новую категорию заявляют, когда есть бюджет на её объяснение и понятная «старая» категория рядом, от которой вы отталкиваетесь («это как BI, только…»).
6.4. Позиционирование проверяется, а не утверждается
Сформулированное позиционирование — гипотеза. Проверки, от дешёвой к дорогой:
- показать 5–8 клиентам из ICP и попросить пересказать своими словами;
- A/B заголовков лендинга по конверсии в заявку (https://courses.digitable.life/post/product-management/05-mvp-and-experiments/);
- заменить скрипт первого звонка у половины продавцов и сравнить долю вторых встреч;
- отследить, изменилась ли структура причин проигрыша через квартал.
7. Гейт решения о входе
Формальный чек-лист, который стоит пройти до того, как в роадмап попадёт «выход в новый сегмент»:
Ключевой узел — «продаётся только героическими усилиями». Если сделки закрывает лично основатель, а повторить это никто не может, вы нашли не рынок, а исключение. Это нормальный результат пилота, но плохой повод нанимать отдел продаж.
8. Как это выглядит в проде
Четыре артефакта, которые живут в компании постоянно:
- Market brief (1–2 страницы на сегмент): работа, размер снизу вверх, альтернативы, цена, канал, что мы уже проверили. Обновляется раз в полгода, версионируется.
- ICP-документ: критерии «наш/не наш» в проверяемых формулировках плюс список признаков с lift’ом. Используется продажами как фильтр квалификации.
- Battlecard на каждого значимого конкурента: где мы выигрываем, где проигрываем честно, типичные возражения и ответы, запрещённые приёмы (врать про конкурента нельзя — это возвращается на следующей сделке).
- Win/loss-отчёт раз в квартал: динамика win rate, топ причин проигрыша, что из этого пошло в роадмап.
Ритм: market brief и позиционирование пересматриваются раз в полгода или при смене сегмента; battlecard — при каждом заметном релизе конкурента; win/loss — каждый квартал.
9. Типичные ошибки
- Считать TAM вместо SOM. Красивое число, нулевая связь с решением.
- Сегментировать по тому, что есть в CRM. Отрасль и размер удобны, но часто не различают поведение. Проверяйте, что сегменты действительно различаются метриками.
- Считать конкурентами только похожие компании. Главный конкурент — статус-кво; его доля в проигранных сделках обычно самая большая.
- Гнаться за паритетом фич. Каждая догоняющая фича стоит квартал и не даёт дифференциации.
- Выбирать сегмент по размеру, а не по экономике. «Большой, но не окупается» хуже, чем «маленький, но сходится»: второй можно расширять, первый — только субсидировать.
- Считать ICP один раз. Продукт меняется, канал меняется, ICP дрейфует; ревизия раз в полгода.
- Путать позиционирование и слоган. Слоган — упаковка; позиционирование — решение о том, с кем вас сравнивают.
- Игнорировать смещение выжившего. Данные есть только о тех, кто до вас дошёл, — и это систематически искажает и ICP, и оценку рынка.
10. Мини-итог
- Считайте не рынок вообще, а достижимую выручку сегмента за три года — только она сопоставима со стоимостью команды.
- Сегмент — это одинаковая работа и одинаковая альтернатива, а не строка в справочнике отраслей. Хороший сегмент различим, достижим, однороден, платёжеспособен и достаточен.
- ICP выводится из данных (lift признаков среди удержавшихся) и служит фильтром в discovery, приоритизации и продажах.
- TAM/SAM/SOM считают снизу вверх и проверяют вторым способом; результат подают диапазоном из трёх сценариев, а решение принимают по пессимистичному.
- Конкурент — это любая альтернатива, включая «ничего не делать». Карта конкуренции строится по осям выбора клиента, а не по таблице фич; фичи разбирают через Кано.
- Win/loss-анализ — единственный источник о конкурентах, из которого получаются задачи.
- Позиционирование = альтернативы → атрибуты → ценность → кто ценит → категория. Категория выбирается последней и проверяется на клиентах.
Источники
- April Dunford, «Obviously Awesome: How to Nail Product Positioning» (2019) — https://www.aprildunford.com/obviously-awesome
- Michael Porter, «How Competitive Forces Shape Strategy», HBR (1979) — https://hbr.org/1979/03/how-competitive-forces-shape-strategy
- W. Chan Kim, Renée Mauborgne, «Blue Ocean Strategy» — про стратегическую канву и уход от прямого сравнения: https://www.blueoceanstrategy.com/
- Bob Moesta, «Demand-Side Sales 101» — сегментация по работе и разбор причин покупки: https://www.bobmoesta.com/
- Richard Rumelt, «Good Strategy / Bad Strategy» — диагноз и выбор поля игры: https://www.goodbadstrategy.com/
- Anthony Ulwick, «Jobs to be Done: Theory to Practice» — рынок как совокупность работ: https://strategyn.com/jobs-to-be-done/
Что дальше
Мы выбрали сегмент, посчитали его экономику и сформулировали, чем отличаемся. Следующий шаг — донести это до людей: как устроен выход на рынок, чем запуск отличается от релиза, как считать экономику каналов и как раскатывать продукт кольцами, не сломав ни метрики, ни репутацию.