Сравнение двух сохранённых предложений: какие суммы, сроки и элементы пакета изменились. Повторим учебный пример бесплатным модулем competitor-offer-radar, проверим расчёт и подготовим вопросы для решения. На выходе — JSON с исходными значениями и причинами, по которым некоторые условия нельзя сравнивать.
Вчера пакет конкурента стоил 10 000 ₽, сегодня — 12 500 ₽. Кажется, собственный прайс тоже пора менять. Но что вошло в новую сумму? Остался ли прежний объём работы? Если смотреть только на цену, можно принять решение по двум разным услугам.
В этом практикуме сравним условия одного вымышленного предложения в две даты. Модуль считает изменения локально. ИИ-агент может помочь подготовить файлы и объяснить отчёт, если умеет читать папку и выполнять команды. Показанный результат действительно получен запуском Python; он не является ответом Codex или Claude Code. Код модуля разработан с помощью ИИ.
1. Посмотрите, что именно изменилось
В релизе есть два учебных файла: examples/before.json и examples/after.json. Даты наблюдений — 1 и 8 октября 2026 года. Одинаковый ID strategy-session связывает записи об одной стратегической сессии. Название само по себе не доказывает, что перед нами один продукт.
| Условие | 1 октября | 8 октября | Изменение |
|---|---|---|---|
| Заявленная сумма за пакет | 10 000 ₽ | 12 500 ₽ | +2 500 ₽; +25% |
| Срок | 4 рабочих дня | 6 рабочих дней | +2 дня; +50% |
| Интервью | 2 встречи | 1 встреча | На одну меньше |
| Отчёт | 1 документ | 1 документ | Количество прежнее |
Валюта, единица оплаты, правило включения налогов и минимальный заказ совпадают. Разницу заявленных сумм посчитать можно. Но интервью теперь одно: состав изменился. Поэтому программа выдаёт scope_changed_warning: true и причину components_changed. Рост на 25% нельзя назвать чистым подорожанием одинакового объёма услуг.

