Лаборатория архитектуры AI
Исследование рынка

ИИ-аналитик конкурентов

Программа обходит сайты конкурентов и собирает цены, сроки и обещания в одну таблицу. В прогоне по нише из 29 открывшихся сайтов цены разошлись в десять раз: от 15 000 до 150 000 ₽ за месяц.

Объём30 сайтов ниши
Себестоимость0 ₽ · 175 кредитов
По рынку83 000 ₽/мес — аналитик
ВердиктРаботает

Опубликовано 25.08.2026 · цифры сверены 01.09.2026

Как разобрать конкурентов с ИИ: восемь шагов

  1. Ниша и город. Назовите их точно: «продвижение сайтов, Москва». От этой строчки зависит весь список.
  2. Список компаний. Соберите всех, кого находит поиск, а не тройку известных. В нашем прогоне нашлось 76 компаний.
  3. Чистка руками. Вычеркните агрегаторы, каталоги и чужие ниши. Из 76 осталось 30 — это единственный ручной шаг.
  4. Что сравниваем. Выпишите признаки до сбора: цена, сроки, форма заявки, калькулятор, обещания.
  5. Сбор страниц. Берите главную и несколько внутренних, первыми — те, где цены и тарифы, иначе соберутся одни меню.
  6. Цитата обязательна. Просите ответ только с цитатой: «процитируй, где на странице названа цена». Без цитаты ответ не принимается.
  7. Проверка цитат. Сверьте: цитата не пустая, в ней есть сумма или срок, и эти числа действительно встречаются на странице.
  8. Одна таблица. Сведите всё в таблицу и посмотрите разброс. У нас цены разошлись в десять раз: от 15 000 до 150 000 ₽.

Что под какую задачу

  • Разовый разбор ниши — хватит бесплатных лимитов и одного вечера.
  • Слежение за ценами — нужен постоянный список адресов и расписание, иначе данные стареют за месяц.
  • Ниша без сайтов — если конкуренты живут в соцсетях и на маркетплейсах, этот способ не подходит.

Ниже — живой прогон по 30 сайтам: что он показал и что в нём стоило денег.

01 · Этапы

Где проект сейчас

СделаноМетоддесять шагов от пустой папки до карточки
СделаноКодrun.py — 835 строк, dashboard.py — 588 строк
СделаноПрогон21.08.2026: 30 сайтов, 29 открылось, 175 кредитов
СделаноДашборд24 признака ниши по сохранённым текстам, 0 кредитов
СделаноПереезд24.08.2026: код в репозитории, ключи вне git
СейчасПрогон по нише этапаюридические услуги, выборка 50 — не начат

Сервис собран, прогнан вживую и оставил после себя проверяемые артефакты. Код — два файла: run.py на 835 строк делает замер, dashboard.py на 588 строк собирает поверх него карту ниши и страниц заново не качает.

Боевой прогон состоялся 21.08.2026 по нише «продвижение сайтов, Москва»: 30 сайтов в списке, 175 кредитов Firecrawl, около 45 минут — длительность восстановлена по времени файлов сырья, отметок времени в журнале нет. В тот же вечер, в 18:23, по уже скачанным текстам собрался дашборд — за ноль кредитов Firecrawl и 29 дополнительных обращений к модели.

Что не сделано и названо: прогона по нише, объявленной в карточке сервиса — юридические услуги, выборка 50, — ещё не было. Открытых долга два: бета-прогон живым новичком по файлам без автора и расхождение документации с кодом — инструкция ведёт человека заводить ключ Yandex Cloud, а рабочий скрипт ходит в OpenRouter.

02 · Задача

Что было нужно

Требование одно: увидеть, что отвечает клиенту не тройка известных конкурентов, а вся ниша целиком. Подрядчик считает конкурентов штуками — по опубликованному прайсу Demis Group 26 000 ₽ за трёх, 53 000 ₽ за пятерых, 72 000 ₽ за семерых; проверить полсотни сайтов глазами по десять минут на сайт — рабочий день без единого перерыва.

Ограничение, из которого выросла вся конструкция: модель подтверждает то, о чём её спросили, а не то, что есть на странице. На вопрос «есть ли здесь ответ клиенту» она соглашается из вежливости почти везде, и цифра замера превращается в цифру её покладистости. В литературе это называется sycophancy — угодливость модели: Sharma et al., 2023.

