Как посчитать Product-Market Fit Survey в SQL
Содержание:
Зачем PMF Survey
Sean Ellis (создатель термина growth hacking) предложил metric: спросите юзеров «как бы вы себя чувствовали, если бы не могли использовать продукт?». Если ≥ 40% отвечают «very disappointed» — у вас Product-Market Fit. <40% — нет, ещё работайте.
Sean Ellis 40% rule
Вопрос: «How would you feel if you could no longer use [product]?»
Ответы:
- Very disappointed
- Somewhat disappointed
- Not disappointed
- N/A — I don't use [product]
PMF score = % "very disappointed".
Базовый расчёт
Данные: pmf_responses(user_id, response, submitted_at).
SELECT
COUNT(*) AS total_responses,
COUNT(*) FILTER (WHERE response = 'very_disappointed') AS very_disappointed,
COUNT(*) FILTER (WHERE response = 'very_disappointed')::NUMERIC * 100
/ NULLIF(COUNT(*), 0) AS pmf_score_pct
FROM pmf_responses
WHERE submitted_at >= CURRENT_DATE - INTERVAL '90 days';PMF score > 40% — у вас PMF.
По сегментам
SELECT
u.segment,
COUNT(p.user_id) AS responses,
COUNT(p.user_id) FILTER (WHERE p.response = 'very_disappointed')::NUMERIC * 100
/ NULLIF(COUNT(p.user_id), 0) AS pmf_score_pct
FROM pmf_responses p
JOIN users u ON u.user_id = p.user_id
WHERE p.submitted_at >= CURRENT_DATE - INTERVAL '90 days'
GROUP BY u.segment
HAVING COUNT(p.user_id) >= 30
ORDER BY pmf_score_pct DESC;Если PMF score высокий в одном сегменте, низкий в другом — focus на той аудитории.
Какие изменения отслеживать
SELECT
DATE_TRUNC('quarter', submitted_at) AS quarter,
COUNT(*) FILTER (WHERE response = 'very_disappointed')::NUMERIC * 100
/ NULLIF(COUNT(*), 0) AS pmf_score_pct
FROM pmf_responses
WHERE submitted_at >= '2026-01-01'
GROUP BY 1
ORDER BY 1;Если PMF score падает — продукт менее ценен для активных юзеров. Bad sign.
Частые ошибки
Ошибка 1. Опрос неправильной аудитории. Спрашивать всех — много «N/A» (не используют). Спрашивайте только активных юзеров.
Ошибка 2. Включать «N/A» в знаменатель. Формально нет: PMF score = «very disappointed» / (very + somewhat + not). Игнорируйте N/A.
Ошибка 3. Sample size. n=20 → ±20% margin. Минимум 100+ для reliable PMF score.
Ошибка 4. Сравнивать with vanity metrics. PMF score 35% и DAU 1М — DAU не значит PMF. Реверс тоже верен.
Ошибка 5. Одноразовый PMF. PMF меняется со временем (market shift, new competitors). Re-measure quarterly.
Связанные темы
- Product-Market Fit
- Как посчитать NPS в SQL
- Как посчитать retention в SQL
- Как посчитать engagement в SQL
FAQ
Какой PMF score считается хорошим?
40%+ — Sean Ellis threshold = у вас PMF. 25-40% — близко. <25% — нет PMF.
Спрашивать всех или активных?
Только активных. Иначе много N/A → biased.
PMF score vs NPS?
PMF — strong signal of must-have. NPS — likelihood to recommend. Связаны, но разные.
PMF падает — что делать?
- Найдите, кто остался very disappointed (best segment). 2) Talk to them. 3) Double-down на их use case.
PMF в стартапе с 50 юзерами?
n=50 даёт ±15% error. Lord-cumulative — opt for narrative + signals (referrals, retention), не number.