AI помічник для продажів: summary клієнта перед дзвінком
Менеджер рідко провалює перший дзвінок через те, що не вміє говорити з клієнтом. Частіше проблема простіша: перед очима є тільки ім'я, телефон і короткий коментар із форми. Джерело заявки лежить в аналітиці, попередня переписка в пошті або Telegram, нотатки в Google Sheets, а послуга, яку дивився клієнт, взагалі залишилася в URL сторінки. Саме тут AI помічник для продажів корисний найбільше: він не продає замість менеджера, а збирає розкиданий контекст у коротке summary перед дзвінком.

Це важлива різниця. Якщо намагатися зробити з ШІ "автоматичного продавця", процес швидко стає небезпечним: модель починає оцінювати наміри клієнта, радити агресивні скрипти або робити висновки з неповних даних. Нормальна автоматизація продажів за допомогою ШІ працює скромніше: бере факти, стискає їх до 5-7 рядків і підказує менеджеру, з чого почати розмову.
Для малого бізнесу такий сценарій часто можна зібрати без великої CRM. Достатньо форми заявки, Google Sheets CRM або просто таблиці з лідами, OpenAI API, невеликого Apps Script/Node.js шару і повідомлення в Telegram. Це продовжує логіку автоматизації обробки замовлень, тільки тут фокус не на статусах, а на підготовці менеджера до контакту.
Що менеджер має знати перед дзвінком
Поганий старт дзвінка звучить так: "Ви залишали заявку, підкажіть, що вас цікавить?" Формально це нормально. Але для клієнта це часто означає, що він знову має пояснювати те, що вже написав у формі, листі або попередньому чаті.
Перед першим контактом менеджеру бажано бачити:
- хто клієнт і яку компанію представляє;
- звідки прийшла заявка;
- яку сторінку, послугу або товар він дивився;
- що саме написав у формі;
- чи були попередні контакти;
- який можливий біль або задача;
- який next step логічно запропонувати;
- які питання варто поставити, а які вже зайві.

Це не має бути довгий профіль на дві сторінки. Навпаки, сильне summary коротке. Менеджер повинен прочитати його за 15-20 секунд і зрозуміти: хто перед ним, чого людина хоче і як не почати розмову з повторення очевидного.
Які дані збирати для AI summary
AI асистент для менеджера продажів не повинен отримувати "усе, що є". Йому треба давати тільки той контекст, який реально допомагає підготувати дзвінок. Чим менше зайвого шуму, тим кращий результат.
Базова структура може виглядати так:
| Поле | Навіщо потрібно |
|---|---|
lead_id | стабільний ідентифікатор ліда |
name | ім'я клієнта |
company | компанія, якщо відома |
source | реклама, органіка, рекомендація, форма |
landing_page | сторінка або послуга, з якої прийшла заявка |
message | текст із форми або першого звернення |
previous_notes | короткі нотатки менеджера або CRM |
lastcontactat | коли був попередній контакт |
known_pain | зафіксована проблема, якщо вона є |
next_step | що вже домовлялися зробити |
Приклад вхідного JSON:
const customerContext = {
lead_id: "LEAD-20260527-018",
name: "Олена",
company: "B2B-сервіс з навчання персоналу",
source: "google_ads",
landing_page: "/services/automation-crm",
message: "Потрібно навести порядок із заявками з сайту і Telegram",
previous_notes: [
"Запитувала про інтеграцію Google Sheets і Telegram",
"Важливо бачити відповідального менеджера по кожній заявці"
],
last_contact_at: "2026-05-24",
known_pain: "ліди губляться між формою, таблицею і менеджерами",
next_step: "показати приклад простої CRM-таблиці зі статусами"
};У цьому прикладі немає приватних документів, зайвої переписки й повної історії листування. Є тільки те, що допомагає менеджеру не заходити в розмову наосліп. Якщо дані живуть у таблиці, їх можна збирати так само, як у сценаріях з GPT у Google Sheets, але з чіткішим форматом і обмеженнями.
Архітектура: JSON, prompt, summary, CRM
Процес краще будувати як маленький конвеєр, а не як "чат із клієнтом".

