AI Supplier Selection and Risk Evaluation System

We design and deploy artificial intelligence systems: from prototype to production-ready solutions. Our team combines expertise in machine learning, data engineering and MLOps to make AI work not in the lab, but in real business.
Showing 1 of 1 servicesAll 1566 services
AI Supplier Selection and Risk Evaluation System
Medium
~1-2 weeks
FAQ
AI Development Areas
AI Solution Development Stages
Latest works
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1161
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1041
  • image_logo-advance_0.png
    B2B Advance company logo design
    561
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    823
  • image_logo-aider_0.jpg
    AIDER company logo development
    762
  • image_crm_chasseurs_493_0.webp
    CRM development for Chasseurs
    848

Разработка AI-системы выбора и оценки поставщиков Supplier Risk AI

Отказ ключевого поставщика может остановить производство: дефицит одного компонента обходится дороже, чем превентивный мониторинг всей базы поставщиков. AI-система формирует динамический рейтинг поставщиков и сигнализирует о рисках за 2–6 недель до их реализации.

Данные для оценки поставщика

Внутренние данные:

  • OTIF (On Time In Full): доля поставок в срок и в полном объёме
  • Quality rejection rate: % отклонённых партий, возвраты
  • Invoice accuracy: ошибки в документах, расхождения с PO
  • Response time: время ответа на запросы, инциденты

Внешние данные:

  • Финансовая отчётность (СПАРК, Rusbonds для РФ; Bloomberg, D&B для международных)
  • Новостной мониторинг: санкции, судебные иски, смена руководства, пожары на заводе
  • Таможенная статистика: динамика объёмов экспорта поставщика
  • ESG-рейтинги (MSCI, Sustainalytics, CDP)
  • Геополитические риски по стране происхождения

Модель оценки рисков

Комплексный Supplier Risk Score (0–100)

import pandas as pd
import numpy as np
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.preprocessing import StandardScaler

class SupplierRiskModel:
    def __init__(self):
        self.model = GradientBoostingClassifier(
            n_estimators=200, learning_rate=0.05,
            max_depth=4, subsample=0.8
        )
        self.scaler = StandardScaler()

    def build_features(self, supplier_data):
        """Формирование признаков для оценки риска"""
        features = {
            # Операционные метрики (последние 12 мес)
            'otif_12m': supplier_data['on_time_in_full_rate'],
            'otif_trend': supplier_data['otif_q4'] - supplier_data['otif_q1'],
            'quality_rejection_rate': supplier_data['rejection_rate'],
            'avg_lead_time_deviation': supplier_data['lead_time_std'],

            # Финансовые метрики
            'current_ratio': supplier_data['current_assets'] / supplier_data['current_liabilities'],
            'debt_to_equity': supplier_data['total_debt'] / supplier_data['equity'],
            'revenue_growth_yoy': supplier_data['revenue_growth'],
            'altman_z_score': self._altman_z(supplier_data),

            # Концентрационные риски
            'single_source_flag': int(supplier_data['is_sole_supplier']),
            'country_risk_score': supplier_data['country_political_risk'],
            'customer_concentration': supplier_data['top_customer_pct'],  # % выручки от нас
        }
        return pd.DataFrame([features])

    def _altman_z(self, d):
        """Altman Z-score для прогноза банкротства"""
        return (1.2 * d['working_capital'] / d['total_assets'] +
                1.4 * d['retained_earnings'] / d['total_assets'] +
                3.3 * d['ebit'] / d['total_assets'] +
                0.6 * d['market_cap'] / d['total_liabilities'] +
                1.0 * d['revenue'] / d['total_assets'])

NLP-мониторинг новостей:

from transformers import pipeline

risk_classifier = pipeline(
    "text-classification",
    model="ProsusAI/finbert",  # финансовый sentiment
    device=0
)

RISK_KEYWORDS = {
    'critical': ['банкротство', 'пожар', 'санкции', 'арест', 'ликвидация'],
    'high': ['убытки', 'задержка', 'проверка', 'штраф', 'авария'],
    'medium': ['реструктуризация', 'смена директора', 'забастовка']
}

def score_news_risk(news_texts, supplier_id):
    results = []
    for text in news_texts:
        sentiment = risk_classifier(text[:512])[0]
        risk_level = 'low'
        for level, keywords in RISK_KEYWORDS.items():
            if any(kw in text.lower() for kw in keywords):
                risk_level = level
                break
        results.append({'text': text[:100], 'sentiment': sentiment, 'risk': risk_level})
    return results

Оповещение и действия

Alert-система по уровням:

Уровень Триггер Действие
Критический Score <20 или новость о банкротстве Немедленное уведомление CPO, активация backup
Высокий Score 20–40 или OTIF <70% за 3 мес Совещание с поставщиком, поиск альтернативы
Средний Score 40–60 или тренд снижения Аудит, усиленный входной контроль
Низкий Score >80 Плановый мониторинг

Backup Supplier Discovery:

При риск-триггере: автоматический поиск альтернативных поставщиков:

  • Матчинг по техническим требованиям (номенклатура, сертификаты, объём)
  • Приоритет: уже аттестованные, но неактивные поставщики
  • Оценка lead time на переключение

Сегментация базы поставщиков

Кластеризация (k-means) по двум осям: стратегическая важность × уровень риска:

  • Стратегические с высоким риском: глубокий мониторинг, совместные программы risk mitigation
  • Стратегические с низким риском: партнёрские программы, долгосрочные контракты
  • Транзакционные с высоким риском: немедленный поиск замены
  • Транзакционные с низким риском: базовый мониторинг

Срок разработки: 3–5 месяцев для системы с интеграцией внутренних ERP-данных, NLP-мониторингом новостей и автоматическими алертами.