Отсюда единственное требование к её ответу: «да» не существует без дословной цитаты, а цитата не существует без числа, которое код нашёл в тексте страницы. В прогоне 21.08.2026 эти ступени прошли 20 сайтов из 29, и у всех двадцати цитата лежит в таблице отдельной колонкой — её можно открыть и сверить руками.

МетодЧто из него взятоКаноническое имя · источник
Замер прежде объясненияразмер выборки и вопрос клиента объявляются до первой команды. Выборка, выбранная после результатов, — уже не замерПререгистрация выборки и вопросаNosek et al., PNAS, 2018
Приёмка порогамитри исхода по числу открывшихся названы до старта: 40 и больше — можно долями, 25–39 — только абсолютные числа, меньше 25 — план БПререгистрация критериев; правило малой выборкиNosek et al., PNAS, 2018
Точное совпадение вместо доверия«да» модели живёт, только если числа из её цитаты найдены в тексте страницы. Сверяются цифры, а не буквыВерификация цитаты по числу (faithfulness)Es et al., «RAGAS», 2023
Разделение по проверяемостимодель судит там, где нужно суждение; цену, форму и калькулятор ищет код по словарю — такую проверку человек повторяет за секундуСловарный контент-анализ по кодбукуKrippendorff, «Content Analysis», 2004
Громкий отказ вместо тихогоу каждой проверки три состояния: да, нет, не проверялось. Пустая строка не равна «нет», и не открывшийся сайт не попадает ни в числитель, ни в знаменательТрёхзначная логика: да, нет, не проверялосьCodd, ACM TODS, 1979
Ограниченная петля агентаярлык типа подрядчика берётся из закрытого списка трёх значений; чужое значение код отбрасываетЗакрытый словарь категорий (кодбук)Krippendorff, «Content Analysis», 2004
Один хозяин у данныхна выходе пара файлов: audit.csv на 13 колонок и meta.json — паспорт замера с нишей, датой, методом, размером выборки и расходомПаспорт данных (datasheet)Gebru et al., CACM, 2021
03 · Сборка

Как собрано

Конвейер линейный и пересекает границу платного ровно дважды: поиск компаний и обход сайтов. Всё остальное — свой код на одном файле, из зависимостей только requests.

Поиск отдаёт 76 компаний за 36 кредитов, дальше единственный ручной шаг: человек глазами вычёркивает агрегаторы, дубли и чужие ниши — 76 превращаются в 30. Каждый сайт открывается настоящим браузером: главная плюс до пяти внутренних страниц, причём ссылки с ценами, тарифами и прайсом берутся первыми, иначе пять слотов съедает верхнее меню. Параллельно идёт бесплатная проба обычным запросом — статус и время загрузки в миллисекундах.

Текст уходит модели дважды: «есть ли на странице ответ на вопрос клиента» с обязательной цитатой и «какой это подрядчик» с ярлыком из трёх значений. Между её ответом и строкой в таблице стоят три ступени кода: цитата не пуста → в цитате есть сумма или срок → числа из цитаты найдены на странице. Цена, форма заявки и калькулятор считаются кодом по словарю, без модели.

Все скачанные тексты ложатся в raw/ — 155 страниц, 52,2 МБ в 58 файлах. Из-за этого дашборд с картой 24 признаков и ценовым распределением строится поверх готового и не тратит ни одного кредита, а пересчёт после правки проверки стоит ноль.

ПОИСК КОМПАНИЙFirecrawl · 36 кредитов6 запросов, лимит 30 на запрос → 76 компанийЧИСТКА СПИСКАчеловек76 → 30: агрегаторы, дубли, чужие нишиОБХОД САЙТАFirecrawl · 139 кредитовглавная и до пяти внутренних, пауза 6,5 сВОПРОС КЛИЕНТАмодель«да» только с дословной цитатойТРИ СТУПЕНИ ПРОВЕРКИкодцитата → число в цитате → число на страницепрошлоотмененоСТРОКА С ЦИТАТОЙ20 из 29 · в таблицу«НЕТ» И ПРИЧИНА9 из 29 · в журналRAW/повтор — 0 кредитовпунктиром — возврат по кэшу · розовым — ручной шаг и проверка, отменяющая «да» модели
Ответ модели сам по себе в таблицу не попадает: между ним и строкой стоят три проверки кодом. Девять «да» из двадцати девяти отменились именно здесь.