Робоча схема:
- Заявка або оновлення ліда потрапляє в таблицю/CRM.
- Скрипт збирає потрібні поля в
customerContext. - Перед відправкою прибираються зайві або чутливі дані.
- OpenAI API отримує структурований prompt.
- Модель повертає коротке summary.
- Summary записується в CRM або Google Sheets.
- Менеджер отримує блок у Telegram перед дзвінком.
У новій реалізації OpenAI API зручно використовувати Responses API: запит створюється через client.responses.create, а текст відповіді читається з response.output_text. Це відповідає поточній офіційній логіці Responses API, де input може бути рядком або структурованим масивом повідомлень.
Prompt для короткого резюме клієнта
Головне правило prompt'а: модель не має вигадувати факти. Якщо контексту мало, вона повинна прямо сказати, що контекст обмежений.
const summaryPrompt = `
Ти готуєш коротке summary клієнта для менеджера продажів.
Не продавай замість менеджера.
Не вигадуй фактів, яких немає в контексті.
Поверни відповідь українською у форматі:
1. Хто клієнт:
2. Що його цікавить:
3. Можливий біль:
4. Що вже відомо з історії:
5. Рекомендований старт розмови:
6. Питання, які варто поставити:
7. Чого НЕ варто припускати:
Якщо даних мало, напиши: "Контекст обмежений" і дай тільки безпечні висновки.
Контекст:
${JSON.stringify(customerContext, null, 2)}
`;Цей prompt спеціально не просить оцінити ймовірність покупки або "гарячість" ліда. Для цього потрібні прозорі правила, історичні дані й відповідальність за рішення. Summary має допомогти менеджеру почати розмову, а не замінити його судження.
Функція buildSalesSummary(context)
Нижче базовий приклад для Node.js. У production-версії модель, ліміти й логування краще винести в конфігурацію, але логіка залишається такою самою: підготувати контекст, викликати API, повернути короткий текст.
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.OPENAI_API_KEY
});
export async function buildSalesSummary(context) {
const safeContext = sanitizeLeadContext(context);
const response = await client.responses.create({
model: "gpt-4.1-mini",
instructions: [
"Ти допомагаєш менеджеру продажів підготуватися до дзвінка.",
"Пиши коротко, практично і без вигаданих фактів.",
"Не приймай рішення за менеджера."
].join(" "),
input: summaryPromptFor(safeContext)
});
return response.output_text.trim();
}
function summaryPromptFor(context) {
return `
Підготуй summary клієнта перед дзвінком.
Якщо даних мало, прямо скажи "Контекст обмежений".
Контекст:
${JSON.stringify(context, null, 2)}
`;
}
function sanitizeLeadContext(context) {
return {
lead_id: context.lead_id,
name: context.name,
company: context.company,
source: context.source,
landing_page: context.landing_page,
message: context.message,
previous_notes: context.previous_notes?.slice(-5) || [],
last_contact_at: context.last_contact_at,
known_pain: context.known_pain,
next_step: context.next_step
};
}Тут є два важливі обмеження. Перше: у sanitizeLeadContext ми явно вирішуємо, що можна передавати моделі. Друге: інструкції вказують, що модель не має робити продаж або рішення замість людини. Це прості речі, але саме вони відрізняють робочий AI помічник для продажів від хаотичного "давайте відправимо весь CRM-рядок у GPT".
Як записати summary в CRM або Google Sheets
Якщо CRM поки немає, Google Sheets може бути достатнім першим шаром. Наприклад, у таблиці Leads можна додати колонки:
| Поле | Приклад |
|---|---|
lead_id | LEAD-20260527-018 |
client_name | Олена |
source | google_ads |
status | new |
ai_summary | короткий блок перед дзвінком |
summaryupdatedat | дата й час оновлення |
manager | відповідальний |
Запис у Google Sheets через Apps Script може виглядати так:
function writeSummaryToSheet(leadId, summary) {
const sheet = SpreadsheetApp.getActive().getSheetByName("Leads");
const values = sheet.getDataRange().getValues();
const headers = values[0];
const idCol = headers.indexOf("lead_id");
const summaryCol = headers.indexOf("ai_summary");
const updatedCol = headers.indexOf("summary_updated_at");
if (idCol === -1 || summaryCol === -1 || updatedCol === -1) {
throw new Error("Missing required columns");
}
for (let row = 1; row < values.length; row++) {
if (String(values[row][idCol]) !== String(leadId)) continue;
sheet.getRange(row + 1, summaryCol + 1).setValue(summary);
sheet.getRange(row + 1, updatedCol + 1).setValue(new Date());
return true;
}
throw new Error(`Lead not found: ${leadId}`);
}У нормальному процесі summary треба перегенеровувати не щохвилини, а після важливих змін: нова заявка, новий коментар менеджера, новий статус, відповідь клієнта або перенесений дзвінок. Інакше система створить шум замість допомоги.
Telegram-повідомлення перед дзвінком
Менеджер має отримати summary там, де він реально працює. Якщо команда живе в Telegram, не змушуйте її відкривати таблицю перед кожним дзвінком.

