Як я зробив для себе трекер витрат, що хоч трохи почав мене задовільняти
Я — Full-Stack розробник. Це моя особиста історія. Я побудував FinMan — безкоштовний застосунок для особистих фінансів, який імпортує будь-яку банківську виписку за допомогою AI, зчитує показники лічильників і чеки за паливо з фото, надісланих у Telegram або WhatsApp-бот, і показує мені, скільки реально коштує один кілометр на моєму авто. Все почалося з бекенду на Perl і хардкорного HTML + JavaScript + jQuery на фронті і зараз класним AI продуктом з використанням трошки сучасніших інструментів який робить мене трохи щасливішим.
Проблема з кожним фінансовим застосунком, який я пробував
Я просто хотів знати, куди йдуть мої гроші — бачити структуру розходів і куди саме витрачаються тяжко зароблені кошти.
Я перепробував популярні трекери. Кожен із них підводив мене однаково: надто багато ручної роботи. Вводити кожну витрату вручну. Годину налаштовувати категорії. І майже жоден не міг автоматично фіксувати онлайн-оплати карткою — а саме там осідає більша частина моїх грошей.
Я зловив себе на тому, що витрачаю більше часу на внесення даних, ніж на розуміння своїх фінансів. І вчинив як розробник — написав власний.
Перша версія була безсоромно старомодною: Perl на бекенді, чистий HTML і JavaScript на фронті. Негарно, але моє. І вона робила одну річ, якої не вміли полірованні аналоги: працювала так, як живу я.
Прорив #1: витрати, які фіксують себе самі
Першою справжньою перемогою стала інтеграція webhook API Монобанку. Оплачуєш карткою — за секунду транзакція вже в застосунку: сума, мерчант, категорія. Без жодного введення. Без забувань. Вперше моя фінансова картина стала повною без жодних зусиль з мого боку.
Це стало дизайн-принципом для всього подальшого: якщо щось вимагає дисципліни — воно врешті-решт зламається. Автоматизуй ввід.
Прорив #2: не пиши парсери для банків — нехай AI читає виписку
Інші банки означали імпорт виписок. Кожен банк має свій формат: тут CSV, там PDF, Excel, різні стовпці, різні формати дат. Я писав парсер за парсером — Приватбанк, ПУМБ, Raiffeisen, Revolut, Wise, Erste, N26...
Зрештою набридло, і я побудував інший механізм: декларативний рушій вилучення даних, де AI розпізнає структуру виписки, яку ніколи раніше не бачив. Сьогодні FinMan імпортує будь-яку виписку. Новий банк? Жодного нового коду.
Технічний урок: складним виявився не AI — а стабільні ідентифікатори платежів (щоб повторний імпорт не дублював транзакції) і обробка валют для кожного рядка. Нудні частини завжди виявляються найскладнішими.
Прорив #3: камера — найкращий пристрій введення
Два щомісячні ритуали непомітно з’їдали мої вечори:
Лічильники. Зняти показники, відняти минулий місяць, помножити на тариф — і так по кожній послузі. Тепер: фото лічильника → бот → AI зчитує цифри, розпізнає, який це комунальний сервіс, обчислює різницю і суму до сплати.
Витрати на авто. Я завжди хотів знати реальну цифру: скільки коштує один кілометр — окремо пальне, ремонти, обслуговування. Тепер: фото чека за паливо + фото одометра → застосунок рахує витрату (л/100 км або MPG) і вартість на км/милю.
Найкрутіша деталь — бот не потребує жодних пояснень. Кидаєш фото чого завгодно, він сам розуміє що це, і робить все що треба. Жодного меню.
А оскільки логіка живе в ядрі, а не в боті — додати WhatsApp через Meta Cloud API поруч із Telegram виявилося переважно маршрутизацією: обидва боти використовують ідентичні сценарії.
Прорив #4: цифри, які не брешуть
Дві невеликі функції виявилися найважливішими для чесної аналітики:
- Мультивалютність зі збереженням курсів обміну. Гривня не завжди була стабільною (на жаль), тому порівнювати березень 2015 із березнем 2016 у гривні не завжди мало сенс. Кожен платіж зберігає свій курс; аналітику можна переглядати у стабільній валюті за будь-який період.
- Виключені категорії. Бізнес-проєкти та інвестиції не змішуються в загальні домашні підсумки — але їх можна аналізувати окремо. Щоденні витрати залишаються зрозумілими.
Від особистого інструменту до продукту
Минулого року я переписав усе на сучасному стеку — FastAPI async і SQLAlchemy 2.0 на бекенді, Vue 3 і TypeScript на фронті, налаштував CI/CD. Додав сімейні групи (спільні бюджети з ролями), режим орендодавця (ваш орендар надсилає фото лічильників, ви контролюєте), і AI-assisted pipeline локалізації, який переклав продукт на 20+ мов.
Основні функції безкоштовні. Інструмент народився безкоштовним — я спочатку зробив його для себе, і саме так перевіряється кожна нова функція.
finman.vhworx.com · GitHub · vikFinManBot · WhatsApp
Яка одна ручна рутина у вашому житті найбільше хочеться автоматизувати? Саме це питання і стало відправною точкою всього проєкту.
4 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарівДуже круто — взяти виснажливу рутину й повністю її автоматизувати — це і є справжня сила розробки. Особливо сподобався підхід: «якщо все тримається лише на дисципліні — довго не проживе». FinMan виглядає справді корисним 👏
все ввожу руками больше 20 лет. это не вопрос времени, это вопрос дисциплины
ну от з часом я став більше цінувати час :) я раніше і телефони міняв часто, ставив рут і прошивав і переносив всі дані. А зараз шкода на це часу. тим більше якщо можна максимально автоматизувати то чого би і ні?
Дуже зручно. Раніше аналіз витрат був завданням підвищеної складності, з великими втратами часу, настільки, що все перетворювалося на разові акції, з не завжди успішним завершенням і відповідно нерозумінням того, куди йдуть гроші. Тепер все зводиться до кількох кліків — щоб вибрати відповідний інтерфейс для перегляду та аналізу структури та деталей здійснених витрат.