惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
宝玉的分享
宝玉的分享
Jina AI
Jina AI
Martin Fowler
Martin Fowler
W
WeLiveSecurity
V
Vulnerabilities – Threatpost
GbyAI
GbyAI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Privacy International News Feed
D
DataBreaches.Net
Security Archives - TechRepublic
Security Archives - TechRepublic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Scott Helme
Scott Helme
U
Unit 42
Hacker News - Newest:
Hacker News - Newest: "LLM"
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
Vercel News
Vercel News
I
InfoQ
N
Netflix TechBlog - Medium
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
IT之家
IT之家
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
S
Securelist
S
Schneier on Security
T
Troy Hunt's Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
Cisco Blogs
H
Hacker News: Front Page
Spread Privacy
Spread Privacy
T
Tenable Blog
博客园 - Franky
Apple Machine Learning Research
Apple Machine Learning Research
Recent Commits to openclaw:main
Recent Commits to openclaw:main
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园_首页
量子位
AI
AI
L
LINUX DO - 最新话题
J
Java Code Geeks
小众软件
小众软件
爱范儿
爱范儿
月光博客
月光博客
H
Help Net Security
aimingoo的专栏
aimingoo的专栏

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Я построила диагностику «стоит ли это автоматизировать» — и она трижды говорила глупости. Разбор ошибок
Mamalytic · 2026-05-25 · via Все публикации подряд на Хабре

Я построила диагностику «стоит ли это автоматизировать» — и она трижды говорила глупости. Разбор ошибок

Уровень сложностиПростой

Время на прочтение10 мин

Охват и читатели7.3K

Кейс

Инфографика-диалог из четырёх реплик между заказчиком и аналитиком, мемная

Инфографика-диалог из четырёх реплик между заказчиком и аналитиком, мемная

В страховании сейчас распространенный сценарий: руководству приходит гениальная идея «внедрить AI», оно спускает его на функциональных директоров — «придумайте, что у вас автоматизировать». Директор идёт к ChatGPT, описывает процесс, получает уверенный ответ «вам подойдёт LLM-агент». Идёт к вендору — вендор приносит презентацию и ценник. Идёт к консультантам — те делают аудит и тоже находят, что предложить.

И ни один из этих советчиков не скажет «не делайте, не окупится». У LLM это встроено в обучение — она вежливая и полезная. У вендора это бизнес-модель. У консультанта это контракт.

Получается, что у руководителя функции — реальная проблема с реальными деньгами — нет источника совета, который умеет говорить нет.

Я сделала такой источник, или мне это только кажется (смайл). Это бесплатный диагностический сканер для функций страховой компании, без LLM в контуре обработки и без регистрации. Он принимает ответы пользователя про конкретный процесс и говорит, в какую зону этот процесс попадает — зелёную (делать), жёлтую (гибрид с человеком в петле) или красную (не автоматизировать, экономика не сходится) + предлагает релевантные решения.

С чего я вдруг такой альтруист — делать бесплатные инструменты? Конечно, у меня свой интерес, я готовлю образовательный курс для страховщиков, а умные маркетологи говорят, что сейчас без лидмагнита никуда. Дай человеку бесплатную ценность, и если окажется полезно, он придёт. Но мой корыстный интерес не отменяет того, что в сканер вложена двадцатилетняя экспертиза в страховых процессах и опыт аналитика. Это самостоятельный инструмент, которым можно пользоваться и на курс ко мне не идти и даже контакты не оставлять, PDF с результатами скачивается и без этого.

Так как я хотела сделать хорошо, то прежде чем сканер увидел первого пользователя, мне пришлось тестировать его трижды — каждый раз он на чём-то да выдавал фигню. Эту статью я пишу как раз про эти истории — что выдавал и как это чинила. Чтобы вы не набивали мои шишки. Предположу, что кейс будет полезен для того, кто строит диагностические инструменты, и для всех, кто этими инструментами пользуется.

Почему не «спросите у LLM»

Сначала короткое обоснование, почему сканер не на LLM. Это важно, потому что иначе вопрос «а почему ты не сделала просто чат-бота поверх GPT» висит и портит всё дальнейшее.

Воспроизводимость. Диагностика, которая на одних и тех же ответах выдаёт сегодня одно, а завтра другое — бесполезна как управленческий артефакт. Совет директоров не примет «AI так сказал», им нужно «при таких-то параметрах процесс попадает в такую-то зону по таким-то правилам».

