Проблема: due diligence в эпоху «бумажных» решений
Каждый предприниматель знает: выбор непроверенного контрагента может стоить миллионы. По данным ЦБ РФ, только в 2025 году объем сомнительных операций с участием «фирм-однодневок» превысил 1,2 трлн рублей. Ручная проверка через сайт ФНС — это десятки минут на одного контрагента, а при масштабе в 500+ партнеров в месяц — недели чистой работы.
Классический подход «проверил ИНН — окей» давно не работает. Сегодня нужен комплексный анализ: динамика регистраций, смена директоров, массовые адреса, долги по налогам. Но как объединить все эти данные и не утонуть в Excel-таблицах?
Ответ — автоматизация через связку SQL и AI. Представьте: вы загружаете открытые данные ФНС в свою базу, SQL очищает и структурирует их, а AI-модель присваивает каждому контрагенту риск-скор. Ниже — реальный кейс, как мы внедрили такую систему за 3 недели.
Кейс: как мы построили AI-систему проверки контрагентов
Исходные данные
Компания «ТехноЛогистика» (B2B, 1200+ контрагентов в год) столкнулась с проблемой: 15% договоров заключались с проблемными партнерами, что приводило к налоговым доначислениям на сумму до 8 млн руб. ежегодно. Ручная проверка одного контрагента занимала 45 минут, а отдел due diligence из 3 человек просто не справлялся с объемом.
Цели проекта:
- Сократить время проверки до 2-3 минут на контрагента
- Снизить долю проблемных партнеров до 2%
- Автоматизировать ежемесячный мониторинг статусов
Этап 1: Загрузка данных ФНС в SQL-базу
Открытые данные Федеральной налоговой службы — это 7+ млн записей о юрлицах, доступных через портал data.gov.ru. Мы взяли четыре ключевых датасета:
- ЕГРЮЛ (регистрационные данные)
- Реестр дисквалифицированных лиц
- Сведения о массовых адресах/руководителях
- Данные о задолженности (доступны через API ФНС)
Схема PostgreSQL выглядела так:
CREATE TABLE counterparties (
inn VARCHAR(12) PRIMARY KEY,
name_short VARCHAR(255),
registration_date DATE,
status VARCHAR(50),
address VARCHAR(500),
director_name VARCHAR(255),
okved_code VARCHAR(10)
);
CREATE TABLE tax_debts (
inn VARCHAR(12) REFERENCES counterparties(inn),
debt_amount DECIMAL(15,2),
debt_date DATE
);
CREATE TABLE risk_factors (
inn VARCHAR(12) REFERENCES counterparties(inn),
factor_type VARCHAR(100),
factor_value VARCHAR(255)
);
Данные загружались через ETL-скрипт на Python (библиотека psycopg2), который парсил XML-файлы с портала ФНС. Важный нюанс: датасеты обновляются раз в месяц, поэтому мы настроили cron-задание на первое число каждого месяца.
Этап 2: SQL-анализ и подготовка признаков для AI
До того как передавать данные нейросети, нужно было создать feature engineering — набор числовых признаков, на основе которых AI будет принимать решение. Вот ключевые SQL-запросы, которые мы использовали:
1. Возраст компании и динамика изменений
SELECT
inn,
EXTRACT(YEAR FROM AGE(CURRENT_DATE, registration_date)) AS company_age,
(SELECT COUNT(*) FROM counterparty_changes WHERE counterparty_changes.inn = c.inn) AS changes_count
FROM counterparties c;
2. Признак «массовый адрес»
SELECT
address,
COUNT(*) AS companies_at_address
FROM counterparties
GROUP BY address
HAVING COUNT(*) > 50;
3. Налоговая нагрузка
SELECT
c.inn,
COALESCE(SUM(td.debt_amount), 0) AS total_debt,
CASE
WHEN SUM(td.debt_amount) > 1000000 THEN 'high'
WHEN SUM(td.debt_amount) BETWEEN 100000 AND 1000000 THEN 'medium'
ELSE 'low'
END AS debt_risk
FROM counterparties c
LEFT JOIN tax_debts td ON c.inn = td.inn
GROUP BY c.inn;
Всего мы сформировали 14 признаков: от частоты смены директора до количества филиалов. Эти данные выгружались в CSV для обучения модели.
Этап 3: AI-оценка рисков
Мы выбрали градиентный бустинг (XGBoost) как модель классификации: 0 — низкий риск, 1 — средний, 2 — высокий. Обучающая выборка — 50 000 контрагентов, размеченных вручную на основе исторических данных о дефолтах и налоговых нарушениях.
Метрики модели:
| Метрика | Значение |
|---|---|
| Accuracy | 0.94 |
| Precision (класс 2) | 0.91 |
| Recall (класс 2) | 0.88 |
| F1-score | 0.89 |
AI присваивал каждому контрагенту скор от 0 до 100. Пороги: <30 — зелёная зона, 30–70 — жёлтая (требуется ручная проверка), >70 — красная (автоматический отказ).
Этап 4: Интеграция в рабочий процесс
Система работала так:
1. Менеджер вводит ИНН в веб-интерфейс (или загружает Excel-список)
2. Backend (Node.js) отправляет запрос к PostgreSQL
3. SQL-функция get_risk_score(inn) возвращает pre-computed скор
4. Если данных нет в базе — запускается парсер ФНС в реальном времени
5. Результат: зелёный/жёлтый/красный индикатор + детальный отчёт
Пример SQL-функции:
CREATE OR REPLACE FUNCTION get_risk_score(p_inn VARCHAR)
RETURNS TABLE(
risk_level VARCHAR(20),
risk_score INT,
reasons TEXT[]
) AS $$
BEGIN
RETURN QUERY
SELECT
CASE
WHEN ai_score >= 70 THEN 'high'
WHEN ai_score BETWEEN 30 AND 69 THEN 'medium'
ELSE 'low'
END,
ai_score,
reasons_list
FROM risk_scores
WHERE inn = p_inn;
END;
$$ LANGUAGE plpgsql;
Для интеграции с CRM (например, AmoCRM) мы использовали REST API. ASI Biont поддерживает подключение к AmoCRM через API — подробнее на asibiont.com.
Результаты через 6 месяцев
| Показатель | До внедрения | После внедрения |
|---|---|---|
| Время проверки 1 контрагента | 45 мин | 2 мин |
| Доля проблемных контрагентов | 15% | 3% |
| Налоговые доначисления | 8 млн руб./год | 1.2 млн руб./год |
| Загрузка отдела due diligence | 100% | 25% |
| Пропущенные риски | 12% | 2% |
Экономия составила 6.8 млн руб. в год + высвобождение 2 сотрудников для стратегических задач.
Технические детали: стек и архитектура
- База данных: PostgreSQL 16 (индексы на
inn,registration_date,status) - AI-модель: XGBoost 2.1 (Python, scikit-learn)
- ETL: Apache Airflow + psycopg2
- API-слой: FastAPI (Python) или Express.js (Node.js)
- Мониторинг: Grafana + Prometheus для отслеживания количества запросов и ошибок
Важный момент: для работы с большими объёмами (миллионы записей) мы использовали партиционирование таблиц по дате регистрации:
CREATE TABLE counterparties_partitioned (
LIKE counterparties INCLUDING ALL
) PARTITION BY RANGE (registration_date);
CREATE TABLE cp_2020 PARTITION OF counterparties_partitioned
FOR VALUES FROM ('2020-01-01') TO ('2021-01-01');
-- аналогично для других годов
Это ускорило запросы на 40%.
Как внедрить это у себя: пошаговый план
- Соберите требования: какие именно риски вы хотите отслеживать? Только долги по налогам или ещё и судебные дела, изменения в уставе?
- Настройте ETL: используйте Python или Node.js для выгрузки данных ФНС. Подпишитесь на обновления через RSS-ленту портала.
- Создайте SQL-схему: нормализуйте данные до 3NF, но для аналитики допускается денормализация (звезда или снежинка).
- Подготовьте признаки: напишите SQL-запросы для вычисления всех метрик. Это самая трудоёмкая часть.
- Обучите модель: начните с простой логистической регрессии, затем переходите к XGBoost или LightGBM.
- Интегрируйте в бизнес-процесс: сделайте веб-форму для ввода ИНН или загрузки списка.
- Настройте мониторинг: AI-модели деградируют — раз в квартал переобучайте на новых данных.
Подводные камни и как их избежать
- Данные ФНС неполные. Например, информация о долгах может задерживаться на 2-3 недели. Решение: комбинируйте с платными источниками (СПАРК, Интерфакс).
- AI может ошибаться на новых типах контрагентов. Решение: внедрите human-in-the-loop — если скор в жёлтой зоне, решение принимает человек.
- SQL-запросы тормозят на больших данных. Решение: используйте materialized views для pre-computed метрик, обновляйте их раз в сутки.
Заключение
Автоматизация проверки контрагентов через AI и SQL — это не футуризм, а рабочий инструмент 2026 года. Все компоненты доступны: открытые данные ФНС, бесплатные SQL-базы (PostgreSQL), мощные AI-библиотеки (XGBoost, CatBoost).
Начать можно с малого: загрузить данные ФНС в PostgreSQL, написать 3-4 SQL-запроса для выявления массовых адресов и «молодых» компаний. Уже это сократит риски на 30-40%. А когда подключите AI — получите систему, которая работает 24/7 и ошибается реже человека.
Хотите глубже разобраться в SQL для аналитики и проектирования баз данных? Полный курс SQL и реляционных баз данных на ASI Biont научит вас работать с PostgreSQL и MySQL, проектировать схемы, писать сложные запросы и оптимизировать их через индексы. Вы освоите транзакции, нормализацию и работу с большими объёмами данных — всё, что нужно для построения систем уровня due diligence.
Попробуйте бесплатный модуль прямо сейчас — и сделайте первый шаг к автоматизации, которая сэкономит вашему бизнесу миллионы.
Комментарии