Исходная ситуация
Рабочий ящик собирает всё сразу: обращения клиентов, счета и акты, уведомления мониторинга, ответы подрядчиков, рассылки, письма банка, автоматические отчёты. Разбор происходит два раза в день — утром и вечером — и держится на памяти человека.
Типичный проход: письмо прочитано, действие отложено «на потом», задача в трекер не заведена. Через три дня клиент напоминает. Второй вариант: задача заведена, но одной строкой — «Ответить по интеграции». Через неделю никто не помнит, о какой интеграции речь и что именно спрашивали, а письмо ушло на вторую страницу поиска.
Потери собираются из трёх мест. Первое — время на сортировку: одинаковые движения по десяткам писем, из которых действия требует меньшинство. Второе — оторванный контекст: задача живёт в трекере, содержание в почте, связи между ними нет, и каждое возвращение к задаче начинается с поиска письма. Третье — просроченные ответы: письмо, попавшее между двумя разборами, лежит до следующего дня, а для входящего вопроса это уже поздно.
Что смотрели
Сортировка автоматизируется только после переписи. Берут две-четыре недели истории, выборку писем — и размечают руками по намерению отправителя.
Намерение, а не ключевые слова. Слово «срочно» в теме встречается в рассылках чаще, чем в письмах, требующих действия. Классификация по словарю разваливается на первой сотне писем.
Четыре корзины: требуется действие, требуется ответ, к сведению, мусор. Дальше считают:
- Долю писем, требующих действия, от общего потока. Обычно она мала, и это главный аргумент за фильтр.
- Сколько таких писем реально дошло до трекера.
- Сколько задач в трекере имеют ссылку на письмо-источник. Проверяется поиском по ссылке или идентификатору письма среди карточек.
- Медиану времени от получения письма до заведения задачи.
- Сколько писем осталось без ответа дольше суток.
Отдельно смотрят разрез по отправителям: несколько адресов и доменов обычно дают заметную долю потока и режутся одним правилом без всякой модели.
Ещё нужен разбор структуры. Есть ли служебные заголовки (List-Unsubscribe, Auto-Submitted, Precedence), по которым рассылки и автоответы отделяются формально. Приходят ли обращения клиентов на отдельный адрес. Есть ли в письме якорь-идентификатор — номер счёта, идентификатор клиента в подписи или в ссылке футера, — по которому письмо привязывается к записи в системе. Наличие такого якоря решает половину задачи сопоставления.
Что поменяли
1. Сначала детерминированные правила. Всё, что режется по адресу отправителя, домену, служебным заголовкам и точным шаблонам темы, режется правилами. Дёшево, предсказуемо, отлаживается за один проход. Рассылки, уведомления мониторинга, автоматические отчёты уходят под метки сразу и до модели не доезжают.
2. Остаток — на разбор моделью. На вход подаётся тема, отправитель, текст письма (обрезанный до разумной длины), имена вложений, признак «первое в треде или ответ». На выходе — жёсткая схема: тип, срочность, требуется ли ответ, суть одним предложением, предлагаемый заголовок задачи, извлечённые идентификаторы (номер счёта, имя клиента, номер тикета). Схема фиксированная: свободный пересказ разбирать нечем.
3. Черновик, а не задача. Результат кладётся не в рабочую колонку трекера, а в отдельную — «на разбор». Карточка содержит суть, ссылку на письмо и предложенный заголовок. Человек проходит колонку раз в день и одним движением переносит нужное, остальное удаляет. Решение о заведении задачи остаётся у человека.
4. Ссылка на письмо обязательна. В карточке лежит постоянная ссылка на тред и идентификатор сообщения. Без этого поля карточка не создаётся — иначе через неделю снова «о какой интеграции речь».
5. Идемпотентность по треду. Ключ — идентификатор треда, не отдельного письма. Новое сообщение в уже разобранном треде не плодит вторую карточку, а добавляет комментарий к существующей. Повторный запуск по той же почте ничего не дублирует, и это позволяет спокойно перезапускать разбор после правок промпта.
6. Вложения — отдельная ветка. Счета, акты, договоры сохраняются в оговорённое место, в карточку кладётся путь. Разбирать содержимое вложения на первом шаге не нужно: достаточно довезти файл и не потерять.
7. Расписание чаще ручного разбора. Раз в 15–30 минут вместо двух раз в день. Именно частота сокращает срок ответа, а не качество классификации.
8. Недельная сверка. Сравнивают: какие карточки человек взял в работу, какие удалил не глядя, какие письма ушли в «к сведению» и оказались важными. Лишняя карточка стоит дёшево, пропущенное письмо — дорого, и порог настраивают в эту сторону: при сомнении заводится черновик.
Что не трогали
Отправку ответов. Разбор раскладывает, но не отвечает. Автоответ на письмо, смысл которого понят с ошибкой, стоит дороже всей экономии на сортировке.
Удаление и архивацию. Максимальное действие — метка или папка. В корзину автоматика не отправляет ничего.
Правила пересылки на стороне почтового провайдера. Постоянные forwarding-правила, автоответчики и фильтры уровня ящика остаются под ручным контролем: они переживают отключение любой автоматизации и потом ведут себя неожиданно.
Спам-фильтр провайдера. Своя классификация ставится после него, а не вместо.
Приоритеты и сроки в трекере. Их расставляет человек. Срочность, указанная в письме, — мнение отправителя о своей задаче.
Обратимость
- Метки снимаются массово поиском по метке — минутная операция в любом почтовом клиенте.
- Черновики карточек живут в одной колонке, которая чистится целиком.
- Снятое расписание возвращает прежний ручной разбор: почта не изменена, задачи на месте, ничего восстанавливать не нужно.
- Хранение промежуточных данных ограничено тем, что нужно для идемпотентности: идентификатор треда, время обработки, результат. Тексты писем в логи не пишутся.
- Доступ на запись в трекер выдаётся отдельным ключом с правами на создание карточек в одной колонке. Отзыв ключа — один клик, и разбор перестаёт что-либо создавать, продолжая читать.
Границы
Ящики с персональными данными. До того как содержимое писем уйдёт в модель, нужны ответы: где обрабатывается, что логируется, что записано в согласиях и договорах. Иногда ответ закрывает тему целиком.
Юридически значимая переписка. Претензии, уведомления, переписка с госорганами разбираются руками, без промежуточных слоёв.
Решения внутри длинного треда. Модель хорошо отвечает на «о чём письмо» и плохо — на «что в итоге решили» в ветке на сорок сообщений с цитированием. Упоминание темы и принятое решение снаружи выглядят одинаково.
Смысл во вложении. Если суть письма — таблица в приложении, а в теле «см. вложение», классификация по тексту бесполезна.
Малый поток. Десяток писем в день разбирается быстрее, чем настраивается конвейер.
Ящик, где важно всё. Персональный адрес руководителя небольшой компании часто именно такой: фильтровать нечего, весь поток адресный.
Правило одной строкой: почта порождает черновик задачи со ссылкой на письмо, а задачу заводит человек.