Объяснимость. Решение «этот процесс в красной зоне» должно сопровождаться «потому что вот эти три признака не отмечены». LLM объяснение генерирует постфактум, и оно может не совпадать с реальной причиной. Это окей для творческой задачи, для управленческого вывода — мимо.

Цель — чтобы из самого результата было видно, почему ответ именно такой, а не иначе. Поэтому рекомендации формируются детерминированно из ответов пользователя по жёстким правилам. Дальше — как именно, и где это давало сбои на ранних версиях.

Архитектура: три слоя, каждый о своём

Сканер устроен из трёх слоёв, и каждый отсекает что-то своё, чтобы следующий слой не работал впустую.

Архитектура сканера: три слоя — фильтр, экспресс-оценка, детальный разбор. Каждый слой отсекает свою категорию процессов, чтобы следующий не работал впустую

Архитектура сканера: три слоя — фильтр, экспресс-оценка, детальный разбор. Каждый слой отсекает свою категорию процессов, чтобы следующий не работал впустую

Рис. 1. Архитектура сканера. Слой-фильтр отсекает редкие/малозатратные/уже автоматизированные процессы. Слой экспресс-оценки разбрасывает остальные по трём зонам. Слой детального разбора даёт профиль и рекомендации.

Слой-фильтр. Три вопроса в начале — как часто выполняется процесс, сколько уходит трудозатрат, есть ли уже автоматизация. Если процесс редкий, или малозатратный, или уже полностью автоматизирован — он отсекается как «не приоритет», и в детальный разбор не идёт. Это банально, но без этого слоя сканер тратил бы 18 вопросов на процессы, которые в принципе не стоит анализировать.

Слой экспресс-оценки. Для каждого процесса функции — несколько чекбоксов про применимость (объём, повторяемость, чистота данных) и сложность (исключения, цена ошибки). На пересечении этих двух осей зона: применимость высокая и сложность низкая — зелёная, применимость низкая или сложность очень высокая — красная, остальное — жёлтая. Грубая, но быстрая разметка по всей функции, чтобы получить скрининг функции за пять минут или найти процессы, которые копать дальше.

Слой детального разбора. Любой процесс, который захочется разобрать глубже, проходит через расширенный опросник. Из ответов считаются индексы (рутинность, готовность данных, оргзрелость, текстовая работа, классификация, визуал, многошаговость). Из индексов определяется профиль — Рутинёр, Текстовик, Визуал, Классификатор, Многорукий или Незрелый. Для каждого профиля заранее заготовлены подходящие классы инструментов с оценкой сложности, эффекта, окупаемости.

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

На бумаге всё это выглядело логично. Дальше три истории, в каждой из которых что-то шло не так.

Баг №1: инструмент рекомендовал AI тому, кому сам сказал «не автоматизируй»

Логика выбора зоны и логика выбора инструмента работали параллельно, не зная друг о друге.

Зона определялась по применимости и сложности. Инструмент определялся по своим правилам — есть ли в процессе классификация, насколько чистые данные, сколько исключений. По отдельности обе функции вели себя разумно. В сборке получалось так: процесс попадал в красную зону (применимость низкая, экономика не сходится, не автоматизировать) — и одновременно получал в графе «подходящий инструмент» что-то вроде «LLM-ассистент с человеком в петле».

Прогон всех комбинаций ответов показал, что красная зона и подзона «жёлтая с высокой ценой ошибки» выдавали одинаковые инструменты в восьми ветках. Я это поймала на тестах — гоняла сканер с помощью Claude Code по разным комбинациям ответов, смотрела, что выдаёт, и в одном из проходов увидела, что процесс с красной зоной в графе «инструмент» получил «LLM-ассистент с человеком в петле». Если бы это попало в пользователя, я бы не обрадовалась.

Чинила тривиально: ввела явный guard. Если зона красная — поле «инструмент» всегда «не автоматизировать, экономика не сходится», независимо от прочих сигналов. То же для уровня инвестиций — для красной зоны смысла его считать нет.

Баг №1 до и после починки: процесс в красной зоне получал рекомендацию LLM, после введения guard — единый согласованный вывод

