Написать в Telegram@Odilient

ИИ И АВТОМАТИЗАЦИЯ

Testify

ИИ-инструмент для аудита записанных коллекторских звонков на соответствие требованиям: каждое правило FDCPA и TCPA получает оценку «пройдено», «нарушено» или «недостаточно доказательств», и каждая подкреплена цитатой с таймкодом.

AMD Developer Hackathon
Клиент
Право и комплаенс
Отрасль
1 день
Срок
2026
Год
С чего всё началось

Задача

Коллекторские и кредитные компании работают по правилам FDCPA и TCPA, где за одно доказуемое нарушение положены штрафы, установленные законом, а ручной контроль качества успевает прослушать лишь небольшую выборку звонков. Когда проблема найдена, отделу комплаенса нужны точные доказательства: что было сказано, кем и когда. Автоматическая оценка полезна, только если она никогда не признаёт звонок соответствующим требованиям без доказательств.

Что мы сделали

Решение

Мы сделали сервис на FastAPI, который разделяет двухканальные записи на дорожки оператора и клиента, расшифровывает их с помощью Whisper-large-v3 и поручает Gemma оценить каждое правило в виде ответа по JSON-схеме при температуре 0. Требование считается выполненным только при наличии дословной цитаты с таймкодом; если доказательств нет, ставится «недостаточно доказательств», и пункт уходит на проверку человеку. Нарушения сводятся в сумму денежного риска и доказательный пакет, который можно выгрузить.

Технологии
PythonFastAPIWhisperGemmaAMD ROCmvLLMFFmpegPydanticSQLiteDocker
За кулисами

Как всё создавалось

ИИ-аудит регулируемых телефонных звонков на соответствие требованиям

Testify — сервис ИИ-аудита звонков на соответствие требованиям для коллекторских компаний и компаний потребительского кредитования. Дайте ему запись разговора оператора с клиентом — по ссылке или загруженным файлом, — и он вернёт карту соответствия: каждое требование из набора правил FDCPA и TCPA получит оценку «пройдено», «нарушено» или «недостаточно доказательств», и каждый вердикт подкреплён дословной цитатой с указанием говорящего и секунды, на которой прозвучали слова. Нарушения сводятся в сумму денежного риска и доказательный пакет, готовый для суда. Сервис рассчитан на специалистов по комплаенсу и руководителей контроля качества, которые сейчас успевают проверить лишь малую часть звонков.

Мы сделали его за день для трека 3 хакатона AMD Developer Hackathon: ACT II на том же сервисном каркасе, что и RecipeReel и Legible. Код распространяется по лицензии MIT и открыт на GitHub.

Ключевые возможности

  • Никаких выдуманных «пройдено» — требование считается выполненным, только если в расшифровке есть реальная подтверждающая цитата. Если её нет, вердикт — «недостаточно доказательств», и пункт отправляется на проверку человеку.
  • Доказательства с цитатами и таймкодами — каждая находка приводит точные слова, говорящего (оператор, клиент или неизвестно) и время начала и конца.
  • Определение говорящего без ML-диаризации — двухканальные записи разделяются так, что канал 0 — оператор, а канал 1 — клиент; монозапись становится одной дорожкой с неизвестным говорящим.
  • Денежный риск — только для нарушений — установленная законом сумма риска привязывается к правилу, только если оно нарушено, а сводка рисков суммирует риск, нарушения, критические провалы и пункты с недостаточными доказательствами.
  • Сменные наборы правил — стартовый шаблон охватывает шесть правил: уведомление «мини-Миранда», представление звонящего, отсутствие угроз и давления, отсутствие ложных заявлений, проверка, что разговор идёт с нужным человеком, и допустимое время звонков. Любой запрос может передать собственный набор правил.
  • Доказательный пакет — JSON-выгрузка перечисляет все правила с вердиктом, серьёзностью, суммой риска, обоснованием и цитатами, а также оговоркой, что это автоматический скрининг, а не юридическое заключение.

Архитектура и технологический стек

Пайплайн

Задача проходит этапы, о каждом из которых сервис сообщает: приём, извлечение аудио, расшифровка, синтез, валидация и завершение. Записи скачиваются через yt-dlp или httpx либо загружаются напрямую, а затем приводятся к аудио 16 кГц с помощью FFmpeg. Whisper-large-v3 расшифровывает каждый канал в сегменты с таймкодами и метками говорящего, которые сливаются в одну расшифровку.

Оценка и проверка

Оценка — чисто текстовая задача, поэтому Testify использует текстовую Gemma без мультимодальных обходных путей. Gemma получает расшифровку и набор правил и возвращает один ComplianceScorecard в виде структурированного ответа по JSON-схеме при температуре 0. Затем постобработка считает сводку рисков, оставляет суммы риска только у нарушений, отправляет на проверку пункты с низкой уверенностью и недостаточными доказательствами и выводит общий вердикт: соответствует, найдены нарушения или нужна проверка.

Сервис и вычисления

Сервис на FastAPI запускает асинхронный воркер внутри процесса, транслирует прогресс через Server-Sent Events и хранит задачи и аудиты в SQLite. Каждый этап — подключаемый провайдер с мок-реализацией и запасным вариантом на CPU. К Gemma обращаются через единый OpenAI-совместимый код: Google AI Studio, Fireworks AI или vLLM на AMD Instinct MI300X, где через ROCm рассчитана работать и пакетная расшифровка. В каждой карте соответствия записано, какие расшифровщик, синтезатор, устройство и GPU использовались и каким был коэффициент реального времени. В режиме моков весь пайплайн работает офлайн на встроенном примере звонка, и в этом режиме проходят все 13 тестов.

Где это применяется

Testify — это слой скрининга, а не приговор. Он позволяет отделу комплаенса проверять каждый звонок и тратить время людей только на отмеченные. Набор правил по умолчанию — иллюстрация, а не юридическая консультация; в реальном внедрении используется собственная политика компании.

Смежные работы

Testify — часть нашей работы по внедрению ИИ и автоматизации. Другие проекты с того же хакатона — Legible, RecipeReel и Keystone.

Создадим вместе

Хотите что-то вроде Testify?

Расскажите, что должен делать ваш продукт. Мы определим объём работ, распишем сроки и пришлём фиксированную цену — бесплатно и без обязательств продолжать.

Бесплатная консультация Без обязательств Быстрый ответ