← всі звіти · personal_expense_bot.md

name: Expense Bot — Фінбот @Finance_vereschak_family_bot description: Особистий Telegram-бот трекінгу витрат родини; AI parsing (Gemini 2.5 Flash) → Google Sheets. Зараз на GCP e2-micro, міграція на VPS у травні 2026. type: project originSessionId: 256f068c-ce5f-41dd-917f-a62a834b8c2a

Expense Bot (Фінбот) — особистий проект

Що це

Telegram-бот для родини Сергія, який приймає текст / голос / фото чека → парсить через Gemini 2.5 Flash (text/image/voice) → зберігає рядок у Google Sheet «Expense_Tracker».

ConversationHandler з кнопками-підтвердженнями перед записом — щоб AI не записував зайве.

Стек

Структура коду (зараз на Windows у Сергія: D:/Claude Code/expense-bot/)

Категорії (Sheet headers)

Date, Amount, Currency, Category, Comment. Категорії: Food, Transport, Housing, Utilities, Health, Entertainment, Clothing, Education, Subscriptions, Other.

Зараз працює тут

Усі секрети винесено в passepartout: /srv/passepartout/expense-bot/secrets.env — Telegram bot token, Gemini API key, Sheets ID, MASTER_PASSWORD, GCP-конфіг (chmod 600 + .meta).

Заплановано: міграція на VPS (травень 2026)

  1. Зняти з GCE → перенести runtime у /srv/services/expense-bot/
  2. systemd unit (поллінг, не webhook) — за зразком arteggia-bot.service
  3. Підтягнути секрети з passepartout/expense-bot/secrets.env через EnvironmentFile
  4. Перевірити що Gemini API key ще валідний (на проекті expense-bot-492610 не повинно бути 403/429 — інший проект ніж основний gemini.key)
  5. Після verify — вимкнути billing у GCP-проекті, $3.64/міс зупиняться

Питання до Сергія перед стартом міграції:

Known issues (вже вирішені у production коді)

Контакти і доступ

Категоризація — 2-рівнева (схвалено Сергієм 2026-05-02)

Базується на аналізі квітневих витрат (/srv/reports/expense-april-2026-analysis.md). Замість 10 плоских категорій — 2-рівнева структура: 7 макро × 2-4 sub = ~22 категорії.

Макро Підкатегорії
🏠 Дім Ремонт / Побут-хімія / Меблі / Комуналка
🚗 Авто Паливо / Обслуговування / Кредит
🍔 Їжа Продукти (закупка тижня) / Кафе-ресторани / Кава (закупка зерен)
🚬 Шкідливі звички Алкоголь / IQOS
🎁 Соціальне Подарунки / Тусовки / Друзі
👨‍👩‍👧 Родина Освіта дітей / Здоров'я (діти) / Допомога батькам / Дитячі речі
💪 Спорт і здоров'я Басейн / Вітаміни / Особистий догляд
📱 Технології Гаджети / Електроніка / Підписки

Спостереження з квітневого аналізу:

Як впровадити у бот:

  1. Оновити Gemini-промпт у expense_parser.py — давати йому 2-рівневу таксономію + просити вибрати макро+sub
  2. Google Sheet headers: додати колонки Macro_Category + Sub_Category поряд з оригінальною Category
  3. Backward-compatibility — старі записи лишаються з flat Category, нові пишуться з обома

How to apply

Коли Сергій каже «фінбот», «expense bot», «трекер витрат» — це той самий проект. Технічна інтеграція з VPS — окрема задача (див. open-tasks.md). Інфа джерело: імпортовано з desktop/memory/expense_bot.md (Desktop Claude, 29.04).