Можно скачать первый снимок, второй снимок и полный фактический результат. URL на example.test обозначают вымышленный источник. Модуль их не посещает.
2. Запустите готовый пример
Уточнение от 13 октября 2026: основная ссылка теперь ведёт на закреплённые исходники с исправлением вывода кириллицы. Это не новый релиз. Первоначальный v0.1.0 сохранён как история. Инструкция установки через агента.
Скачайте файл Проверенные исходники ZIP и распакуйте его. Откройте терминал в появившейся папке competitor-offer-radar-7206178f1f6c7484c6f4463c62fe48d497b398d6. Нужен уже установленный Python 3.9 или новее. Сторонних библиотек и аккаунта для расчёта не требуется.
Сначала проверьте среду и оба файла. Эти команды ничего не меняют в исходных снимках. Все команды можно скачать в TXT:
python3 -B competitor_offer_radar.py doctor
python3 -B competitor_offer_radar.py validate examples/before.json
python3 -B competitor_offer_radar.py validate examples/after.json
В нашем прогоне doctor показал версию 0.1.0, режим offline, network: false и telemetry: false. Обе проверки вернули ok: true, по два предложения и synthetic: true. Если проверка завершилась ошибкой, сначала исправьте её по тексту ответа.
python3 -B competitor_offer_radar.py compare examples/before.json examples/after.json
Найдите в JSON строку strategy-session. Блок price содержит исходные суммы, absolute_change: "2500" и percent_change: "25". В delivery будут "2" и "50", а в components.changed — интервью до и после. Числа в выводе записаны строками; отсутствие значения сохраняется как null.
Первый запуск уже даёт полный расчёт. Для повторной работы можно дополнительно установить утилиту в отдельную новую папку:
python3 -B install.py --prefix ../offer-radar-installed
../offer-radar-installed/bin/competitor-offer-radar doctor
../offer-radar-installed/bin/competitor-offer-radar onboard --state-dir ../offer-radar-state
Команды выше выполняются из исходной папки. Каталог установки и каталог состояния находятся снаружи неё. Установщик копирует файлы из списка MODULE.json, создаёт локальный запускатель и отказывается перезаписывать существующую папку. PATH, настройки агента и фоновые службы он не меняет. Явный onboard показывает авторское приветствие один раз на выбранный каталог состояния; в обычных отчётах рекламы нет. Для удаления достаточно убрать именно созданные вами папки установки и состояния.
Проверенный прогон выполнен на macOS с Python 3.9.6. Эти команды используют синтаксис macOS/Linux; отдельную проверку Linux и Windows мы здесь не заявляем. Способы запуска на Windows описаны в инструкции закреплённой версии исходников.
3. Проверьте арифметику и отказ на ошибке
Два расчёта можно проверить независимо, по входным числам:
Сумма: (12 500 − 10 000) / 10 000 × 100 = 25%
Срок: (6 − 4) / 4 × 100 = 50%
Дополнительные два дня — это абсолютная разница; 50% — изменение относительно прежних четырёх дней. Поле pricing_scope: "declared_amount_only" ограничивает расчёт заявленной суммой. Ни формула, ни предупреждение о составе не оценивают качество результата.
Теперь проверьте понятную ошибку: передайте поздний снимок первым. Исходные файлы менять не нужно.
python3 -B competitor_offer_radar.py compare examples/after.json examples/before.json
Ожидается код выхода 2 и ответ invalid_input с сообщением after snapshot must be strictly later than before. Это корректный отказ: второе наблюдение должно быть позже первого. Частичного сравнения при такой ошибке не будет.
python3 -B -m unittest discover -s tests -v
Первоначальный ZIP был проверен 10 октября. 13 октября редакция повторила doctor, обе проверки validate, compare и 56 тестов из закреплённого исправленного архива исходников; все завершились успешно на macOS с Python 3.12.12. Самостоятельная проверка других ОС в этом обновлении не выполнялась. Проверка с обратным порядком файлов также дала ожидаемый отказ. Процессы выполнялись с запрещённым сетевым доступом. Они проверяют поведение программы, а не достоверность присланного прайса. Для настоящих данных всё равно потребуется сверка с источниками.
4. Дайте агенту точное задание
Этот запрос можно передать Codex, Claude Code или другому агенту с доступом к локальным файлам и запуску Python. Это инструкция для вашего повторения, а не запись уже состоявшегося ответа модели. Скачать промпт в TXT.
Прочитай README.ru.md и AGENTS.md в распакованном
competitor-offer-radar v0.1.0. Используй только учебные examples.
Ничего не скачивай и не подключай к аккаунтам.
Из папки пакета выполни doctor, validate для before.json
и after.json, затем compare в правильном порядке.
Запусти unittest discover -s tests -v.
Покажи команды, коды выхода и фактический результат.
Если запуск недоступен, назови ошибку; не придумывай вывод.
Для strategy-session отдельно проверь по исходным числам
разницу сумм, сроков и количества интервью.
Объясни pricing_scope и scope_changed_warning.
Проверь отказ при обратном порядке снимков.
Составь три вопроса для проверки предложения.
Не называй оффер хуже, услугу равнозначной или продукт закрытым.
Не дописывай неизвестные условия. Не публикуй файлы.
В этом задании достаточно запуска из папки: установка не обязательна. Если выберете установку, используйте отдельные команды выше и свободный каталог. Companion skill в пакете — инструкция агенту; наличие файла не означает автоматическую настройку конкретного клиента.
5. Подготовьте свои наблюдения
Начните с одного предложения, для которого у вас есть разрешённые сохранённые условия в две даты. Не восстанавливайте старую цену по памяти. Если прошлое наблюдение не сохранилось, запишите нынешнее и дождитесь следующего. Даты в файлах — время наблюдения, которое указываете вы; программа его не подтверждает.
- Сохраните идентичность. Один
idозначает один продукт в обе даты. Переименованный пакет нужно сначала сопоставить вручную; разные ID автоматически по цене не сравниваются. - Разделите точное и неизвестное.
price_basis: "exact"— точная сумма,"from"— цена «от». Две цены «от» не дают точного процента и получатnot_comparable. Неизвестное оставляйтеnull, не нулём. - Запишите условия цены. Валюта, единица оплаты, включение налогов и минимальный заказ должны быть известны и совпадать.
taxописывает налоги в сумме, а не налоговый режим компании.min_order: "1"означает минимум одну указанную единицу, например один пакет. - Укажите единицы срока и состава. Рабочие дни не равны календарным.
components: nullозначает неизвестный состав;[]— явно пустой список перечисленных компонентов.
Для реальных наблюдений укажите synthetic: false в обоих файлах, фактические даты и разрешённые URL источников. Не смешивайте их с учебными снимками. Суммы записывайте как "12500", без пробелов и символа валюты. Сверьте остальные поля с полной схемой в README и выполните validate для каждого файла.
Если агент помогает переносить данные, попросите сначала показать связь каждого числа с фрагментом предоставленного источника. Собственный CLI не отправляет сведения в сеть; передача материалов облачному агенту — отдельная операция. Для первого повторения достаточно вымышленных файлов, а рабочие снимки и результаты оставляйте приватными.
6. Превратите отчёт в вопросы к предложению
В учебном случае полезны три вопроса: что теперь заменяет второе интервью, какой результат получает заказчик и чем объясняется новый срок. Ответов в файлах нет. Нельзя придумать их за конкурента или объявить предложение слабее только потому, что сумма выросла.
Отсутствующий во втором файле starter означает лишь отсутствие ID в этом снимке. Появившийся audit — наличие новой записи. Закрытие и запуск продукта этим не доказаны. Скидки, отсрочка оплаты, регион, гарантии и договорные условия за пределами схемы тоже проверяются отдельно.
Такой отчёт помогает подготовить обсуждение своего предложения: какие условия сравнимы, где не хватает фактов и какой вопрос задать следующим. Если оффер один и условия простые, ручной таблицы может быть достаточно. Модуль полезен, когда хочется повторять одну проверку и сохранять исходные значения вместе с результатом.
Частые вопросы
Можно дать две ссылки вместо файлов?
Нет. Версия 0.1.0 читает два локальных JSON-снимка. Она не посещает сайты, не собирает прайсы и не создаёт расписание наблюдений. URL хранится как указание на источник.
Обязательно покупать подписку или ядро Lookatshow?
Нет. Модуль доступен по MIT, работает отдельно и не требует подписки, передачи контактов или покупки ядра. В архиве есть код, тесты и учебные данные.
Где здесь ИИ?
Агенту можно поручить подготовку структуры, запуск команд и разбор ограничений. Расчёт выполняет проверяемая Python-утилита. В этой статье показан её реальный локальный вывод; отдельный разговор с внешней моделью не выдаётся за выполненное демо.
Следующий шаг
Подготовил Дмитрий Лукашов. competitor-offer-radar — открытый модуль Lookatshow, единой системы управления маркетингом для ИИ-агентов. Он доступен в каталоге самостоятельных инструментов; автоматическая связка модулей в этом релизе не поставляется.
Для соседних задач есть проверка площадок РСЯ по CSV и сверка рекламных расходов с оплатами. Здесь следующий практический шаг — сохранить один разрешённый оффер в две даты и повторить сравнение.
Посмотрите формат личного обучения работе с ИИ. При обращении опишите, какие предложения сравниваете и какие исходные материалы уже есть. Это поможет обсудить подходящий сценарий занятия; сам модуль и учебный пример остаются бесплатными.
Источники и проверка
Материал подготовлен 10 октября 2026 года по публичному релизу v0.1.0, инструкции закреплённых исходников и двум учебным снимкам. Контракт и команды сверены с опубликованным пакетом. Показанные суммы относятся к вымышленному примеру; рост спроса, экономия или клиентский результат не измерялись.