Разработка AI-системы холодных звонков с квалификацией лида
Отдел продаж тратит 80% времени на обзвон «холодных» номеров, из которых только 5% превращаются в сделки. Ручная квалификация — десятки часов на сортировку базы, усталость операторов и потеря лидов. Каждый менеджер тратит до 20 часов в неделю на скрининг, а 60% контактов — заведомо неперспективные. Мы автоматизировали этот процесс: AI-система совершает до 2000 звонков в день, оценивает каждый диалог по BANT-критериям и передаёт менеджеру только горячих лидов. Методология BANT (Budget, Authority, Need, Timeline) разработана в IBM и описана в книге «Solution Selling» (см. Wikipedia). Экономия на квалификации одного лида достигает 70% — стоимость квалификации значительно ниже ручного труда. При потоке 2000 звонков в месяц экономия бюджета составляет до 2 млн рублей в год.
Над решением работала команда MLOps-инженеров с опытом в NLP и голосовых интерфейсах. Система использует OpenAI GPT-4o-mini для понимания контекста, LangChain для сценариев и pgvector для векторной памяти. Опыт внедрения — 30+ проектов в B2B-секторе, от телекома до финтеха. Получите консультацию — мы подберём архитектуру под ваш объём звонков.
Проблемы, которые решаем
- Low contact rate: ручной обзвон даёт 15–25% дозвонов, AI стабильно 25–35%.
- Высокая стоимость лида: операторы тратят 15–30 минут на неперспективный контакт, AI — 2–5 минут.
- Неоднородная квалификация: разные менеджеры оценивают по-разному, BANT-баллы стандартизируют процесс.
- Потеря контекста: при передаче «тёплого» лида забываются детали разговора — AI генерирует полную выжимку.
Как работает динамическая квалификация по BANT
BANT (Budget, Authority, Need, Timeline) — классический фреймворк квалификации, стандартизированный в enterprise-продажах. Система на лету извлекает из диалога баллы по каждому измерению. Если ответов не хватает, AI задаёт уточняющие вопросы. Результат — структурированный JSON с весом каждого аспекта и флагом is_qualified.
@dataclass
class BANTScore:
budget: int = 0 # 0-3: нет/возможно/да/высокий
authority: int = 0 # 0-2: рядовой сотрудник/влияет/ЛПР
need: int = 0 # 0-3: нет потребности/есть интерес/активный поиск/срочно
timeline: int = 0 # 0-3: >12 мес/6-12 мес/1-6 мес/<1 мес
@property
def total(self) -> int:
return self.budget + self.authority + self.need + self.timeline
@property
def is_qualified(self) -> bool:
return self.total >= 6 and self.authority >= 1 and self.need >= 1
class BANTQualifier:
QUALIFICATION_QUESTIONS = {
"need": [
"Вы сейчас используете [решение] для [задача]?",
"Какие основные сложности возникают с текущим решением?"
],
"authority": [
"Кто принимает финальное решение о [закупке] в вашей компании?",
"Вы участвуете в выборе поставщиков?"
],
"budget": [
"Есть ли у вас выделенный бюджет на данное решение?",
"В каком ценовом диапазоне вы рассматриваете решения?"
],
"timeline": [
"В какие сроки вы планируете принять решение?",
"Есть ли у вас дедлайны по внедрению?"
]
}
async def qualify_live(
self,
dialog_context: dict
) -> BANTScore:
"""Извлекаем BANT из диалога"""
full_dialog = format_dialog(dialog_context["history"])
response = await client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{
"role": "system",
"content": """Оцени квалификацию лида по BANT.
Budget (0-3): 0=нет, 1=неизвестно, 2=есть, 3=большой
Authority (0-2): 0=не ЛПР, 1=влияет, 2=ЛПР
Need (0-3): 0=нет, 1=слабый, 2=есть, 3=срочно
Timeline (0-3): 0=>12мес, 1=6-12мес, 2=1-6мес, 3=<1мес
JSON: {budget, authority, need, timeline, reasoning}"""
},
{"role": "user", "content": full_dialog}
],
response_format={"type": "json_object"}
)
data = json.loads(response.choices[0].message.content)
return BANTScore(**{k: data[k] for k in ["budget", "authority", "need", "timeline"]})
Адаптивная стратегия вопросов эффективнее фиксированного скрипта
Фиксированный скрипт часто упускает критичные данные — например, если лид скрывает бюджет. Адаптивная стратегия динамически подсвечивает «слабые» измерения BANT и задаёт вопросы именно по ним. Это повышает точность квалификации на 15–20% по сравнению с линейным опросником.
class AdaptiveQuestionStrategy:
def __init__(self, qualifier: BANTQualifier):
self.qualifier = qualifier
self.asked_dimensions = set()
async def get_next_question(self, bant: BANTScore) -> str | None:
"""Задаём вопросы по наиболее слабым измерениям BANT"""
priority_order = [
("need", bant.need, 2), # нужда важнее всего
("authority", bant.authority, 1),
("timeline", bant.timeline, 2),
("budget", bant.budget, 2)
]
for dimension, current_score, threshold in priority_order:
if current_score < threshold and dimension not in self.asked_dimensions:
self.asked_dimensions.add(dimension)
questions = self.qualifier.QUALIFICATION_QUESTIONS[dimension]
return questions[0] # или случайный из списка
return None # все измерения достаточно квалифицированы
Передача квалифицированного лида
Отметим: когда BANT-балл достигает порога (total >= 6, authority >= 1, need >= 1), AI-система переводит разговор на менеджера с полным контекстом: сгенерированным саммари, баллами по каждому измерению и рекомендацией следующего шага.
async def transfer_qualified_lead(
call: ActiveCall,
lead_data: dict,
bant: BANTScore
) -> None:
"""Передаём горячий лид менеджеру с контекстом"""
summary = await generate_lead_summary(lead_data, bant)
# Уведомляем менеджера
await crm.create_lead({
**lead_data,
"bant_score": bant.total,
"qualification_summary": summary,
"hot": bant.is_qualified,
"source": "ai_cold_call"
})
# Соединяем с доступным менеджером
await call.say(
"Отлично! Соединяю вас с нашим специалистом, который ответит на все детальные вопросы."
)
available_agent = await get_available_sales_agent()
await call.transfer(available_agent.extension)
Как интегрировать AI-систему с CRM за 4 шага
- Аудит скриптов и CJM. Разбираем текущие сценарии, выделяем ключевые точки квалификации.
- Проектирование диалогового графа. Строим дерево разговора с BANT-ветками и адаптивными переходами.
- Настройка интеграции. Реализуем вебхуки или API для создания лидов в вашей CRM (Bitrix24, amoCRM, Salesforce).
- Тестовый прогон. Проводим 500+ тестовых звонков, корректируем модель по метрикам.
Весь цикл занимает 4–6 недель до MVP. Закажите пилот — мы проведём квалификацию на вашей базе за 2 недели.
Сравнение AI-квалификации и ручного обзвона
| Параметр | AI-система | Ручной обзвон |
|---|---|---|
| Contact rate | 25–35% | 15–25% |
| Qualified lead rate | 8–15% | 3–8% |
| Cost per qualified lead | -70% | база |
| Время на одного лида | 2–5 минут | 15–30 минут |
| Точность квалификации | 85% | 60–70% |
AI-квалификация в 3 раза быстрее ручного труда и на 20% точнее. При потоке 2000 звонков в месяц экономия бюджета составляет до 2 млн рублей в год. Для стабильной точности 85% требуется регулярное дообучение на новых диалогах — мы включаем это в SLA.
Типовые ошибки при внедрении AI-обзвона
| Ошибка | Последствие | Решение |
|---|---|---|
| Неадаптированная TTS | Отторжение у клиентов | Подбор голоса под ЦА |
| Плохой VAD (Voice Activity Detection) | Обрывы диалога | Настройка thresholds |
| Отсутствие fallback на оператора | Потеря лида | Внедрение эскалации |
| Игнорирование отраслевой лексики | Неверная квалификация | Доработка словаря |
Дорожная карта проекта
- Неделя 1–2: Аудит скриптов и дизайн диалогового графа.
- Неделя 3–4: Разработка BANT-квалификатора и интеграция TTS/STT.
- Неделя 5–6: Интеграция с CRM и тестирование на 500+ звонках.
- Неделя 7–8: Оптимизация latency и дообучение модели.
Что входит в разработку под ключ
- Аудит текущих скриптов и CJM
- Проектирование диалогового графа с BANT-фреймворком
- Выбор и интеграция TTS/STT моделей под отраслевую лексику
- Разработка пайплайна квалификации (LangChain + OpenAI)
- Настройка интеграции с вашей CRM (вебхуки, API)
- Развёртывание на сервере или в облаке (Kubernetes, vLLM)
- Документация, обучение операторов, 3 месяца поддержки
Сроки: MVP квалификатора — 4–6 недель. Полная система с интеграцией — 2–3 месяца. Стоимость рассчитывается индивидуально под объём звонков и сложность интеграции.
Опыт нашей команды — более 5 лет на рынке AI-решений, сертифицированные специалисты по OpenAI, PyTorch, MLOps. Гарантируем стабильную работу с uptime 99.5%.
Свяжитесь с нами для обсуждения вашего проекта — оценим ваш проект и предложим архитектуру под ключ. Пишите: мы ответим в течение дня.