Между ответом модели и строкой в таблице всегда стоит проверка кодом: «да» без числа, которое нашлось на самой странице, до таблицы не доходит.

04 · Правила

На чём держится конструкция

Шесть правил, каждое сформулировано через отброшенную альтернативу. Три из шести — это места, где код не доверяет модели, ещё три — где не доверяет самому себе.

Все шесть проверяются на артефактах прогона за минуту: колонка с цитатой открывается рядом с сайтом, знаменатель виден в паспорте замера, три состояния проверки различимы прямо в таблице.

1
Цитата или нет«да» без дословной цитаты в таблицу не записываетсяна прямой вопрос модель соглашается почти везде. Цитата — единственная часть её ответа, которую человек перепроверяет за секунду, открыв страницу
2
Числа, а не буквыиз цитаты сверяются цифры, а не текстцена на сайте живёт в таблице, а модель пересказывает её предложением: буквальное совпадение не сработает никогда. Зато суммы, которой на странице нет, не найдётся ни в каком виде
3
Знаменательтолько открывшиеся: 29, а не 30закрытый от программ сайт нельзя записать в «плохие» — про него ничего не известно. Он не попадает ни в числитель, ни в знаменатель
4
Три состояния вместо двухда, нет, не проверялосьпустая строка не равна «нет». Тихий пропуск превращается в цифру, за которой не стоит замера, — и заметить это потом уже нечем
5
Порог честности объявлен до старта, а не послеПорог честности объявлен до старта, а не послеодин сайт в выборке 29 весит 3,4 процентных пункта: «68%» превращается в «71%», хотя не изменилось ничего. Меньше 40 открывшихся — только абсолютные числа, меньше 25 — план Б
6
Кодом всё, что можно перепроверить рукойКодом всё, что можно перепроверить рукойцену, форму и калькулятор ищет словарь, а не модель. Проверку кодом человек повторяет за секунду, решение модели — нет; из тринадцати колонок таблицы модель заполняет три
05 · Решения

Решения и основания

Восемь решений, у каждого — замер или прямое ограничение внешнего сервиса за спиной. Ни одно не принято «для чистоты»: каждое либо снимает названную ошибку, либо укладывается в чужой лимит.

Самое дорогое по последствиям — пауза между запросами: она одна растягивает прогон до сорока пяти минут и названа в секции ограничений отдельной строкой.

РешениеОснование
Страницы открывает сервис с рендером, а не обычный запросполовина сайтов малого бизнеса рисуется в браузере, и простой запрос вернёт пустой каркас. В прогоне это подтвердилось ровно один раз: один сайт из 29 отдал текст только через рендер, а прямому запросу не ответил
Потолок 6 страниц на сайт, страницы с ценами первымипять внутренних слотов иначе съедает верхнее меню. Порядок групп жёсткий: цены, тарифы, прайс → услуги → кейсы и «о нас»
Не больше двух страниц из одного разделабез этого все пять слотов уходят в один подраздел и сайт остаётся непрочитанным
Пауза 6,5 секунды между обращениями к обходчикубесплатный тариф пропускает 10 запросов в минуту. Прогон идёт медленно намеренно — это цена бесплатного тарифа, а не медленный код
Ярлык типа подрядчика — из закрытого списка трёх значенийсвободный ярлык нельзя посчитать: у 29 сайтов вышло бы 29 формулировок. Чужое значение код отбрасывает молча
Тексты сайтов сохраняются в raw/ и не перечитываютсяпересчёт после правки проверки стоит ноль кредитов. В прогоне 21.08 три сайта прошли по кэшу за 0 кредитов — 17 страниц, скачанных раньше
Дашборд строится поверх сохранённых текстов и страниц заново не качаеткарта из 24 признаков и ценовое распределение стоили 0 кредитов Firecrawl. Цена этого решения — 29 обращений к модели, которых нет в паспорте замера
Смета печатается до старта, расход упирается в потолок30 сайтов × до 6 страниц = до 180 кредитов; запускали с потолком 220 при умолчании 400 — потолок выставлялся руками, и почему именно 220, в файлах прогона не записано. Потратили 139, осталось 81. Потолок проверяется перед каждым сайтом, а не в конце
Отсев выборки: от находки поиска до сопоставимой цены
Нашёл поиск7636 кредитов
После ручной чистки3039 %
Открылось2938 %
Со стартовой ценой2128 %
Единственный ручной шаг — вторая ступень. Дальше отсев делает код.
06 · Ограничения

