Разработка 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 месяца.







