Дмитрий Анашкин

Утренняя сводка по всем почтовым ящикам: что отдать нейросети, а что оставить себе

Опубликовано 29 сент. 2026 г.9 мин чтенияНачальный
Утренняя сводка почты: стопка конвертов превращается в одно короткое сообщение на телефоне
Плейбук
Утренняя сводка по всем почтовым ящикам
Дмитрий Анашкин · 9 мин
Чему вы научитесь
  • Как устроить одну сводку по нескольким почтовым ящикам
  • Что отсеивается правилами до нейросети и почему бесплатно
  • Что нейросеть получает из письма и что возвращает
  • Как не потерять важное письмо молча
  • Как поставить такую сводку сотруднику компании
Начальный

Коротко

Зачем одна сводка вместо шести ящиков?

У меня шесть-семь почтовых ящиков в разных сервисах: Gmail, Яндекс, Mail.ru и корпоративные на хостинге. Каждое утро это семь вкладок и поиск глазами. Боль одна: важное письмо лежит в куче шума, и выкапывать его приходится руками каждый день.

Я собрал себе ассистента, который делает этот обход сам и присылает в Telegram одну сводку. Требование к её форме я сформулировал так: «спам вообще не читаем, может быть одной строчкой написать, что там ещё было столько-то неважных, сервисных».

Из этой фразы выросли три правила формы:

  • Раздел на каждый ящик. Я помню, какой ящик про что, и эта разметка для меня бесплатная.
  • Ярлык у каждого важного письма. Строка выглядит как «[ярлык] Отправитель - суть»: письмо понятно без чтения строки целиком.
  • Шум одной строкой. В конце раздела: «отсеяно столько-то: рассылки, уведомления сервисов».

Сводка назначена на 8:30, а другой мой утренний бот пишет в 9:00: два утренних сообщения подряд быстро перестают читать.

Только чтение: что ассистент не может сделать с почтой

Сводка только читает почту, и это заложено на уровне протокола. Протокол почты IMAP умеет открывать папку в режиме, где любые изменения запрещены. Мой ассистент открывает ящики только так.

Отдельная мелочь, которая важна каждое утро: письма после сводки остаются непрочитанными. Ассистент забирает их без отметки «прочитано», и ящик выглядит так, будто в него никто не заходил.

Что ещё осталось за бортом:

  • вложения не скачиваются и не разбираются;
  • тела писем не хранятся нигде: в базе лежат только служебные данные показанных писем, в журнале - счётчики и домены;
  • бот отвечает только на мой номер чата, остальных молча игнорирует.

Режим «только чтение» тоже нужно проверять. Мой первый тест на него смотрел на подставной ящик, который сам себе выставлял нужный флаг, и замена режима на «запись» проходила мимо всех тестов. Новый тест запускает настоящее открытие ящика и такую подмену ловит. Как вообще решать, давать ли нейросети доступ к рабочей почте, подробно разбирал в материале про доступ агента к почте и серверу.

Что отсеивается до нейросети?

Большая часть шума узнаётся без нейросети: у рассылок и автоответов есть служебные заголовки, невидимые человеку. Эти заголовки описаны в стандартах почты, и сервисы рассылок их обычно ставят.

Каждому признаку я дал вес, и письмо уходит в шум, когда сумма весов набирает единицу:

ПризнакЧто означаетВес
заголовок List-Idписьмо пришло через движок рассылок1,0
заголовок Auto-Submittedавтоответ или автоматическое письмо1,0
Precedence: bulkмассовая отправка0,7
адрес no-replyуведомление сервиса0,6
кнопка List-Unsubscribeссылка «отписаться»0,5

Веса, а не простое «да или нет», появились из-за последней строки. Одиночную ссылку «отписаться» ставят и живые менеджеры, которые пишут из рабочих систем. Отсеивать по ней одной значит терять письма людей.

Два правила стоят выше весов. Письмо без единого признака рассылки идёт дальше в модель: тихий отсев обычного письма я считаю провалом. А отправитель из списка важных показывается всегда, даже с рассылочными заголовками, и в модель не идёт.