Чем платит конструкция

Главная плата — время. Пауза 6,5 секунды между запросами растягивает прогон по 30 сайтам примерно на 45 минут — и это число не замер, а восстановление по времени файлов сырья; выборка на 50 сайтов по той же скорости уходит за час, и это пересчёт, а не второй прогон. Ускоряется всё только платным тарифом: 155 скачанных страниц по 6,5 секунды дают около 17 минут одного лишь ожидания (расчёт 155 × 6,5 с), остальное съедает рендер страниц, а модель и разбор текста в длительность почти не входят.

Вторая плата — жёсткость определений. Требование «в цитате обязано быть число» отсекает сайты, которые отвечают клиенту словами: минимум одно «нет» из девяти в прогоне поставлено именно на этой ступени, и причина записана в журнале. Потолок в шесть страниц значит, что цена, спрятанная на седьмой, в замер не попадёт: в среднем со стороннего сайта прочитано 5,3 страницы.

Отдельно — три счётчика цены, которые в артефактах прогона стоят рядом и дают разные числа. Это не ошибка, это три разных определения, и вот они полностью. 27 из 29 в отчёте — «называют цену»: на странице есть слово из словаря («тарифы», «прайс», «стоимость услуг», «% от суммы») или число с рублём. 25 из 29 в дашборде — «цена числом»: только регулярка, число с ₽, «руб» или «р.» где угодно в сохранённом тексте. 21 из 29 в ценовом распределении — стартовая цена продвижения за месяц: число назвала модель или проверенная цитата, и код нашёл его на странице, в рамке от 3 000 до 3 000 000 ₽.

Разница одной фразой: первые два счётчика отвечают на вопрос «есть ли на странице цифра с рублём», третий — «можно ли из этой цифры построить цену за месяц». Арифметика сходится нацело: из 25 сайтов с числом у пяти цена за месяц не получается (там цена другой услуги или цифра из кейса), и один сайт добавляется обратно — на нём стоит «от 100 000», но знак рубля приехал из иконочного шрифта буквой, регулярка его не увидела, а модель прочла. 25 − 5 + 1 = 21.

У третьего счётчика два источника, и они пересекаются. Стартовую цену модель назвала в 13 профилях из 29, проверенная цитата вопроса дала её у 18 сайтов, общих у них 10. То есть только профиль — 3 сайта, профиль и цитата — 10, только цитата — 8; 3 + 10 + 8 = 21.

Проценты на этой странице почти не называются, и это тоже плата: открылось 29 сайтов, меньше сорока, а по методологии проекта выборка меньше сорока говорит абсолютными числами. Где стоит отношение вроде «×10» или «+20%», это расчёт по прайсам самих сайтов, а не доля выборки.

РешениеЧем ограничивает
Пауза 6,5 секунды между запросамипрогон 30 сайтов идёт около 45 минут — по времени файлов сырья, не по замеру; 50 сайтов по той же скорости — больше часа, это пересчёт. Быстрее только за деньги: это лимит бесплатного тарифа, 10 запросов в минуту
Потолок 6 страниц на сайтцена, лежащая на седьмой странице, в замер не попадает. Прочитано 155 страниц на 29 сайтов — в среднем 5,3
Знаменатель — только открывшиесяцифра меряет доступность для обходчика, а не для клиента. В прогоне единственный «не открылся» был жив: обходчик получил таймаут, а прямая проба открыла страницу за 1402 мс
«Да» требует числа в цитатесайт, который отвечает клиенту словами без суммы и срока, попадает в «нет». Из девяти «нет» минимум одно поставлено именно на этой ступени
Цену, форму и калькулятор ищет словарьловится форма слова, а не смысл. «Цена числом» видит любое число с рублём — 25 сайтов из 29, тогда как цена за месяц строится только у 21
Ярлык подрядчика — три значения«частник-студия» достался одному сайту из 29. Более дробная картина требует расширить список и пересчитать весь прогон заново
Модель называет цену не всегдастартовую цену она дала в 13 профилях из 29, ещё восемь сайтов добрали цену из проверенной цитаты вопроса. Итог 21 из 29 — восемь сайтов остались без цены вовсе
Выборка меньше 40до конца этапа только абсолютные числа. Один сайт весит 3,4 процентных пункта, и проценты создают точность, которой в замере нет
07 · Результат

Что получилось

