A smart financial assistant web app that helps users analyze, manage, and optimize their spending habits using AI.
- 📤 File Upload: Upload bank statements in CSV or Excel format
- 🤖 AI Categorization: Automatic transaction categorization using GPT or rule-based system
- 📊 Interactive Dashboard: Beautiful charts showing spending patterns and trends
- 💡 Smart Insights: AI-generated financial insights and recommendations
- 🔮 Budget Forecasting: Predict future expenses based on historical data
- 📱 Responsive Design: Works on desktop and mobile devices
- Frontend: Streamlit with Plotly for visualizations
- Backend: FastAPI for REST API
- Database: SQLite (easily upgradeable to PostgreSQL)
- AI: OpenAI GPT for insights and categorization
- Data Processing: Pandas and NumPy
- Deployment: Can be deployed on Render, Streamlit Cloud, or AWS
- Clone the repository
git clone <your-repo-url>
cd Finance_Manager- Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate- Install dependencies
pip install -r requirements.txt- Set up environment variables
cp .env.example .env
# Edit .env file with your OpenAI API key# Run the Streamlit app directly (includes demo mode)
streamlit run frontend/app.py# Terminal 1: Start the backend API
cd backend
python main.py
# Terminal 2: Start the frontend
streamlit run frontend/app.pyThe app will be available at:
- Frontend: http://localhost:8501
- Backend API: http://localhost:8000
- API Documentation: http://localhost:8000/docs
-
Upload Your Bank Statement
- Go to "Upload Transactions" page
- Upload a CSV or Excel file with your bank transactions
- The app will automatically categorize transactions
-
View Your Dashboard
- Interactive charts showing spending by category
- Spending trends over time
- Key financial metrics
-
Get AI Insights
- Personalized recommendations for saving money
- Financial health score
- Spending pattern analysis
-
Budget Forecasting
- Predict future expenses
- Get budget recommendations
- Track savings potential
Your bank statement should have these columns (in any order):
- Date: Transaction date
- Description: Transaction description
- Amount: Transaction amount (negative for expenses, positive for income)
- Category: (Optional) Existing category
Example CSV format:
Date,Description,Amount,Category
2024-01-15,Starbucks Coffee,-5.50,Food & Dining
2024-01-14,Salary Deposit,3500.00,Income
2024-01-13,Amazon Purchase,-89.99,Shopping
To enable AI-powered insights and categorization:
- Get an API key from OpenAI
- Add it to your
.envfile:
OPENAI_API_KEY=your_api_key_here
- Food & Dining
- Transportation
- Shopping
- Entertainment
- Bills & Utilities
- Healthcare
- Travel
- Education
- Income
- Transfer
- Investment
- Other
- Push code to GitHub
- Connect to Streamlit Cloud
- Deploy the
frontend/app.pyfile
- Create two services on Render:
- Web Service for FastAPI backend
- Web Service for Streamlit frontend
- Set environment variables
- Deploy
docker-compose upFinance_Manager/
├── backend/
│ ├── api/ # FastAPI routes
│ ├── models/ # Data models
│ ├── services/ # Business logic
│ ├── utils/ # Helper functions
│ ├── config.py # Configuration
│ └── main.py # FastAPI app
├── frontend/
│ └── app.py # Streamlit app
├── data/
│ └── sample/ # Sample data files
├── tests/ # Unit tests
├── requirements.txt # Dependencies
└── README.md
pytest tests/black backend/ frontend/
flake8 backend/ frontend/- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- All data processing happens locally or on your chosen cloud provider
- No transaction data is stored permanently without your consent
- OpenAI API calls only include transaction descriptions for categorization
- Use environment variables for sensitive configuration
If you encounter any issues:
- Check the Issues page
- Create a new issue with detailed information
- Contact support via email
- Bank API integration (Plaid, Yodlee)
- Mobile app (React Native)
- Advanced ML models for better predictions
- Multi-user support with authentication
- Goal tracking and alerts
- Investment portfolio analysis
- Export to popular accounting software
Made with ❤️ for better financial health