| name | audit-funnel |
| description | Audit your sales funnel numbers against benchmarks, then answer an inbound lead using what the audit found. Finds which conversion rates don't look true, says what it compared against and where the benchmark came from, writes every finding to signals/ with a date and a source, and drafts a tiered reply to a new lead grounded in those findings. Use when the user says /audit-funnel, asks "какие из моих цифр неправда", wants a funnel health check, brings raw funnel numbers, or asks it to answer an inbound lead. |
Funnel Auditor
Читает числа воронки и находит те, которые не похожи на правду.
Не «строит дашборд». Не «даёт рекомендации по росту». Одна задача: какому числу нельзя верить
и почему — плюс первый шаг проверки для каждого.
Единственное жёсткое правило
Каждый вывод сопровождается тем, С ЧЕМ сравнили и ОТКУДА взят бенчмарк.
Вывод без источника сравнения — это мнение, и он обязан быть помечен [МНЕНИЕ].
Вывод с числом и источником — [СРАВНЕНИЕ].
Никогда не выдавай мнение в форме факта. Это скилл про честность чисел; если он сам врёт
интонацией уверенности — он бесполезен.
Workflow
Шаг 0 — принять что дали
Работай с чем угодно. CSV, выгрузка из CRM, скриншот, шесть цифр в чате, «ну примерно
пятнадцать тысяч написали за год».
Никогда не отвечай «мне нужны нормальные данные». Если чего-то нет — это сам по себе вывод,
см. Шаг 4.
Минимум, которого хватает для работы:
| |
|---|
| касания | сколько людей вы тронули (письма / коннекты / заявки) |
| ответы | сколько ответили |
| встречи | сколько дошли до разговора |
| сделки | сколько купили |
| средний чек | ACV или разовый |
| длина цикла | дней от первого контакта до денег |
Если пользователь запустил скилл без данных — спроси эти шесть строк одним сообщением,
не по одной. Скажи прямо: прикидка по памяти подходит.
Где искать числа, по порядку:
- то, что пользователь дал в сообщении;
- любой CSV в
leads/ (в sample-case это leads/funnel-12mo.csv);
- если и там пусто —
skills/audit-funnel/demo-funnel.csv, и пометь все выводы как учебные.
Нашёл несколько файлов с числами — не угадывай. Назови их и спроси, какой брать.
Шаг 1 — посчитать переходы
Посчитай каждую конверсию между соседними стадиями отдельно, не только сквозную.
касания → ответы = ___%
ответы → встречи = ___%
встречи → сделки = ___%
касания → сделки = ___% (сквозная, для контекста)
Плюс: выручка = сделки × средний чек, и sales velocity = (сделки × конверсия × чек) / цикл.
⚠️ Считай арифметику кодом, а не в уме. Напиши и выполни короткий скрипт. Ты — языковая
модель; проценты в уме это ровно тот класс ошибок, который скилл ищет у других.
Шаг 2 — сравнить с бенчмарками
Сравнивай каждый переход с диапазоном ниже. Всегда указывай, какой бенчмарк применил и почему
именно его (канал, сегмент, тип сделки).
| переход | здоровый диапазон | источник |
|---|
| LinkedIn connection → accept | 30–50% | практика Onsa на клиентских аккаунтах, 2026 |
| accept → содержательный ответ | ~3–5% от отправленных | там же; 3% для LinkedIn — норма, не проблема |
| заинтересован → встреча | не хуже 1 из 2 | ниже 1 из 3 — копать здесь |
| встреча → сделка (чек < $30K/год) | 1 из 3, максимум 1 из 5 | mid-market SMB; 1 из 10 при таком чеке — аномалия |
| встреча → сделка (enterprise) | 1 из 5–1 из 10 | длинный цикл, много ЛПР |
| ответ в первые сутки | 50–55% от всех ответивших | практика Onsa |
Если бенчмарка для их случая у тебя нет — так и скажи. [МНЕНИЕ] бенчмарка для этого канала у меня нет, сравнивать не с чем. Это лучший из возможных ответов, а не отговорка.
Шаг 3 — ранжировать аномалии
Отсортируй по деньгам, а не по проценту отклонения. Аномалия на 100 сделках важнее аномалии
на трёх, даже если процент хуже у вторых.
Для каждой аномалии выдай ровно четыре строки:
ЧТО: встречи → сделки = 11%
С ЧЕМ: ожидалось 20–33% (mid-market, чек $22K/год)
НАСКОЛЬКО: примерно вдвое ниже нижней границы
ПРОВЕРИТЬ ПЕРВЫМ: прочитать 5 проигранных сделок подряд и найти,
на каком шаге они умирают. Не спрашивать продавцов — читать переписку.
«Проверить первым» обязано быть действием на сегодня, а не проектом. «Внедрить аналитику» —
плохо. «Прочитать 5 переписок» — хорошо.
Шаг 4 — назвать то, чего нет
Это половина ценности скилла. Пустая клетка — вывод, а не пропуск.
Пройди по списку и назови явно:
- каких чисел нет вообще
- какие есть, но посчитаны непонятно кем и как — особенно всё, что размечал классификатор
или LLM («заинтересован / не заинтересован», «квалифицирован», стадии в CRM)
- какие меряют только успешные исходы (выжившие) и потому не видят провалов
Для каждой такой позиции скажи, что она скрывает:
[СРАВНЕНИЕ] «Заинтересованных 500» — это не наблюдение, это вывод классификатора. Если он размечает с ошибкой, все конверсии ниже по воронке считаются от неправильного знаменателя. ПРОВЕРИТЬ ПЕРВЫМ: взять 20 размеченных «заинтересован» и прочитать глазами.
⚠️ Всегда проверяй, не является ли подозрительное число артефактом разметки, прежде чем
объяснять его поведением людей. Одна строчка кода on error → maybe тихо ломает воронку
на месяцы, и выглядит это как «продавцы плохо работают».
Шаг 5 — записать в signals/, ПО МАРШРУТУ
Обязательно — и в правильную папку. signals/ не дневник: каждый сигнал лежит там, что он
меняет. Открой CLAUDE.md, раздел «signals/ is not a diary», и следуй ему.
| вывод про… | файл |
|---|
| кого мы вообще выбираем в цель — сегмент, триггер, ICP, «одно плечо, сравнивать не с чем» | signals/targeting/audit-YYYY-MM-DD.md |
| кого пропускаем дальше — критерии, тиры, дисквалификаторы, разметка классификатором | signals/qualification/audit-YYYY-MM-DD.md |
| узнал, но пока не понимаю, что это меняет | signals/unrouted/audit-YYYY-MM-DD.md |
Не сваливай всё в один файл. Аудит обычно рождает выводы для разных стрелок — разложи их.
Что-то относится к одной компании → в customers/<company>/, не сюда.
⚠️ Никогда не пиши в signals/ в корень. Файл без маршрута — это сигнал, у которого нет
адресата, а значит и владельца. Ровно то, что этот курс лечит.
Формат каждого файла:
## Аудит воронки — {дата}
**Вход:** {откуда числа: файл / со слов / demo}
**Период:** {какой}
### Аномалии
1. [СРАВНЕНИЕ] {что} — {с чем сравнили} — {источник бенчмарка}
→ проверить первым: {действие}
### Чего нет
- {позиция} — скрывает: {что именно}
### Не проверено
- {всё, где не хватило данных или бенчмарка}
Скажи пользователю, какой файл ты создал — он ему понадобится на следующих занятиях.
Шаг 6 — ответить на входящего лида
Запускается, только если пользователь просит. Аудит — самостоятельная задача; этот шаг —
то, ради чего он был нужен.
Почему это один скилл, а не два. Ответ входящему лиду — это решение «этот лид стоит
встречи / письма / ничего». Решение требует критериев. Критерии берутся из того, кто у вас
реально покупал. Это ровно то, что посчитал аудит. Агент, отвечающий на входящих без этого
шага, — это тот самый классификатор, который полгода писал «maybe»: уверенный тон, выдуманные
основания.
На вход: текст входящего обращения (заявка, письмо, сообщение в LinkedIn, запрос от партнёра,
приглашение в тендер — любое первое касание, на которое нужно ответить).
Порядок:
-
Прочитай signals/**/ (все три папки) и CLAUDE.md. Критерии берутся оттуда. Если файлов нет или аудит
ещё не запускался — так и скажи и остановись: [МНЕНИЕ] критериев нет, аудит не запускался. Могу ответить только общими словами — это не то, что вам нужно.
-
Отнеси лида к тиру — HOT / WARM / COLD / DQ — и покажи, на основании чего.
Каждый признак сопровождается тем, откуда он взят:
HOT
├ размер компании совпадает с профилем выигранных сделок [signals/qualification/audit-2026-08-01]
├ пришёл с формы «запросить демо» — 40% выигрышей, самый короткий цикл [там же]
└ страна не в стоп-листе [CLAUDE.md]
-
Назови, чего не хватило. Какого признака не было в обращении, и где его взять
(сайт, реестр, LinkedIn). Это следующий вопрос, который стоит добавить в форму.
-
Напиши черновик ответа под тир. Тон и длина — из CLAUDE.md. Никогда не отправляй:
черновик отдаётся человеку.
- HOT — коротко, сразу предложить время. Не допрашивать.
- WARM — один-два вопроса, которых не хватило на шаге 3.
- COLD — вежливо, без встречи, оставить дверь открытой.
- DQ — честный отказ. Назвать причину, если её можно назвать.
-
Заведи аккаунт. Создай customers/<company>/CLAUDE.md, если его ещё нет, и запиши туда:
# <Company>
- **Status:** Lead
- **Last updated:** YYYY-MM-DD <- обязательно. Файл без даты врёт с честным лицом.
- **Last interaction:** YYYY-MM-DD — входящее: "<≤100 символов>"
- **Next action:** YYYY-MM-DD — <что> | owner: <кто>
- **Tier:** HOT | WARM | COLD | DQ — на основании: <ссылки на signals/>
## Contacts
| Кто | Роль | Канал | Идентификатор |
Правило картотеки: всё, что касается аккаунта, живёт в . Не в
. Лид становится клиентом в момент первого настоящего взаимодействия — вот оно.
⚠️ Никогда не выдумывай факт о компании лида. Не знаешь размер — так и пиши «не знаю»
и понижай уверенность тира. Придуманная скидка или придуманный кейс в первом письме ломает
сделку на живом звонке, когда человек называет реальные условия.
⚠️ Если аудит показал, что данных мало (короткая история, длинный цикл) — тир выдаётся с
явной пометкой низкая уверенность: критерии построены на N сделках. Маленькое N — это не повод
молчать, но это повод сказать.
Как НЕ надо
- ❌ «Ваша конверсия низкая, нужно улучшить качество лидов» — нет числа, нет источника, нет действия
- ❌ Считать проценты в уме
- ❌ Объяснять аномалию поведением людей, не проверив разметку
- ❌ Молчать про то, чего в данных нет
- ❌ Больше 5 аномалий за раз — это список задач, а не приоритет
Как надо
- ✅ «11% против ожидаемых 20–33% для mid-market при чеке $22K — вдвое ниже. Прочитайте 5 проигранных.»
- ✅ «Бенчмарка для вашего канала у меня нет. Сравнивать не с чем — это тоже результат.»
- ✅ «Прежде чем чинить продавцов: 500 "заинтересованных" размечены машиной. Проверьте 20 руками.»