
Текстовое сообщение становится размеченной строкой в Notion
Отправьте «spent $45 on lunch» или «потратил 500 на обед» на английском или русском и укажите, для кого это и в какой валюте: размеченная строка появится в Notion за пять шагов.
Что работает автоматически
Парсер сообщений
Регулярки и ключевые слова превращают сообщение вроде «spent $45 on lunch» в сумму, тип, категорию, дату и заметки без обращения к модели. 22 категории определяются по ключевым словам по порядку, а без совпадения трата попадает в Other.
Подтверждение перед сохранением
Бот отвечает кнопками с тем, для кого записать трату, затем выбором валюты, а после – полным предпросмотром разобранного. Ничего не сохраняется, пока не нажат «Confirm».
Типизированная строка в Notion
Подтверждённая транзакция записывает одну строку в базу Notion с фиксированной схемой: сумма, тип, категория, дата, заметки, человек и валюта. Записать может только Telegram ID из явного белого списка.
Собрано с Claude Code за 1 день
Запись покупки означала открыть приложение и выбрать из меню.
Обычное сообщение становится размеченной строкой в Notion после одного тапа «Confirm».
Как устроено
01Контекст
Учёт расходов вручную означает открывать приложение каждый раз
Учёт покупки вручную означает открыть отдельное приложение или таблицу, а затем для каждого кофе и каждого счёта выбирать из меню категорию, валюту и на кого записать трату. Именно из-за этого трения журнал расходов обычно начинает отставать, а через пару недель и вовсе останавливается. Бот записывает трату там, где она уже упоминается: коротким сообщением на английском или русском.
02Как работает
Сообщение, три касания, строка в Notion
Сообщение вроде «spent $45 on lunch» или «потратил 500 на обед» – это всё, что нужно напечатать. В ответ бот показывает кнопки с тем, для кого записать трату, затем выбор валюты между USD и EUR, а после – предпросмотр всего, что он распознал: сумму, тип, категорию, дату и заметки. За этим ответом tools/parse_transaction.py сверяет сообщение с 22 категориями по ключевым словам по порядку, пока не найдётся совпадение, а расход это или доход решает по словам вроде «spent» и «paid» против «received» и «salary».
03Ограничения
Разбор по правилам, белый список, два способа запуска
Определение категории – это правила по ключевым словам, а не вызов модели, поэтому сообщение без совпадения попадает в Other вместо умной догадки, а валюта ограничена USD и EUR. Бот отвечает только тем ID пользователей Telegram, что внесены в белый список, а person и currency повторно проверяет на сервере, хотя они приходят с кнопок. Один и тот же код работает двумя способами: main.py – локальный процесс, и modal_app.py – деплой в облако Modal, где credentials хранятся как секреты Modal, а не в локальном .env.
ANM SOLUTIONS / СВЯЗАТЬСЯ
Хотите похожее?
Первый 30-минутный звонок бесплатный. Мы описываем объём, вы решаете.



