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







