Клиент — B2B-компания (IT-услуги и внедрение), отдел продаж из двенадцати менеджеров. История сделок — в Bitrix24, переписка — в корпоративной почте. Перед звонком менеджер 15–20 минут вручную листал карточку и письма: «что обещали», «какой срок», «кто принимает решение».
Задача: внутренний copilot с ответами только из CRM и почты — без выдумок и без автоотправки клиенту. Read-only к CRM; менеджер видит только свои сделки, руководитель — свою ветку.
Реализация:
• ETL: карточки сделок, задачи, комментарии; IMAP-архив писем по согласованным ящикам (152-ФЗ);
• чанкинг с метаданными: deal_id, контакт, дата, автор, тип (письмо / звонок / заметка);
• embeddings, PostgreSQL + pgvector, rerank перед ответом;
• чат «что обещали клиенту X?», «кратко по сделке Y» — ответ с цитатами и ссылкой на источник;
• веб-панель (React): история запросов, фильтр по сделке, копирование резюме;
• роли: менеджер / руководитель / админ; JWT + SSO;
• запрет записи в CRM; аудит запросов; маскирование персональных данных в логах;
• nightly-синхронизация + webhook при смене стадии сделки.
Стек: Python, LangChain, FastAPI, Bitrix24 REST API, PostgreSQL, pgvector, React, Docker, VPS клиента. Документация: подключение ящика, пересборка индекса. Приёмка: 25 вопросов сверены с ручным поиском sales-лида.
Итог: подготовка к звонку за 2–3 минуты вместо 15–20; меньше забытых обещаний. За квартал ~85% запросов без эскалации. NDA: компания и CRM не публикуются.