Что нейросеть получает и что возвращает?

Нейросеть в сводке работает сортировщиком: читает начало письма и заполняет короткий бланк. Прав ИИ-агента у неё нет: отвечать, пересылать и решать она не умеет.

Бланк такой: важность от нуля (шум) до трёх (срочное), ярлык, суть одной строкой, нужен ли ответ, подозрительное ли письмо и причина оценки. В сводку попадает всё с важностью два и выше. Ярлыки берутся только из словаря: заказчик, договор, счёт, встреча, личное, госорган и прочее. Ярлык не из словаря превращается в «прочее», чтобы важное письмо не осталось без метки.

Письмо от незнакомого отправителя - такие же чужие данные, как веб-страница. Текст письма уходит модели между явными разделителями, и инструкция запрещает исполнять команды изнутри. Письмо с попыткой командовать моделью получает пометку «подозрительное» и показывается в сводке всегда.

Если модель вернула мусор, запрос повторяется один раз. Не помогло - письма оцениваются по одним правилам с пометкой, что модель их не видела. Сводка приходит в любом случае.

Что остаётся себе

Ответы на письма, удаление и любые решения по почте остаются человеку. Письма банка, юриста, налоговой и личную переписку можно внести в список, который в модель не уходит вовсе: такое письмо приходит в сводку строкой «письмо от такого-то, посмотри сам», без пересказа.

Как не пропустить важное?

Сводка, которая иногда молчит, хуже её отсутствия: ты перестаёшь проверять ящики и не знаешь, что пропустил. После сборки я прогнал ассистента сквозной проверкой свежим взглядом. Она нашла пять путей, на которых письмо пропадало тихо и навсегда.

Первый путь: отметка «прочитано до сюда» сдвигалась ещё до показа, и упавший между чтением и отправкой прогон хоронил письма. Второй: отметка «показано» ставилась даже тогда, когда Telegram ответил ошибкой. Человек сводки не видел бы, а назавтра эти письма уже не пришли бы.

Теперь прогресс записывается только после удачной доставки. Плюс три правила, которые держатся тестами:

  • У прогона три исхода, и все с сообщением: сводка, «важного нет» или «прогон не удался» с причиной. Молчания нет.
  • Упавший ящик - строка, а не авария. Сменился пароль, лёг сервер - в сводке появляется «ящик недоступен», остальные обработаны.
  • Одно письмо - одна строка. Копия письма в нескольких ящиках показывается один раз с пометкой, где она лежит ещё.

Длинная сводка режется по границам разделов: у Telegram предел 4096 символов на сообщение. Всё, что работает по расписанию без присмотра, должно само сообщать о своих поломках. Про такие тихие поломки подробнее в материале про автозадачи, которые работают без тебя.

Деньги и порог закрытия

Каждое письмо, ушедшее в модель, стоит денег, поэтому расход считается до следующей пачки писем, а не после прогона. Потолок на один прогон - 20 рублей, на месяц - 500. По расчёту при 350 письмах в день выходит около 90 рублей в месяц, так что потолок стоит примерно впятеро выше ожидания.

На этом месте тоже нашлась тихая ошибка. Если сервис не сообщал цену вызова, код считал её нулём, и потолок не срабатывал никогда. При потолке в одну копейку в модель ушли все сорок запросов из сорока. Теперь неизвестная цена останавливает отправку писем в модель.

Порог закрытия я записал до первой строки кода. Если через три недели после первого живого прогона я всё равно открываю ящики руками, значит сводке не доверяю. Если расход перевалил за 500 рублей в месяц, цена не сходится с задачей. В обоих случаях проект сворачиваю или переделываю.

От кнопки «пропустил важное» я отказался сознательно. Инструмент, который просит себя обслуживать, умирает первым. Мерило одно: перестал ли я по утрам заходить в почту.

Как это становится инструментом для сотрудника?