сайтов открылось при обходе29 из 30out/meta.json — sample_listed 30, sample_opened 29
ответили и доказали цитатой20 из 29out/audit.csv — answers_q1=True у 20 строк, цитата непустая
расход Firecrawl за прогон175 кредитов139 на обход — out/meta.json; 36 на поиск — из схемы сервиса
длительность прогонаоколо 45 минутне замер: восстановлено по времени файлов в out/raw-*.tar.gz
Карта ниши: сколько сайтов из 29 говорят каждую из этих вещей
Кейсы27
Индивидуальный подход25
Комплексный подход25
Цена числом25
Тарифы и пакеты23
Мессенджеры23
Прозрачная отчётность22
Договор с KPI20
Кейсы с цифрами20
Отраслевая специализация16
Сертификаты и награды16
Бесплатный аудит15
Калькулятор13
Личный кабинет клиента10
Работа по договору10
Персональный менеджер9
Опыт: лет на рынке9
Гарантия результата7
Белые методы5
Возврат денег5
Обещание скорости5
Бесплатная консультация3
Оплата за результат2
Работа без предоплаты0
Сверху — то, что говорят почти все: этим не отличиться. Серым — свободное место. «Работа без предоплаты» не встретилась ни разу.
Ценовые корзины: 21 сайт, назвавший цену за месяц, тысяч рублей
1до 25
1225–50
350–75
275–100
1100–125
2125–150
Столбцы считаются от нуля. Медиана всей ниши 45 тысяч, у сео-подрядчика 40, у полного цикла 48.

Прогон 21.08.2026, ниша «продвижение сайтов, Москва», 30 сайтов в списке. Открылось 29, ответили на вопрос клиента и доказали цитатой 20, расход — 175 кредитов Firecrawl из 1000 бесплатных в месяц: 139 на обход стоят в паспорте замера, 36 на поиск взяты из схемы сервиса и сложены при разборе. Длительность — около 45 минут, и это не замер: она восстановлена по времени файлов сырья, 16:18 → 17:03, потому что отметок времени в журнале нет ни одной.

Ниша разложилась на 24 признака, и распределение само по себе есть результат. Кейсы показывают 27 сайтов из 29, кейсы с цифрами — 20: у семи оставшихся на странице нет ни одного результата вида «+N %» или «в N раз» — это и есть определение признака. Гарантию результата обещают 7 из 29, а рублём за неё отвечают («оплата за результат») 2 из 29 — обещание встречается втрое с половиной чаще, чем обязательство. Работать без предоплаты не предлагает ни один сайт из 29: единственный признак карты, который не сработал ни разу.

Цены сошлись у 21 сайта. Порог входа — 15 000 ₽, медиана — 45 000 ₽, верх — 150 000 ₽, разрыв десятикратный. Самый дешёвый и самый дорогой из тех, кто назвал и цену, и срок, обещают результат за одни и те же 3 месяца — при разнице в цене в десять раз обещание не отличается ничем. Сравнение опирается на восемь сайтов, у которых названы обе величины, и это расчёт по их собственным прайсам, а не замер результата.

Полный цикл дороже голого SEO на 20%: медиана 48 000 ₽ против 40 000 ₽ у сео-подрядчиков — при том, что у первых в выборке 10 сайтов с ценой, у вторых 11. Это отношение двух медиан, а не доля выборки.

Достоверность результата
Выборка
Одна ниша, один прогон: 30 сайтов в списке, 29 открылось, 21 со стартовой ценой. Поиск дал 76 компаний, до 30 их довёл единственный ручной шаг — чистка агрегаторов и дублей глазами.
Разброс
Выборка меньше сорока, поэтому доли на странице не называются: один сайт весит 1/29 ≈ 3,4 процентных пункта, и проценты создали бы точность, которой в замере нет. Где стоит отношение вроде «×10», это расчёт по прайсам самих сайтов.
Проверки
Между ответом модели и строкой таблицы три ступени кода: цитата не пуста → в цитате есть сумма или срок → числа из цитаты найдены на странице. Девять «да» из двадцати девяти отменены на этих ступенях. Согласие модели с человеком на подвыборке не измерялось.
Не обобщается
Числа относятся к нише «продвижение сайтов, Москва» на 21.08.2026 и к тому, что видно обходчику с шести страниц на сайт. Прогон по нише, объявленной в карточке сервиса, ещё не делался.
Не измерено
Точность и полнота словаря признаков по ручной разметке: случай со знаком рубля из иконочного шрифта показывает, что ошибки словаря есть, а их доля не посчитана. Длительность прогона восстановлена по времени файлов, а не замерена.
Работает

