Автоматизация обработки заявок: ИИ вместо ручной сортировки
Заявки приходят из пяти каналов, менеджер вручную определяет тему и переносит данные в CRM. Показываем, как эту рутину закрывает классификация и извлечение полей.

Обработка входящих заявок — самый частый процесс, который просят автоматизировать. Он хорошо подходит для ИИ по трём причинам: объём измерим, входные данные текстовые, а ошибка обратима — неверно определённую тему менеджер поправит одним щелчком.
Как выглядит процесс до автоматизации
В типичной компании на пятьдесят заявок в день картина такая: письма приходят в общий ящик, сообщения — в мессенджер, часть заявок падает через форму на сайте. Менеджер открывает каждое обращение, определяет тему, находит клиента в базе, копирует контакты и описание в CRM, ставит ответственного. На одну заявку уходит три-пять минут, из которых содержательная работа — меньше минуты.
Автоматизировать стоит не принятие решения, а сбор данных для решения. В обработке заявок именно сбор занимает восемьдесят процентов времени.
Что берёт на себя модель
- Классификация: определяет тему обращения из вашего списка категорий и уровень срочности.
- Извлечение полей: вытаскивает имя, контакты, номер заказа, суть проблемы в структурированном виде.
- Нормализация: приводит телефоны и адреса к единому формату, чтобы поиск клиента в базе срабатывал.
- Черновик ответа: для типовых тем готовит текст, который менеджер проверяет и отправляет.
Структурированный разбор заявки
Ключевой приём — запрашивать у модели не текст, а объект по схеме. Тогда результат сразу пригоден для записи в базу, а невалидные ответы отсекаются проверкой схемы, а не разбором строки.
import { generateObject } from "ai"
import { z } from "zod"
const LeadSchema = z.object({
category: z.enum([
"новый_заказ",
"статус_заказа",
"возврат",
"жалоба",
"сотрудничество",
"прочее",
]),
urgency: z.enum(["низкая", "обычная", "высокая"]),
clientName: z.string().nullable(),
phone: z.string().nullable(),
email: z.string().nullable(),
orderId: z.string().nullable(),
summary: z.string().max(300),
// Оценка уверенности: по ней решаем, отправлять ли на ручную проверку
confidence: z.number().min(0).max(1),
})
export async function parseLead(rawText: string) {
const { object } = await generateObject({
model: "openai/gpt-4.1-mini",
schema: LeadSchema,
system: [
"Ты разбираешь входящие обращения клиентов.",
"Заполняй только те поля, которые явно есть в тексте.",
"Отсутствующие данные ставь null, не догадывайся.",
"confidence — честная оценка уверенности в классификации.",
].join(" "),
prompt: rawText,
})
return object
}Обратите внимание на поле уверенности. Оно даёт простое правило маршрутизации: при высокой уверенности заявка уходит в работу автоматически, при низкой — попадает в очередь на ручную проверку. Так система не ошибается молча.
const parsed = await parseLead(incoming.text)
// Порог подбирается по факту: начинаем с 0.8 и корректируем
// по доле ошибок за первые две недели работы
if (parsed.confidence >= 0.8 && parsed.category !== "прочее") {
await crm.createLead({ ...parsed, source: incoming.channel })
await notify.assignee(parsed.category)
} else {
await crm.createLead({ ...parsed, status: "needs_review" })
await notify.manualQueue(incoming.id)
}Расчёт эффекта на реальных числах
| Показатель | До | После |
|---|---|---|
| Время на заявку | 4 минуты | 1 минута |
| Часов в месяц | 73 часа | 18 часов |
| Заявок без участия человека | 0 | 60–75 процентов |
| Расход на модель в месяц | — | около 1 500 рублей |
Освобождается порядка пятидесяти часов в месяц. При стоимости часа менеджера в четыреста рублей это двадцать тысяч рублей — то есть разработка окупается за несколько месяцев. Мы всегда просим заказчика посчитать эти цифры до старта: если экономия оказывается меньше стоимости поддержки, проект не имеет смысла.
Ошибки, которые мы видели
- Автоматизация без порога уверенности. Система обрабатывает всё подряд, менеджеры перестают доверять данным и начинают перепроверять каждую запись вручную — экономия обнуляется.
- Слишком много категорий. При двадцати темах модель начинает путаться. Начинайте с пяти-семи, дробите потом.
- Отсутствие журнала решений. Без записи, что именно модель извлекла и почему, невозможно разобрать ошибку и настроить порог.
- Передача в модель полных персональных данных. Отправляйте только то, что нужно для классификации, а связывание с клиентом делайте в своей базе.
Частые вопросы
- Какие заявки ИИ обрабатывает без участия человека?
- Типовые обращения с понятной темой и полными данными — от шестидесяти до семидесяти пяти процентов потока. Остальные попадают в очередь на ручную проверку по низкой оценке уверенности модели. Всё, что связано с деньгами и нестандартными ситуациями, всегда остаётся за менеджером.
- Как избежать ошибочной классификации заявок?
- Модель должна возвращать не только категорию, но и честную оценку уверенности. При значении ниже порога заявка отправляется на ручную проверку вместо автоматической обработки. Порог подбирается по фактической доле ошибок за первые две недели работы.
- Сколько стоит автоматизация обработки заявок?
- Расход на модель при потоке пятьдесят заявок в день составляет около полутора тысяч рублей в месяц. Основные затраты — разработка интеграций с почтой, мессенджерами и CRM. При экономии порядка пятидесяти часов работы менеджера в месяц проект обычно окупается за несколько месяцев.
- Безопасно ли передавать данные клиентов в модель?
- В модель следует отправлять только тот минимум, который нужен для классификации и извлечения полей, а связывание с карточкой клиента выполнять в своей базе. Полные персональные данные передавать не требуется.
Похожая задача в вашем проекте?
Разберём вашу ситуацию и пришлём оценку по этапам — без обязательств и общих слов.
Обсудить задачу

