Personal expense tracking system with AI-powered receipt analysis via Telegram bot. In personal use for 2+ years.
- Send a receipt photo or text to the Telegram bot
- The bot runs OCR + LLM analysis to extract merchant, amount, currency, and date
- Select a category and account from inline buttons in the chat
- The expense is saved to the web app automatically
The project consists of three services:
| Service | Stack | Description |
|---|---|---|
| wanna-track | Vue 3, Vite, Vuetify 3 | Web app for expense management |
| wannatrack-receipt-api | NestJS, TypeScript, Telegraf | Telegram bot + REST API |
| wannatrack-ai-analyzer | FastAPI, Python | OCR + LLM receipt parsing microservice |
- Send receipt photo or text to Telegram — amount, merchant, and date extracted automatically
- Manage multiple accounts/funds with balances
- Organize expenses by categories
- Spending charts and history
- User authentication with Telegram account binding
- Vue 3 + Vite
- Vuetify 3 — UI components
- Pinia — state management
- Vue Router — routing
- Chart.js — spending visualization
- VeeValidate — form validation
npm install
npm run devFor the full system, also run:
- wannatrack-receipt-api — Telegram bot and API
- wannatrack-ai-analyzer — AI receipt analysis service
src/
├── api/ # API layer
├── components/ # Reusable UI components
├── composables/ # Vue composables
├── layouts/ # Page layouts
├── pages/ # Page components
├── router/ # Vue Router config
├── stores/ # Pinia stores
└── utils/ # Utilities