Your intelligent personal finance manager powered by Google Gemini AI.
FinMate is a full-stack web application that transforms how users manage their personal finances. Combining intelligent transaction tracking, AI-powered financial insights, and gamified engagement, FinMate empowers users to make smarter financial decisions and achieve their money goals.
Core Features:
-
Smart Transaction Tracking - Track spending through multiple sources: manual entry, bulk CSV import, or receipt scanning with OCR. Automatic category suggestions learn from your patterns.
-
AI-Powered Insights - Powered by Google Gemini, the system detects unusual spending patterns, generates weekly spending digests via email, provides budget optimization recommendations, and analyzes 13-week spending trends with forecasts.
-
Smart Shopping Comparison - Compare product prices across 7 Indian e-commerce platforms (Amazon, Flipkart, Blinkit, BigBasket, JioMart, Snapdeal, IndiaMART) with AI-powered debate analysis explaining the best value option. Includes pricing, trust scores, and delivery times.
-
Financial Health Score - A composite metric combining savings rate, budget adherence, transaction frequency, and goal progress. Track your financial wellness in real-time.
-
AI Chat Advisor - Get personalized financial guidance by chatting with an AI advisor trained on your transaction history and spending patterns.
-
Email Notifications - Receive configurable alerts for budget overages, achievement unlocks, anomalies, and weekly spending digests.
-
Real-Time Analytics - Interactive dashboards with 13-week spending trends, category breakdowns, monthly comparisons, and health score progression.
Backend: FastAPI + SQLAlchemy + Google Gemini API
Frontend: React 19 + TypeScript + Tailwind CSS
Database: SQLite (dev) / PostgreSQL (prod)
Deployment: Docker-ready, supports Heroku/Railway/Render
cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# Create .env file and add:
# GEMINI_API_KEY=your_key_here
# DATABASE_URL=sqlite:///./finmate.db
# SMTP_SERVER, SMTP_USER, SMTP_PASSWORD (optional)
uvicorn main:app --reload --port 8000cd frontend
npm install
npm run dev
# Open http://localhost:5173API docs available at: http://localhost:8000/docs
| Feature | Status | Details |
|---|---|---|
| User Auth | ✅ | JWT + bcrypt, email-based currency detection |
| Transactions | ✅ | Manual, CSV import, receipt scanning, auto-categorization |
| Budget Goals | ✅ | Create savings/debt goals with progress tracking |
| AI Insights | ✅ | Anomaly detection, weekly emails, budget optimization |
| Gamification | ✅ | XP system, 10+ achievements, streaks, leaderboards |
| Debate Purchase | ✅ | Price comparison (Amazon, Flipkart, Blinkit, etc.) |
| Chat Advisor | ✅ | AI-powered financial guidance |
| Health Score | ✅ | Real-time financial health metric |
FinMate/
├── backend/
│ ├── main.py # FastAPI routes
│ ├── models.py # SQLAlchemy models
│ ├── schemas.py # Pydantic schemas
│ ├── ai_insights.py # Gemini integration
│ ├── gamification.py # XP & achievements
│ ├── debate.py # Price comparison logic
│ ├── email_service.py # Email notifications
│ └── providers/ # Web scrapers
├── frontend/
│ ├── src/
│ │ ├── components/ # UI components
│ │ ├── AuthContext.tsx # Auth state
│ │ └── App.tsx # Main router
│ └── package.json
└── README.md
# Backend
cd backend
pytest test_main.py -v
# Frontend
cd frontend
npm test# Python
cd backend
black . && flake8 .
# TypeScript
cd frontend
npm run lintPOST /signup # Create account
POST /login # Authenticate
POST /transactions # Add transaction
GET /transactions # List transactions
POST /import-csv # Bulk import
POST /goals # Create goal
GET /analytics/enhanced # Health score + trends
GET /insights/anomalies # Spending anomalies
GET /stats # XP & achievements
POST /debate/run # Price comparison
POST /chat # Chat with AI
Full API docs: http://localhost:8000/docs
docker build -t finmate .
docker run -p 8000:8000 --env-file .env finmatecd frontend
npm run build
# Deploy dist/ folder to Vercel, Netlify, or any static hostUpdate DATABASE_URL to use PostgreSQL:
postgresql://user:password@localhost/finmate
Dashboard - Real-time transaction list, budget progress, health score
Insights Page - 13-week spending trends, category breakdown, anomalies
Debate Purchase - Compare prices with AI recommendations and product images
Achievements - Visual badges, XP counter, streak tracking, leaderboard
Chat Interface - Ask financial questions, get personalized advice
Backend won't start?
- Verify venv is activated:
source venv/bin/activate - Check dependencies:
pip list - Install missing:
pip install -r requirements.txt
CORS errors?
- Set
FRONTEND_URLin.env - Update allowed origins in
main.py
Auth failures?
- Verify
GEMINI_API_KEYis set - Check password strength (8+ chars, uppercase, digit)
Database issues?
- Delete
test.dband restart for fresh migration
MIT License - See LICENSE file for details
Version: 1.0 | Last Updated: March 14, 2026
Status: Production-Ready MVP