От Telegram-бота к полноценному приложению: почему просто записывать траты бессмысленно?

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

Это сработало и привычка диктовать траты в бота сразу после покупки казалось закрепилась намертво, но когда эйфория от работающего костыля у меня прошла, я стал пропускать записи.К тому же, бот оказался отличной записной книжкой, но отвратительным аналитиком, точно так же, как и большинство банковских приложений. Они все работают по одной и той же унылой схеме: констатируют факт. Тебе просто показывают красивый бублик с диаграммой и говорят «Смотри, ты потратил на рестораны на 20% больше».

И что мне с этой информацией делать? Расстраиваться?

Я как продакт начал копать глубже и понял, что сам подход к PFM (Personal Finance Management) устарел - учет ради учета не работает. Концепция должна сместиться от ручной записи к закрытию полного цикла. За эти полгода я сформировал его так:

  1. Цели: чего мы вообще хотим добиться? (накопить, урезать конкретную категорию, запустить челлендж)
  2. Операции: сбор всех данных о доходах и расходах без рутины
  3. Вопросы: ключевой этап, которого нет ни у кого. Система должна не констатировать факт, а узнавать контекст.
  4. Аналитика: интерпретация данных с учетом полученных ответов и контекста.
  5. Действия: конкретные шаги, а которые должны вести к достижению цели.

Реализовать такой цикл внутри Telegram-бота с его скудным UI и ограничениями системы было ультра-гемороем, да и его всё сильнее начинали блокировать. Поэтому бот отправился на пенсию (поддержка), а я сел писать полноценное приложение.

В этой статье расскажу, как я перевел бету на новые рельсы, заставил приложение вытаскивать данные из любых банков без всякого Open Banking и прикрутил LLM, которые работают как личный финансовый директор, а не как тупой калькулятор.

От Telegram-бота к полноценному приложению: почему просто записывать траты бессмысленно?

Данные без Open Banking: как скормить приложению вообще всё и не сойти с ума

Когда я изучал рынок и решения конкурентов, то столкнулся с проблемой, которая казалась нерешаемой. Главный прямой конкурент явно тратит много денег на поддержку инфраструктуры, которая позволяет ему получать банковские операции клиентов. У него айтишаня команда, есть саппорты, которые тушат пожары, когда банки в очередной раз меняют входы. А я один😅

Спустя 2 месяца реверс-инжиниринга банковских приложений и мучений с закрытыми апишками, я понял, что в соло это просто не потяну. В РФ нет Open Banking, поэтому любые костыльные интеграции - это вечная боль и танцы с бубном.

Но еще через 4 месяца я нашел решение. Крайне адаптивное, с качеством под 97%, которое позволяет делать то же самое без ковыряния апихи. И самое главное - я не держу костов на сотрудников для поддержки этой махины😏

Я решил пойти по пути максимальной свободы и дал пользователю выбор, как загружать операции:

  • текстом в свободном формате в телегу или приложуху
  • голосом (эта фича перекочевала из первой версии, и она топ)
  • фоткой чека
  • любым файлом (PDF выписка или хоть целая экселька из любого банка);
  • чтением пушей (пока только Android, iOS добью после релиза)
  • собственной разработкой переноса операций из любых банков без интеграций

Конечно, когда у тебя столько каналов ввода, мог бы начаться хаос. Утром ты продиктовал трату на кофе, вечером закинул выписку из банка и привет, дубли. И вот тут вступает в игру отдельный микросервис дедупликации, где и нейросетки работают и математика, который прогоняет все транзакции через себя и понимает что дубль, а что нет. Короче понимает, что твое утреннее голосовое про кофе 250 и транзакция «Coffee Like 250 RUB» из пуша — это одно и то же, и аккуратно их схлопывает 😎

От Telegram-бота к полноценному приложению: почему просто записывать траты бессмысленно?

Ну и отдельно хочу выделить фичу, которая из пушей и переноса банковских операций выделяет бренды. Например, условный vkussvill 201 станет ВкусВилл с логотипом. Конечно, далеко не все операции банковские с названием мерчей сразу становятся красивыми брендами, но всегда можно нажать на кнпоку "Привязать" и последующие операции с таким неймингом уже будут сразу показываться с брендом.

LLM как финансовый директор: почему заполнять формы - это отстой

Если раньше я думал, что в финансовом приложении цели могут быть только строго финансовыми, то сейчас я уже не уверен в этом.

Как пользователи ставят цель в классическом банковском аппе: открываешь вкладку, заполняешь унылую форму «Название цели», «Сумма», «Дата окончания»... и чувствуешь себя бухгалтером. Я хочу это убить.

В «Считаю» LLM не только помогает раскидывать операции по категориям, но и ставит цели (накопительные, челленджи, лимиты) через обычное человеческое общение в чате. Ты просто пишешь или говоришь боту: «Слушай, давай в этом месяце сделаем челлендж — тратить на кофе не больше 5000», и всё! Да и сама нейронка может предложить сделать тоже самое первой.

