ИИ-аналитик конкурентов
Программа обходит сайты конкурентов и собирает цены, сроки и обещания в одну таблицу. В прогоне по нише из 29 открывшихся сайтов цены разошлись в десять раз: от 15 000 до 150 000 ₽ за месяц.
Опубликовано 25.08.2026 · цифры сверены 01.09.2026
Как разобрать конкурентов с ИИ: восемь шагов
- Ниша и город. Назовите их точно: «продвижение сайтов, Москва». От этой строчки зависит весь список.
- Список компаний. Соберите всех, кого находит поиск, а не тройку известных. В нашем прогоне нашлось 76 компаний.
- Чистка руками. Вычеркните агрегаторы, каталоги и чужие ниши. Из 76 осталось 30 — это единственный ручной шаг.
- Что сравниваем. Выпишите признаки до сбора: цена, сроки, форма заявки, калькулятор, обещания.
- Сбор страниц. Берите главную и несколько внутренних, первыми — те, где цены и тарифы, иначе соберутся одни меню.
- Цитата обязательна. Просите ответ только с цитатой: «процитируй, где на странице названа цена». Без цитаты ответ не принимается.
- Проверка цитат. Сверьте: цитата не пустая, в ней есть сумма или срок, и эти числа действительно встречаются на странице.
- Одна таблица. Сведите всё в таблицу и посмотрите разброс. У нас цены разошлись в десять раз: от 15 000 до 150 000 ₽.
Что под какую задачу
- Разовый разбор ниши — хватит бесплатных лимитов и одного вечера.
- Слежение за ценами — нужен постоянный список адресов и расписание, иначе данные стареют за месяц.
- Ниша без сайтов — если конкуренты живут в соцсетях и на маркетплейсах, этот способ не подходит.
Ниже — живой прогон по 30 сайтам: что он показал и что в нём стоило денег.
Где проект сейчас
Сервис собран, прогнан вживую и оставил после себя проверяемые артефакты. Код — два файла: run.py на 835 строк делает замер, dashboard.py на 588 строк собирает поверх него карту ниши и страниц заново не качает.
Боевой прогон состоялся 21.08.2026 по нише «продвижение сайтов, Москва»: 30 сайтов в списке, 175 кредитов Firecrawl, около 45 минут — длительность восстановлена по времени файлов сырья, отметок времени в журнале нет. В тот же вечер, в 18:23, по уже скачанным текстам собрался дашборд — за ноль кредитов Firecrawl и 29 дополнительных обращений к модели.
Что не сделано и названо: прогона по нише, объявленной в карточке сервиса — юридические услуги, выборка 50, — ещё не было. Открытых долга два: бета-прогон живым новичком по файлам без автора и расхождение документации с кодом — инструкция ведёт человека заводить ключ Yandex Cloud, а рабочий скрипт ходит в OpenRouter.
Что было нужно
Требование одно: увидеть, что отвечает клиенту не тройка известных конкурентов, а вся ниша целиком. Подрядчик считает конкурентов штуками — по опубликованному прайсу 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 |
Как собрано
Конвейер линейный и пересекает границу платного ровно дважды: поиск компаний и обход сайтов. Всё остальное — свой код на одном файле, из зависимостей только requests.
Поиск отдаёт 76 компаний за 36 кредитов, дальше единственный ручной шаг: человек глазами вычёркивает агрегаторы, дубли и чужие ниши — 76 превращаются в 30. Каждый сайт открывается настоящим браузером: главная плюс до пяти внутренних страниц, причём ссылки с ценами, тарифами и прайсом берутся первыми, иначе пять слотов съедает верхнее меню. Параллельно идёт бесплатная проба обычным запросом — статус и время загрузки в миллисекундах.
Текст уходит модели дважды: «есть ли на странице ответ на вопрос клиента» с обязательной цитатой и «какой это подрядчик» с ярлыком из трёх значений. Между её ответом и строкой в таблице стоят три ступени кода: цитата не пуста → в цитате есть сумма или срок → числа из цитаты найдены на странице. Цена, форма заявки и калькулятор считаются кодом по словарю, без модели.
Все скачанные тексты ложатся в raw/ — 155 страниц, 52,2 МБ в 58 файлах. Из-за этого дашборд с картой 24 признаков и ценовым распределением строится поверх готового и не тратит ни одного кредита, а пересчёт после правки проверки стоит ноль.
Между ответом модели и строкой в таблице всегда стоит проверка кодом: «да» без числа, которое нашлось на самой странице, до таблицы не доходит.
На чём держится конструкция
Шесть правил, каждое сформулировано через отброшенную альтернативу. Три из шести — это места, где код не доверяет модели, ещё три — где не доверяет самому себе.
Все шесть проверяются на артефактах прогона за минуту: колонка с цитатой открывается рядом с сайтом, знаменатель виден в паспорте замера, три состояния проверки различимы прямо в таблице.
Решения и основания
Восемь решений, у каждого — замер или прямое ограничение внешнего сервиса за спиной. Ни одно не принято «для чистоты»: каждое либо снимает названную ошибку, либо укладывается в чужой лимит.
Самое дорогое по последствиям — пауза между запросами: она одна растягивает прогон до сорока пяти минут и названа в секции ограничений отдельной строкой.
| Решение | Основание |
|---|---|
| Страницы открывает сервис с рендером, а не обычный запрос | половина сайтов малого бизнеса рисуется в браузере, и простой запрос вернёт пустой каркас. В прогоне это подтвердилось ровно один раз: один сайт из 29 отдал текст только через рендер, а прямому запросу не ответил |
| Потолок 6 страниц на сайт, страницы с ценами первыми | пять внутренних слотов иначе съедает верхнее меню. Порядок групп жёсткий: цены, тарифы, прайс → услуги → кейсы и «о нас» |
| Не больше двух страниц из одного раздела | без этого все пять слотов уходят в один подраздел и сайт остаётся непрочитанным |
| Пауза 6,5 секунды между обращениями к обходчику | бесплатный тариф пропускает 10 запросов в минуту. Прогон идёт медленно намеренно — это цена бесплатного тарифа, а не медленный код |
| Ярлык типа подрядчика — из закрытого списка трёх значений | свободный ярлык нельзя посчитать: у 29 сайтов вышло бы 29 формулировок. Чужое значение код отбрасывает молча |
| Тексты сайтов сохраняются в raw/ и не перечитываются | пересчёт после правки проверки стоит ноль кредитов. В прогоне 21.08 три сайта прошли по кэшу за 0 кредитов — 17 страниц, скачанных раньше |
| Дашборд строится поверх сохранённых текстов и страниц заново не качает | карта из 24 признаков и ценовое распределение стоили 0 кредитов Firecrawl. Цена этого решения — 29 обращений к модели, которых нет в паспорте замера |
| Смета печатается до старта, расход упирается в потолок | 30 сайтов × до 6 страниц = до 180 кредитов; запускали с потолком 220 при умолчании 400 — потолок выставлялся руками, и почему именно 220, в файлах прогона не записано. Потратили 139, осталось 81. Потолок проверяется перед каждым сайтом, а не в конце |
Чем платит конструкция
Главная плата — время. Пауза 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 процентных пункта, и проценты создают точность, которой в замере нет |
Что получилось
Прогон 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 МБ сохранённых текстов. Цифры страницы пересчитываются по этому архиву; две, которые по нему не считаются, названы в «Граблях».
Кауфман Lab — лаборатория архитектуры искусственного интеллекта. Мы проектируем процессы и методологии. Код устаревает с каждым новым поколением моделей — методология нет, поэтому в проектах разбирается именно она. Собрать систему по этой схеме сможет любая современная нейросеть.
Что пошло не так
Десять отказов, все найдены при разборе собственных артефактов прогона, а не при сборке. Восемь из десяти — про учёт: расход, время, охват поиска и паспорт замера расходятся с тем, что реально произошло. Ещё два — про определение: цифра называется не тем, что она меряет.
Самый дорогой по последствиям — паспорт замера. Он объявляет метод «firecrawl search + scrape → yandexgpt-lite», а в коде стоит другая модель и другой провайдер; сам файл переписан 25.08, через четыре дня после прогона, тогда как таблица и журнал записаны 21.08 в 17:03:58. Паспорт, переписанный задним числом, перестаёт быть паспортом.
Кредитов в паспорте замерашаг поиска пишет свою цену в паспорт
Обращений к модели в счёте прогонадашборд пишет свой расход сам
Что сознательно не вошло
Границы делятся на четыре вида, и три из них — решения, а не недоделки. Отдельно стоит «отключено»: из 148 мусорных доменов в поиск уходят только последние 60, потому что на длинном списке исключений сервис молча возвращает ноль результатов при успешном ответе.
Рублёвой себестоимости прогона в репозитории нет вовсе, и это тоже граница: код считает кредиты и вызовы, а не деньги. Карточка сервиса считает рубли по модели, которой в коде нет, — цифра помечена долгом и здесь не повторяется.
Что обычно спрашивают
Семь вопросов — те, что задают про этот замер чаще всего. Первый из них — определение предмета: он написан так, чтобы его можно было процитировать вырезанным из страницы.
В каждом ответе стоит число из прогона 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.
- Nosek B. A., Ebersole C. R., DeHaven A. C., Mellor D. T. The preregistration revolution. PNAS, 115(11), 2018. doi:10.1073/pnas.1708274114
- Sharma M. et al. Towards Understanding Sycophancy in Language Models. 2023. arXiv:2310.13548
- Es S., James J., Espinosa-Anke L., Schockaert S. RAGAS: Automated Evaluation of Retrieval Augmented Generation. 2023. arXiv:2309.15217 — faithfulness: утверждение выводимо из документа.
- Krippendorff K. Content Analysis: An Introduction to Its Methodology. Sage, 2nd ed., 2004 — кодбук, словарный анализ.
- Codd E. F. Extending the Database Relational Model to Capture More Meaning. ACM Transactions on Database Systems, 4(4), 1979 — трёхзначная логика, отсутствие значения.
- Gebru T. et al. Datasheets for Datasets. Communications of the ACM, 64(12), 2021. doi:10.1145/3458723