
Expense Tracker Backend
AI-powered expense tracking system with natural language interface, intelligent categorization, and real-time sync.
Architecture
The system uses a two-server architecture:
- MCP Server: Core expense tracking tools exposed via Model Context Protocol
- Gemini AI Server: FastAPI server providing chat interface with authentication
Features
- π€ Natural language expense management via Gemini AI
- π§ Intelligent categorization using embeddings and similarity search
- π JWT authentication with Supabase
- π Hierarchical categories for organization
- π·οΈ Predefined tag system
- π Real-time data sync
- π Learning system that improves over time
API Endpoints
Chat Interface
POST /chat- Send natural language commandsPOST /auth/refresh- Refresh JWT token
MCP Tools (via chat)
- Create expenses from natural language
- Auto-categorize transactions
- Get spending summaries
- Analyze subscriptions
- View recent transactions
Flutter Client
refer https://github.com/keyurgit45/expense-tracker-client
Testing
# Run all tests with mocks
ENVIRONMENT=test pytest tests/ -v
# Run specific components
ENVIRONMENT=test pytest tests/test_mcp_tools.py -v
ENVIRONMENT=test pytest tests/test_categorization.py -vProject Structure
backend/
βββ app/
β βββ core/ # Business logic
β βββ servers/
β β βββ gemini/ # AI chat server
β β βββ mcp/ # MCP tool server
β βββ shared/ # Shared configs
βββ scripts/ # Utilities
βββ tests/ # Test suiteAI Categorization
The system uses a hybrid approach:
- Generates embeddings for transactions using Sentence Transformers
- Finds similar past transactions using pgvector
- Uses weighted voting to predict categories
- Falls back to rule-based matching
- Learns from user confirmations
Development
- API docs: http://localhost:8000/docs
- Frontend integration: Configure CORS in Gemini server
- MCP tools can be tested directly via chat interface
Copy & paste β that's it
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtQuick Start
Prerequisites
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtEnvironment Setup
cp .env.example .env
# Add your credentials:
# - SUPABASE_URL
# - SUPABASE_KEY
# - GOOGLE_API_KEY (for Gemini)Database Setup
Execute the SQL scripts in your Supabase SQL Editor:
# Core tables
scripts/create_tables.sql
# Embeddings support
scripts/create_embeddings_schema.sqlRun Both Servers
Terminal 1 - MCP Server:
python run_mcp.pyTerminal 2 - Gemini AI Server:
uvicorn app.servers.gemini.main:app --reload --port 8000Initialize Data
# Populate categories
python scripts/populate_hierarchical_categories.py
# Populate predefined tags
python scripts/populate_predefined_tags.pyNo common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.