@Finance_vereschak_family_botОсобистий Telegram-бот трекінгу витрат родини Сергія: text/voice/photo чека → Gemini 2.5 Flash → Google Sheets.
Why this exists:
KPIs:
Status snapshot: Бот працює у проді на GCP e2-micro (~$3.64/міс), родина його використовує. У процесі міграції на VPS (#37) — чекає handoff коду від Desktop Claude. Категоризація апгрейднута до 2-рівневої 2026-05-02.
Stakeholders:
312194208 (Сергій). Дружина — TODO додати.python-telegram-bot 21.8google-genai SDK — Gemini 2.5 Flash (text/image/voice), thinking_budget: 0, regex JSON extractiongspread + Google Service Account → Google Sheets Expense_Tracker.env через MASTER_PASSWORDTelegram вхід (text / voice / photo чека)
│
▼
expense_parser.py — Gemini 2.5 Flash
│
▼
ConversationHandler — підтвердження inline-кнопками
│
▼
sheets.py — gspread → worksheet "Expenses"
D:/Claude Code/expense-bot/ на Windows у Сергія)bot.py — ConversationHandler: text/voice/photo → parse → confirm → saveexpense_parser.py — Gemini-клієнт з 2-рівневою таксономієюconfig.py — розшифровує секрети з .env через MASTER_PASSWORD env varsheets.py — gspread service account, worksheet "Expenses"crypto_utils.py — Fernet encrypt/decrypt з SHA-256 key derivationЗамість плоских 10 категорій (Food/Transport/Housing/...) — 8 макро × 2-4 sub = ~22 категорії. Підтверджено Сергієм після аналізу квітневих витрат.
| Макро | Підкатегорії |
|---|---|
| 🏠 Дім | Ремонт / Побут-хімія / Меблі / Комуналка |
| 🚗 Авто | Паливо / Обслуговування / Кредит |
| 🍔 Їжа | Продукти (закупка тижня) / Кафе-ресторани / Кава (закупка зерен) |
| 🚬 Шкідливі звички | Алкоголь / IQOS |
| 🎁 Соціальне | Подарунки / Тусовки / Друзі |
| 👨👩👧 Родина | Освіта дітей / Здоров'я (діти) / Допомога батькам / Дитячі речі |
| 💪 Спорт і здоров'я | Басейн / Вітаміни / Особистий догляд |
| 📱 Технології | Гаджети / Електроніка / Підписки |
Чому виокремили 🚬 Шкідливі звички — Сергій захотів бачити ці витрати окремою макро-категорією (а не всередині «Соціального» або «Здоров'я»), щоб мати чесний show-down.
Спостереження з квітневого аналізу (/srv/reports/expense-april-2026-2level.md):
expense_parser.py — давати йому 2-рівневу таксономію + просити вибрати макро+subMacro_Category + Sub_Category поряд з оригінальною CategoryCategory залишаються, нові пишуться з обомаexpense-bot-492610expense-bot-vm (e2-micro, europe-west1-b, IP 35.187.42.215)klt-expense-bot-vm-venu, restart=alwaysus-central1-docker.pkg.dev/expense-bot-492610/expense-bot-repo/expense-botexpense-bot@expense-bot-492610.iam.gserviceaccount.com/srv/passepartout/expense-bot/secrets.env (chmod 600 + .meta)/root/.claude/projects/-/memory/outbox-to-desktop/2026-05-02T052100Z-expense-bot-vps-migration.mdMacro_Category + Sub_Categorygemini-2.0-flash deprecated → перейшли на gemini-2.5-flashthinking_budget: 0 + regex extractionmax_output_tokens: 256 був замалий → 1024export CLOUDSDK_PYTHON=... у bashD:/Claude Code/expense-bot/?ALLOWED_USERS?/root/.claude/projects/-/memory/personal_expense_bot.md (імпорт з Desktop Claude, 29.04).