Я строил ассистента так, чтобы тот же движок можно было поставить сотруднику компании без переписывания. Всё, что отличает одного человека от другого, вынесено в профиль: адреса ящиков, время сводки, часовой пояс, словарь ярлыков, список важных отправителей и список тех, кто в модель не уходит.

Самым долгим оказался не код, а подключение ящиков. Код закрыт 99 тестами, а подключение первого ящика дважды спотыкалось о ручную правку двух файлов: то редактор не сохранил пароль, то имя переменной не совпало. Вывод простой: последнюю милю настройки закрывает скрипт, инструкция тут не помогает.

Порядок подключения нового человека я заложил такой:

  1. Добавь ящик одной командой

    Скрипт спрашивает адрес, находит почтовый сервер по домену, принимает пароль приложения скрытым вводом и сначала проверяет вход. Записывает настройки только после удачного входа: с неверным паролем на диске не меняется ни байта.

  2. Заполни словарь ярлыков

    Подсказка к каждому ярлыку пишется так, как объяснил бы новому сотруднику: «договор, приложение, акт, подписание».

  3. Прогони сводку с выключенной отправкой

    Отправка рождается выключенной: текст ложится в файл, наружу ничего не уходит. Человек читает его глазами и называет промахи.

  4. Перенеси промахи в правила

    Важные отправители, домены шума, порог важности - правкой профиля, а не кода.

  5. Включи отправку рукой

    Когда текст устроил того, кто будет его читать.

Для компании здесь появляется вопрос, куда уходят тексты писем. Эту развилку я разбирал в материале про чувствительные данные и нейросети в компании. А чтобы сводка приходила при выключенном ноутбуке, ассистент рассчитан на работу с сервера, как бот без включённого ноутбука.

Частые вопросы

Частые вопросы

Главный вывод

Нейросеть в почте хороша как сортировщик. Отдать ей стоит первую сортировку: что важно, про что письмо, нужен ли ответ. Себе стоит оставить ответы, удаление и письма, которые чужим глазам видеть незачем.

Практический минимум на сегодня: посчитай, сколько ящиков ты обходишь по утрам, и выпиши отправителей, которых нельзя пропустить. Этот список - первый раздел будущего профиля.

А ты разбираешь почту сам или уже отдал первую сортировку нейросети?

Источники

Отправь другу или себе в избранное в Telegram, чтобы не потерять.

Поделиться в Telegram
Было полезно?
Автор
Дмитрий Анашкин
Практик-интегратор ИИ в бизнес

Основатель NeuroDA и SMAIPL. Корпоративные воркшопы по ИИ, внедрение AI в бизнес-процессы.

Похожие гайды

Бот для сводки рабочих чатов: статусы и риски проекта без ручного чтения

Бот читает командные чаты и раз в сутки присылает руководителю проекта карточку: что зависло, кто кого ждёт, какое обещание просрочено. Разбираю на своём боте, что отдать нейросети, какие сигналы риска видны в переписке, как объявить команде и как обезличить имена.

9 мин

Вопросы продавцу ИИ-решения: что спросить до пробного доступа

Какая нейросеть обрабатывает данные и как защищены персональные данные - главный вопрос к любому продавцу ИИ-решения. Разбираю семь вопросов до пробного доступа, признаки уклончивых ответов, что делать с данными клиентов и когда выгоднее собрать своё на открытом коде.

8 мин

Второй мозг команды, а не одного человека

Накопленный контекст переносится технически легко: это текстовые файлы. Ломается смысл - в личной папке смешаны правила компании и привычки автора. Разбираю, как разделить слои, зачем общему файлу владелец с правом удалять и как передать контекст новому человеку за час.

8 мин

Учёт денег: когда таблица перестаёт справляться

Файл с расходами ломается не от количества строк, а когда от него ждут двух ответов сразу: сколько денег на счетах и сколько из них компания заработала. Разбираю пять признаков перерастания, блоки собственного контура учёта и почему точка ввода данных должна быть одна.

8 мин

Связанные понятия