Прошёл боевой прогон 21.08.2026 по 30 сайтам ниши и оставил проверяемые артефакты: таблицу на 30 строк, паспорт замера, дашборд и 52,2 МБ сохранённых текстов. Цифры страницы пересчитываются по этому архиву; две, которые по нему не считаются, названы в «Граблях».

Повторить самому
Архитектураблок-схема выше ↑Правилашесть правил ↑Данные прогонаaudit.csv, 30 строк

Кауфман Lab — лаборатория архитектуры искусственного интеллекта. Мы проектируем процессы и методологии. Код устаревает с каждым новым поколением моделей — методология нет, поэтому в проектах разбирается именно она. Собрать систему по этой схеме сможет любая современная нейросеть.

08 · Грабли

Что пошло не так

Десять отказов, все найдены при разборе собственных артефактов прогона, а не при сборке. Восемь из десяти — про учёт: расход, время, охват поиска и паспорт замера расходятся с тем, что реально произошло. Ещё два — про определение: цифра называется не тем, что она меряет.

Самый дорогой по последствиям — паспорт замера. Он объявляет метод «firecrawl search + scrape → yandexgpt-lite», а в коде стоит другая модель и другой провайдер; сам файл переписан 25.08, через четыре дня после прогона, тогда как таблица и журнал записаны 21.08 в 17:03:58. Паспорт, переписанный задним числом, перестаёт быть паспортом.

допосле139175

Кредитов в паспорте замерашаг поиска пишет свою цену в паспорт

допосле5887

Обращений к модели в счёте прогонадашборд пишет свой расход сам

Единственный «не открылся» был жив: обходчик вернул таймаут, прямая проба открыла сайт за 1402 мсЦифра называется «доступен обходчику», а не «сайт не работает». Обе колонки — через рендер и прямым запросом — стоят в таблице рядом
Причина отказа записана у одного «нет» из девяти; остальные восемь ушли в таблицу без объясненияКаждое «нет» несёт причину. Ветка, возвращающая отказ молча, дописывается — иначе журнал не восстанавливает решение
Пометка о причине печатается раньше строки своего сайта и в журнале выглядит примечанием к предыдущемуСтрока события печатается целиком, причина — её частью, а не отдельной строкой выше
Паспорт замера называет модель, которой в коде нет, и переписан через четыре дня после прогонаПаспорт пишется в момент замера и задним числом не правится. Расхождение паспорта с кодом — повод остановиться, а не сгладить
Из шести поисковых запросов в выборку дожили три: 17 + 9 + 4 = 30 компаний, остальные три запроса не дали ни одной строкиПаспорт замера называет не только размер выборки, но и то, из скольких запросов она собрана. Охват поиска — часть метода, а не служебная деталь
36 кредитов поиска не попали в паспорт: там стоит 139, реальный расход прогона 175В расход пишется всё, что списал внешний сервис, включая шаг поиска. Шаг, который печатает свою цену в консоль, но не отдаёт её в паспорт, считается несчитанным
139 кредитов — не цена холодного прогона: три сайта прошли по кэшу за нольРядом с расходом называется цена прогона с пустым кэшем — здесь 156 кредитов на обход
29 обращений к модели из дашборда нигде не учтены — общий счёт прогона 87, а не 58Расход считает тот, кто его тратит. Дашборд пишет свой счёт, а не наследует чужой
В журнале прогона нет ни одной отметки времени — ни старта, ни финишаДлительность — часть паспорта замера. Восстанавливать её по времени изменения файлов можно один раз, ссылаться на неё как на замер — нельзя
Три счётчика цены в отчёте и дашборде подписаны так, будто меряют одно: «Называют цену» — 27, «Цена числом» — 25, ценовой график — 21Подпись называет определение, а не вывод. «Называют цену» меряет наличие слова «тарифы» на странице, и подпись обязана говорить именно это
09 · Границы

Что сознательно не вошло

Границы делятся на четыре вида, и три из них — решения, а не недоделки. Отдельно стоит «отключено»: из 148 мусорных доменов в поиск уходят только последние 60, потому что на длинном списке исключений сервис молча возвращает ноль результатов при успешном ответе.

