Разработка AI-системы автообзвона для взыскания задолженности (коллекшн)

Проектируем и внедряем системы искусственного интеллекта: от прототипа до production-ready решения. Наша команда объединяет экспертизу в машинном обучении, дата-инжиниринге и MLOps, чтобы AI работал не в лаборатории, а в реальном бизнесе.
Показано 1 из 1 услугВсе 1566 услуг
Разработка AI-системы автообзвона для взыскания задолженности (коллекшн)
Средняя
~1-2 недели
Часто задаваемые вопросы
Направления AI-разработки
Этапы разработки AI-решения
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1218
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    853
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1047
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    561
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    825

Разработка AI-системы автообзвона для взыскания задолженности (коллекшн)

AI-система коллекшн автоматизирует досудебное взыскание: информирует должников, предлагает варианты погашения, фиксирует PTP (Promise to Pay). На стадиях DPD 1–30 эффективность сопоставима с операторами при стоимости в 5–10 раз ниже.

Регуляторные требования (230-ФЗ)

from datetime import time

CALL_RESTRICTIONS = {
    "weekdays": (time(8, 0), time(22, 0)),     # пн-пт 8:00–22:00
    "weekends": (time(9, 0), time(20, 0)),      # сб-вс 9:00–20:00
    "max_calls_per_day": 1,
    "max_calls_per_week": 2,
    "max_calls_per_month": 8,
}

async def check_call_allowed(debtor_id: str) -> tuple[bool, str]:
    """Проверяем разрешения на звонок по 230-ФЗ"""
    now = datetime.now()
    contact_history = await db.get_contact_history(debtor_id)

    # Проверка временных окон
    current_time = now.time()
    window = CALL_RESTRICTIONS["weekdays"] if now.weekday() < 5 else CALL_RESTRICTIONS["weekends"]
    if not (window[0] <= current_time <= window[1]):
        return False, "outside_allowed_hours"

    # Проверка частоты
    today_calls = sum(1 for c in contact_history if c["date"].date() == now.date())
    if today_calls >= CALL_RESTRICTIONS["max_calls_per_day"]:
        return False, "daily_limit_exceeded"

    # Проверка стоп-листа
    if await is_in_stoplist(debtor_id):
        return False, "in_stoplist"

    return True, "allowed"

Сценарий по DPD-стадии

COLLECTION_SCRIPTS = {
    "dpd_1_7": """
        Здравствуйте, {name}! Это компания {creditor}.
        По вашему договору {contract_id} образовалась просроченная
        задолженность {amount} рублей.
        Пожалуйста, погасите её до {payment_deadline}.
        Вы планируете оплатить в ближайшее время?
    """,
    "dpd_8_30": """
        Здравствуйте, {name}. Вам звонят из {creditor}.
        Задолженность по договору {contract_id} составляет {amount} рублей,
        просрочка {dpd} дней. Начисляются пени {penalty_rate}% в день.
        Мы готовы рассмотреть удобный для вас план погашения.
        Вы можете оплатить сегодня?
    """,
}

Фиксация PTP и планов рассрочки

@dataclass
class PromiseToPay:
    debtor_id: str
    contract_id: str
    promised_amount: float
    promised_date: date
    call_id: str
    confirmed: bool = False

async def process_payment_commitment(
    session: dict,
    user_response: str
) -> PromiseToPay | None:
    extraction = await client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{
            "role": "system",
            "content": "Извлеки обещание об оплате из текста. JSON: {'date': 'DD.MM', 'amount': N, 'full': bool}"
        }, {"role": "user", "content": user_response}],
        response_format={"type": "json_object"}
    )
    data = json.loads(extraction.choices[0].message.content)

    if data.get("date"):
        ptp = PromiseToPay(
            debtor_id=session["debtor_id"],
            contract_id=session["contract_id"],
            promised_amount=data.get("amount", session["total_debt"]),
            promised_date=parse_date(data["date"]),
            call_id=session["call_id"]
        )
        await db.save_ptp(ptp)
        return ptp
    return None

Сроки: compliance-проверки + базовый сценарий — 3–4 недели. Полная система с PTP-трекингом — 2 месяца.