Розробка 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%.
Зв'яжіться з нами для обговорення вашого проєкту — оцінимо ваш проєкт та запропонуємо архітектуру під ключ. Пишіть: ми відповімо протягом дня.