Рублёвой себестоимости прогона в репозитории нет вовсе, и это тоже граница: код считает кредиты и вызовы, а не деньги. Карточка сервиса считает рубли по модели, которой в коде нет, — цифра помечена долгом и здесь не повторяется.

Не будетпубличный разбор конкретных фирмразбирается ниша, а не отдельные компании; названия в любых показах замазываются. Разбор чужого живого сайта без спроса не окупается одной публикацией
Не будетсвободный ярлык типа подрядчикатолько закрытый список из трёх значений. Свободную формулировку нельзя сложить в цифру
Не будетпроценты при выборке меньше 40открылось 29 — говорим «20 из 29», а не «69%»
Отключено88 мусорных доменов из 148в поиск уходят последние 60. На списке длиннее сервис отвечает успехом и пустой выдачей — отсечка стоит в коде с комментарием о причине
Отложенопрогон по объявленной нишеюридические услуги, выборка 50, ожидание 35–43 открывшихся. Пока проверить это ожидание нечем: единственный боевой прогон был по другой нише
Отложенобета-прогон живым новичкомединственный незакрытый пункт чек-листа ревью. Автором не заменяется: он уже знает то, чего не написал
Отложенорасхождение документации и кодаинструкция и промпт ведут человека в одно облако, рабочий скрипт ходит в другое. По текущим файлам заводится не тот ключ — чинится до раскатки
В планахрублёвая себестоимость прогонав коде рублей нет: считаются кредиты и вызовы. Цифра появится, когда будет замер, а не оценка
В планахобщая карта из четырёх сервисоввыходы четырёх замеров сводятся в одну папку по единому контракту: данные плюс паспорт. Имена файлов данных разные намеренно — одинаковые затёрли бы друг друга
10 · Вопросы

Что обычно спрашивают

Семь вопросов — те, что задают про этот замер чаще всего. Первый из них — определение предмета: он написан так, чтобы его можно было процитировать вырезанным из страницы.

В каждом ответе стоит число из прогона 21.08.2026 либо опубликованная цена по рынку.

Что такое ИИ-аналитик конкурентов?

ИИ-аналитик конкурентов — это замер, в котором программа обходит сайты целой ниши вместо человека с блокнотом. Нужен владельцу бизнеса и маркетологу, которым важен весь рынок, а не три известных имени. Программа находит сайты, читает каждый настоящим браузером и складывает цену, срок и обещания в таблицу. Кауфман Lab собирает её под нишу заказчика: один прогон покрывает 30 сайтов. Оценок сайтам она не ставит и советов не даёт.

Что в анализе конкурентов решает модель, а что код?

Модель отвечает на один вопрос — есть ли на странице ответ на главный вопрос клиента — и обязана доказать «да» дословной цитатой. Второй её вызов ставит ярлык типа подрядчика из закрытого списка трёх значений; чужое значение код отбрасывает. Цена, форма заявки, калькулятор и 24 признака ниши — поиск по тексту без модели: такую проверку человек повторяет за секунду, решение модели — нет. Из тринадцати колонок таблицы модель заполняет три.

Как проверяется, что сайт действительно ответил на вопрос клиента?

Тремя ступенями кода подряд, до записи в таблицу. Цитата не пуста. В цитате есть сумма или срок — иначе «да» отменяется, и причина уходит в журнал. Числа из цитаты найдены в тексте страницы, причём сверяются цифры, а не буквы: цена на сайте живёт в таблице, а модель пересказывает её предложением, и буквальное совпадение тут не сработает никогда. В прогоне 21.08.2026 все три ступени прошли 20 сайтов из 29, и у каждого цитата лежит отдельной колонкой.

Почему сайт, который не открылся, не считается плохим?

Про него ничего не известно, а знаменатель всех долей — только открывшиеся: 29, а не 30. В прогоне 21.08.2026 единственный «не открылся» на самом деле был жив: обходчик вернул таймаут, а бесплатная прямая проба тем же скриптом получила страницу за 1402 мс. Поэтому цифра называется «доступен обходчику», а не «сайт не работает», и обе колонки стоят в таблице рядом.

Почему прогон по тридцати сайтам идёт около сорока пяти минут?