Но главная фишка в другом. Я сделал так, чтобы LLMка могла понимать мой контекст и самой задавать мне вопросы.

Обычная аналитика работает тупо: она видит, что у тебя появилась категория «Аренда» с чеком в 150к, и радостно рапортует: «У вас выросли расходы на аренду с нуля до Х!». Спасибо, кэп, но мы в такой ситуации уточняем контекст. Я ей отвечаю, что сейчас продаю квартиру и временно арендую дом. И всё, при следующей интерпретации аналитики она уже учитывает этот факт.

Пара реальных примеров того, что у меня спрашивал мой же сервис:

  • «Вижу, что вы стали платить за ноутбук каждый месяц. Это рассрочка? Сколько вам еще нужно будет платить?»
  • «Видно, что основные расходы приходятся на выходные. Вы стали больше проводить времени с друзьями или партнёром?»

Или, например, вопрос о том, для чего я трачу деньги на образование себя и дочери. После короткого диалога система понимает, что за этими тратами стоят долгосрочные цели, и перестает воспринимать их как просто слив денег на услуги

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

Под капотом: вайбкодинг по-македонски, Flutter и муки с дизайном

Поскольку я пишу приложение на Flutter один, мне было важно максимально срезать углы там, где это возможно, но не экономить на качестве сборки.

Начал я с упрощения онбординга. Понял, что новым пользователям геморройно проходить классическую регистрацию, и решил пойти по пути чистого входа - Passwordless авторизации (гугл, яндекс, вк). Была мысль прикрутить еще T-ID, но я вовремя тормознул: есть стойкое ощущение, что если юзер видит банковский логин, он ожидает, что его транзакции подтянутся автоматом.

От Telegram-бота к полноценному приложению: почему просто записывать траты бессмысленно?

Про AI-помощников и тесты «в два ствола» Раньше я сидел в Cursor, но сейчас плотно пересел на Antigravity от Google для написания самого кода. А вот тестами мы покрываемся в две руки по-македонски: слева у нас GLM-5 от z.ai, а справа — то Gemini 3 Pro, то Claude 4.6 Opus.

Честно скажу, GLM-5 меня приятно удивила: шустрая, самопроверяется и не спрашивает лишний раз разрешения на действия, которые Gemini может раз 100 переспросить за вечер. Плюс экономика: топовый тариф китайцев обходится в 252$ в год, а лимитов дает столько же, сколько Cursor за 200$ в месяц. Хотя, потом я понял, что его нужно контролировать сильнее за эти деньги.

Ну и так как сейчас мой фокус сместился с новых фич на стабильность, я обмазался Sentry. Хоть сервис из РФ и недоступен, но сервер у меня крутится в Казахстане, так что проблем нет. Это дикий кайф - видеть, что сборка не просто прошла тесты, но и ошибки не генерятся, а если что-то и падает, то алерт сразу летит мне в телегу. Обмазываться Сентрёй на ранних этапах искренне рекомендую всем😍

Что дальше: фиче-фриз, RuStore и открытый бета-тест

Как я уже сказал, мой продуктовый вижн полностью реализован. Я больше не планирую пилить новые фичи - пора остановиться. Сейчас у меня жесткий фиче-фриз, я полностью перешел к этапу дебага, стабильности и качества.

Из старого доброго бота-костыля «Считаю» сервис окончательно вырос в полноценный продукт. Прямо сейчас я впиливаю SDK сторов, чтобы нормально разместиться в RuStore и дать людям удобный доступ. Пока всё работает на Android, версия под iOS обязательно будет, но чуть позже, как только вылижу текущую сборку.

Зачем я вообще всё это пишу? Я делаю этот сервис один. Мой QA-отдел - это я сам и парочка LLM. Поэтому я открываю бету для всех, кто хочет попробовать нормальный финансовый учет полного цикла: без боли с Open Banking, без экселевской духоты и с ИИ, который реально понимает ваш контекст, а не сыпет бесполезными процентами.

Так как VC берёт много денег за коммерческие посты, то я не могу разместить тут ссылку на сервис, но с радостью поделюсь ей в телеге @nerozhnov

Буду рад, если вы зайдёте, попытаетесь сломать парсинг чеков или выписок, проверите нейронку на прочность и накидаете мне честного фидбека в комменты. Если что-то не работает, не заходит или интерфейс бесит - рассказывайте, это реально поможет сделать сервис лучше. А если у вас есть свои неочевидные фишки ведения бюджета, то с кайфом почитаю.

Летний вайб уже близко, хочется поскорее выкатить железобетонно стабильный релиз, чтобы спокойно работать на улице и наслаждаться тем, как система сама ведет мой бюджет.

Спасибо, что дочитали! ✌

3
2 комментария