Приклад повідомлення:
async function sendSalesSummaryToTelegram({ chatId, lead, summary }) {
const token = process.env.TG_BOT_TOKEN;
const text = [
`Дзвінок: ${lead.name || "клієнт"}`,
`Компанія: ${lead.company || "невідомо"}`,
`Джерело: ${lead.source || "не вказано"}`,
"",
"AI summary:",
summary
].join("
");
await fetch(`https://api.telegram.org/bot${token}/sendMessage`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
chat_id: chatId,
text
})
});
}Це не має бути довге повідомлення. Якщо менеджер отримує "полотно" на 3000 символів, він перестане його читати. Хороший формат - 5-7 рядків summary, 2-3 питання і один next step.
Що не можна довіряти ШІ
Найгірша помилка - дати моделі право оцінювати клієнта без правил. Вона може звучати впевнено навіть тоді, коли даних мало. Тому в процесі потрібні жорсткі межі.
Не варто довіряти ШІ:
- рішення, чи клієнт "точно купить";
- пріоритет ліда без прозорої scoring-моделі;
- висновок про бюджет, якщо клієнт його не вказував;
- припущення про мотиви клієнта;
- персональні характеристики людини;
- юридично або фінансово чутливі рекомендації;
- фінальний текст комерційної пропозиції без перевірки менеджером.

Правильна роль моделі: стискати контекст, показувати можливі питання, нагадувати про next step. Неправильна роль: вирішувати за менеджера, як натискати на клієнта.
Як коротке summary економить перші 3 хвилини розмови
В одному з робочих сценаріїв менеджер перед дзвінком відкривав одразу кілька місць: Google Sheets із лідами, Telegram-чат, сторінку послуги, рекламне джерело і попередній коментар. Формально вся інформація була доступна. Практично на підготовку йшло 2-3 хвилини, а при щільному потоці дзвінків менеджер часто починав із загального питання.
Після додавання AI summary процес став простішим. У рядку ліда з'являвся короткий блок: звідки прийшла заявка, що саме цікавить клієнта, який біль уже видно, що було в попередніх нотатках і з якого питання краще почати. Менеджер не отримував готовий скрипт продажу. Він отримував нормальну пам'ятку перед контактом.
Результат був не в "магічному рості конверсії", а в операційній якості: менше повторних питань клієнту, швидше входження в контекст, краща фіксація next step після дзвінка. Для продажів це часто важливіше за ще один мотиваційний скрипт.
Як запускати без зайвого ризику
Починати варто з вузького процесу:
- Виберіть одне джерело лідів, наприклад форму сайту.
- Додайте в таблицю поля для контексту й
ai_summary. - Опишіть, які дані можна передавати в модель.
- Зробіть prompt із правилом "не вигадувати".
- Виведіть summary у Google Sheets.
- Після перевірки додайте Telegram-повідомлення менеджеру.
- Раз на тиждень переглядайте, які summary були корисні, а які створювали шум.
AI помічник для продажів має бути частиною процесу, а не окремою іграшкою. Він корисний тоді, коли зменшує когнітивне навантаження менеджера перед дзвінком і допомагає не втрачати вже зібраний контекст. Якщо система просто генерує красивий текст, це не автоматизація. Якщо вона дає менеджеру коротку, чесну й перевірену картину клієнта перед контактом - це вже робочий інструмент.
Останні статті

CRM автоматизація: як прибирати дублікати лідів і ставити пріоритет менеджеру
CRM автоматизація часто починається не з купівлі великої CRM, а з менш романтичної задачі: прибрати дублікати лідів і зрозуміти, які заявки справді потребують швидкої ре…

Автоматизація обробки замовлень: форма, Google Sheets, Telegram і статуси
Коли замовлення приходять із сайту, Google Forms, Telegram і дзвінків, хаос починається не в коді. Він починається в момент, коли незрозуміло, хто взяв заявку, чи підтве…

Автоматизація рахунків: як перетворити PDF і фото в дані Google Sheets
Рахунки, акти й квитанції рідко приходять у зручному форматі. Один постачальник надсилає PDF на пошту, другий кидає фото в Telegram, третій прикріплює скан до заявки. А…

Коли скрипт «втомився»: Налаштування моніторингу та сповіщень про помилки в Telegram
Найнеприємніший збій в автоматизації — не той, який “красиво впав”. А той, який стався тихо, без сигналу, і кілька днів жив собі окремим життям, поки ви були впевнені, щ…

Аналітик на стероїдах: Як змусити ШІ робити висновки з твоїх таблиць за 1 клік
У вас є таблиця на 500 рядків. Дата, товар, сума, клієнт, канал, ще якісь цифри. Формально дані є. Практично — це просто масив чисел, який не відповідає на головне питан…

Автопілот для Gmail: Як навчити пошту саму сортувати важливі листи за допомогою ШІ
Ранок із 50+ листами — це не “організована комунікація”, а міні-лотерея. Більшість повідомлень — шум: розсилки, автоматичні підтвердження, квитанції, другорядні апдейти.…