Из-за паузы 6,5 секунды между обращениями к обходчику: бесплатный тариф пропускает десять запросов в минуту. За прогон скачано 155 страниц, и только на ожидание уходит около 17 минут — это расчёт 155 × 6,5 секунды, а не отдельный замер; остальное время съедает рендер самих страниц, модель и разбор текста в длительность почти не входят. Сами 45 минут тоже восстановлены, а не измерены: по времени файлов сырья, 16:18 → 17:03, потому что отметок времени в журнале прогона нет. Ускоряется это только платным тарифом. Дашборд работает поверх уже скачанных текстов и страниц заново не качает.

Сколько стоит один прогон по нише?

Прогон 21.08.2026 по 30 сайтам списал 175 кредитов Firecrawl: 36 на поиск компаний и 139 на обход. Бесплатный тариф даёт 1000 кредитов в месяц, карта не нужна; модель в текущей сборке живёт на OpenRouter и рублёвого расхода не создаёт. По рынку та же работа руками стоит по опубликованному прайсу Demis Group 26 000 ₽ за трёх конкурентов, 53 000 ₽ за пятерых и 72 000 ₽ за семерых. Рублёвой цифры самого прогона в коде нет: он считает кредиты и вызовы.

Что делать, если из выборки открылось мало сайтов?

Исходы объявлены до старта, а не выбираются по результату. Сорок и больше — можно говорить долями. От 25 до 39 — идём дальше, но до конца этапа только абсолютные числа: один сайт в выборке 29 весит 3,4 процентных пункта, и «68%» превращается в «71%», хотя не изменилось ничего. Меньше 25 — главной строкой становится сама закрытость ниши, а доли по вопросу клиента не публикуются вовсе.

Как сделать анализ цен конкурентов по сайтам?

Цена собирается так: программа обходит сайты ниши настоящим браузером — главная плюс до пяти внутренних страниц, ссылки с ценами и прайсом берутся первыми. В ценовой график попадает только стартовая цена за месяц, найденная числом на самой странице, в рамке от 3 000 до 3 000 000 ₽. В прогоне 21.08.2026 по нише «продвижение сайтов, Москва» так сошлась цена у 21 сайта из 29 открывшихся: порог входа 15 000 ₽, медиана 45 000 ₽, верх 150 000 ₽ — разрыв десятикратный. Числа относятся к одной нише и одному прогону.

Как анализировать конкурентов целой ниши?

Порядок такой: поиск собирает компании ниши, потом единственный ручной шаг — человек вычёркивает агрегаторы, дубли и чужие ниши, дальше каждый сайт читается по одному набору проверок. Метод — десять шагов от пустой папки до карточки. Воронка прогона 21.08.2026: поиск отдал 76 компаний, после чистки осталось 30, открылось 29. Ответ модели на главный вопрос клиента принимается только с дословной цитатой: три ступени проверки отменили девять ответов из двадцати девяти, прошли 20.

Как выглядит таблица анализа конкурентов?

Это таблица на 13 колонок и 30 строк: строка — компания, колонки — цена, срок, обещания, форма заявки, калькулятор, доступность и дословная цитата. Из тринадцати колонок модель заполняет три; цену, форму заявки и калькулятор ищет код по словарю. Поверх сохранённых текстов строится карта ниши из 24 признаков: в прогоне 21.08.2026 кейсы показывают 27 сайтов из 29, гарантию результата обещают 7, оплата за результат заявлена у 2.

Источники
  1. Nosek B. A., Ebersole C. R., DeHaven A. C., Mellor D. T. The preregistration revolution. PNAS, 115(11), 2018. doi:10.1073/pnas.1708274114
  2. Sharma M. et al. Towards Understanding Sycophancy in Language Models. 2023. arXiv:2310.13548
  3. Es S., James J., Espinosa-Anke L., Schockaert S. RAGAS: Automated Evaluation of Retrieval Augmented Generation. 2023. arXiv:2309.15217 — faithfulness: утверждение выводимо из документа.
  4. Krippendorff K. Content Analysis: An Introduction to Its Methodology. Sage, 2nd ed., 2004 — кодбук, словарный анализ.
  5. Codd E. F. Extending the Database Relational Model to Capture More Meaning. ACM Transactions on Database Systems, 4(4), 1979 — трёхзначная логика, отсутствие значения.
  6. Gebru T. et al. Datasheets for Datasets. Communications of the ACM, 64(12), 2021. doi:10.1145/3458723

Нужна такая же система?

Напишите в Telegram: отвечу сам, разберу вашу задачу и скажу, что из этого ей подходит.

Написать в Telegram
Другие проекты лаборатории
наверх