Автоматизация проверки контрагентов через AI: SQL-анализ данных ФНС для снижения рисков

Проблема: 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%.

Как внедрить это у себя: пошаговый план

  1. Соберите требования: какие именно риски вы хотите отслеживать? Только долги по налогам или ещё и судебные дела, изменения в уставе?
  2. Настройте ETL: используйте Python или Node.js для выгрузки данных ФНС. Подпишитесь на обновления через RSS-ленту портала.
  3. Создайте SQL-схему: нормализуйте данные до 3NF, но для аналитики допускается денормализация (звезда или снежинка).
  4. Подготовьте признаки: напишите SQL-запросы для вычисления всех метрик. Это самая трудоёмкая часть.
  5. Обучите модель: начните с простой логистической регрессии, затем переходите к XGBoost или LightGBM.
  6. Интегрируйте в бизнес-процесс: сделайте веб-форму для ввода ИНН или загрузки списка.
  7. Настройте мониторинг: 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.

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

← Все статьи

Комментарии

Читайте также

Интеграция ClickUp с AI-агентом: автоматизация задач, обновлений статусов и отчетов через чат

5 августа 2026

OSINT — разведка по открытым источникам: Полный курс для современных исследователей (обучение OSINT онлайн)

5 августа 2026

RS-485 и ASI Biont: полное руководство по интеграции Modbus RTU в промышленную автоматизацию

5 августа 2026

Интеграция SPI-устройств с AI-агентом ASI Biont: полный гайд по подключению через COM-порт

5 августа 2026

Курс цифрового искусства и дизайна 2026: Освойте Photoshop, Illustrator, Canva и Procreate с обучением на основе ИИ

5 августа 2026

Почему слабым местом кредитного конвейера может оказаться не только ставка, но и плохой OCR

5 августа 2026

Перемены в Google DeepMind: Демис Хассабис становится председателем, Джефф Дин уходит — что это значит для AI-бизнеса

5 августа 2026

Как подключить микрофон (MAX9814, INMP441) к ASI Biont: голосовое управление и автоматизация звука

5 августа 2026

Интеграция OV2640 camera + ESP32 с AI-агентом ASI Biont: пошаговый гайд по face detection на Edge AI

5 августа 2026