Баг №1 до и после починки: процесс в красной зоне получал рекомендацию LLM, после введения guard — единый согласованный вывод

Рис. 2. Баг №1. До починки: процесс попадал в красную зону, но получал рекомендацию AI-инструмента — два модуля выдавали противоречащие выводы. После guard: для красной зоны инструмент не считается, согласованность обеспечена явным правилом.

Инженерный урок: две части системы, которые логически связаны, не обязательно согласованы между собой автоматически — их надо связывать явным правилом. Это базовая вещь, но она требует, чтобы кто-то держал в голове всю систему сразу — а это редкое умение, чаще каждую часть пишут отдельно и потом удивляются.

Управленческий урок: Если ваша аналитика в одной таблице говорит «нет», а в другой «вот как сделать» — это серьёзная несогласованность, она подрывает доверие к выводу целиком, даже если каждая таблица сама по себе верна. Бдим и проверяем.

Баг №2: «классификация по числам» и «классификация по тексту» — это не одно и то же

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

Проблема в том, что «классификация» — это два совершенно разных мира.

Классификация по структурным полям — это классический ML. Есть таблица с числовыми и категориальными признаками, есть метка, обучаем модель. В зависимости от объёмов, можно вообще обойтись «малой кровью» — моделью на локальном ПК с минимумом затрат.

Классификация по неструктурированному тексту — это уже NLP или LLM. Совсем другой класс инструментов, другой бюджет, другие ограничения (тот самый 152-ФЗ для облачных моделей, например). Если на входе у вас текст обращения клиента — классический ML на нём работает плохо, нужна языковая модель.

Обеим ситуациям сканер советовал «классический ML — задача классификации/прогноза». Для процессов с табличными данными это было верно. Для процессов вроде «классификация обращений в контакт-центр по тематике» — совершенно неверно, потому что нет никакой таблицы с признаками, есть тексты, и нужен NLP.

Эти два класса задач различаются и по ограничениям. Классический ML на структурированных данных страховщик чаще всего разворачивает у себя на собственной инфраструктуре, никаких внешних сервисов не нужно. А вот NLP-обработка текстов клиентских обращений сразу упирается в 152-ФЗ: текст обращения часто содержит персональные данные, и отправить его в облачную LLM нельзя, нужно on-prem-решение или российский аналог. Это совсем другой бюджет, другие сроки, другая архитектура. Поэтому одна рекомендация на оба случая не просто неверна по технике — она ещё и вводит в заблуждение по стоимости и срокам.

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

Инженерный урок: один признак, под которым прячутся две разные сущности — частая ошибка проектирования опросников. Если ответ «да» может означать две разные вещи с разными последствиями — это два вопроса, а не один. Узнаваемо для всех, кто проектирует анкеты, формы, схемы данных, поля справочников.

Управленческий вывод: когда вы получаете отчёт «у нас X% клиентов недовольны обслуживанием», полезно спросить, из какого вопроса это X% получено, потому что недовольны работой медицинского колл-центра и недовольны рекомендациями врача для ДМС два совершенно разных «недовольны».

Баг №3: «Рутинёр» как мусорка для всего непонятного

Профиль процесса в детальном разборе определялся так: смотрим на индексы (рутинность, текст, классификация, визуал, многошаговость) и сравниваем с порогами. Если индекс «текст» выше порога — Текстовик. Если «классификация» — Классификатор. Если «визуал» — Визуал. И тд. Если ничего не дотянуло — Рутинёр.

Звучит разумно, но по факту реальные процессы часто смешанного типа.

Возьмем процесс, у которого индекс «классификация» вышел на 55, индекс «текст» — на 53, индекс «рутинность» — на 48. По жёстким порогам он не дотянул ни до Классификатора (нужно было выше), ни до Текстовика. Падает в Рутинёра. И получает рекомендации вроде «RPA на типовые шаги» — хотя на самом деле там и текст, и классификация, и нужен совсем другой инструмент.

Хуже того: процесс с classification=55 и text_focus=53 при следующем прогоне (где, скажем, веса чуть-чуть сместились) мог уже наоборот вылезти в Классификатора. То есть результат «дребезжал» на границе порога. Любой управленческий инструмент, который на близких данных выдаёт разные ответы — повод его доработать.

Чинила двумя действиями.

Первое: вместо жёстких порогов сравниваю топ-1 и топ-2 среди специализированных индексов. Если топ-1 явно опережает топ-2 — назначаю специализированный профиль. Если разрыв маленький — «специализации не выделились». Это устраняет пограничные колебания.

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

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

Управленческий урок: если ваша сегментация клиентов или процессов имеет группу «и все остальные» — она чаще всего самая большая и самая бесполезная. Я об этом уже писала в первой статье про дерево решений и граф работ, но этот баг сегментации вообще много где вылезает и заслуживает внимания аналитика.

Баг №4, непроцессный: технически верная и экономически абсурдная рекомендация

Сканер давал технически корректные ответы, которые управленчески были неверны.

Пример. Есть процесс «анализ убыточности по узким сегментам» — выполняется раз в квартал, занимает у аналитика день, делается 5 раз в год. Пользователь честно отмечает «есть классификация» (там действительно строится модель по сегментам). Сканер видит «классификация + чистые данные» и радостно рекомендует ML-классификацию или, если данных мало, ML с разметкой.

Формально верно. Реально — может не окупиться. Машинное обучение на 5 прогонах в год — это инфраструктура, разметка, поддержка модели, мониторинг качества. Стоимость такая, что разумнее посадить аналитика и пусть он раз в квартал делает руками. Сканер этого не учитывал, потому что ответы про частоту и объём использовались только в фильтре «приоритетно — нет», а на выбор инструмента не влияли.

Починка: каждая рекомендация теперь размечена по стоимости (дёшево / средне / дорого). Если процесс мелкий по объёму и трудозатратам, а в рекомендациях есть дорогой инструмент — в начале списка предупреждений появляется явный warning: «эти инструменты окупаются только при тысячах операций в год». Сам инструмент из списка не удаляется — пользователь видит весь спектр и видит экономическое ограничение отдельно, и сам решает.

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

Управленческий урок: если ваша AI-стратегия не считает экономику каждой инициативы — через год вы потратите бюджет на пилоты, два из которых сдохнут, два дадут невнятный результат, и один, может быть, окупится.

Что из этого следует

Четыре правила проектирования диагностических инструментов: связывайте модули явным правилом, один признак — одна сущность, защитный зазор честнее жёстких порогов, технически верно не равно экономически разумно

Четыре правила проектирования диагностических инструментов: связывайте модули явным правилом, один признак — одна сущность, защитный зазор честнее жёстких порогов, технически верно не равно экономически разумно

Все четыре бага (или нюанса, как хотите), если присмотреться, имеют одну природу. Сканер слишком охотно говорил «да» — каждый отдельный модуль был оптимистом по умолчанию. Та же болезнь, что у LLM-советчика и у вендора с презентацией — просто в детерминированном виде.

Может возникнуть вопрос: а чего ты такая умная, на этапе разработки методологии сканера это всё не предусмотрела? Обычно его задают те, кто реальной архитектуры не проектировал. В моей корпоративной жизни даже ТЗ от исходного запроса бизнеса отличается как банан от помидора, а уж итоговое архитектурное решение и подавно. Так что умными быть и критиковать — хорошо, но практика она такая: сначала сделали, потом по тестам поняли, что что-то не то, и починили. Хорошо, если вообще починили, а не отдали в прод как есть.

В общем, на мой взгляд, такого сканера страховщикам не хватало, и он будет полезен хотя бы как верхнеуровневая оценка «на подумать».

Сканер открыт, без регистрации, можно прогнать свою функцию: datadriven-course.ru/scanner. Если найдёте, что он где-то всё ещё говорит глупости — буду благодарна, если расскажете в комментариях, где именно. Допускаю, что могла предусмотреть не все косяки; хорошо бы их вычислить раньше, чем они кого-нибудь подведут.

Маленькая техническая ремарка для пользователей Safari. Если открываете на iPhone или Mac в Safari, можно увидеть предупреждение «мошеннический сайт». Это ложное срабатывание — Google Safe Browsing сайт проверил чисто, VirusTotal 0 из 91, у Яндекса тоже зелёный. Apple на три запроса не отвечает. Открывается без предупреждения в Chrome, Firefox, Яндекс.Браузере или со смартфона на Android. Подробнее в моём вопросе на Q&A — если знаете решение, буду благодарна.

Надеюсь, эта статья будет полезна аналитикам и интересующимся страхованием.