A Streamlit-based web application for personal finance analytics. Upload CSV financial data to visualize cash flow, track budgets, analyze spending patterns, and detect anomalies. Features interactive charts, custom filters, and predictive insights.
The FinViz Dashboard has been significantly enhanced with modern UI/UX improvements, better error handling, and a more refined user experience:
- Modern Gradient Header: Professional gradient design with status indicators
- Enhanced File Upload: Interactive upload with sample format display and comprehensive help
- Progress Tracking: Real-time progress bars during data processing
- Improved Error Handling: User-friendly error messages with troubleshooting guides
- Responsive Design: Better mobile and tablet compatibility
- Interactive Elements: Hover effects and smooth transitions throughout
- Modular Architecture: Better code organization with component-based design
- Enhanced Error Management: Comprehensive try-catch blocks with graceful degradation
- Performance Optimizations: Efficient data processing and lazy loading
- Type Safety: Added type hints and improved documentation
- Logging System: Comprehensive logging for debugging and monitoring
- Sample Data: Users can view and download sample CSV format
- Upload Help: Comprehensive guidance for file preparation
- Data Validation: Smart validation with helpful error messages
- Processing Summary: Detailed feedback on data processing results
- Troubleshooting: Step-by-step problem resolution guides
- Overview
- Features
- Technical Stack
- Installation
- Usage
- Data Requirements
- Project Structure
- Feature Details
- Customization
- Troubleshooting
- Contributing
- Contact
The Finance Analytics Dashboard is a powerful, user-friendly web application built with Streamlit that empowers users to gain deep insights into their financial data. By leveraging advanced data visualization techniques and machine learning algorithms, this dashboard provides a comprehensive view of personal or business finances, enabling better financial decision-making.
- Data Upload: Easy CSV file upload functionality for financial data
- Interactive Data Filtering: Advanced filtering with date ranges, categories, amounts, and search
- Cash Flow Analysis: Visualize monthly cash inflows and outflows with trend analysis
- Budget Tracking: Set, track, and monitor budgets for different expense categories
- Spending Pattern Analysis: Identify trends and patterns in spending behaviors
- Anomaly Detection: Machine learning-based detection of unusual transactions
- Predictive Analytics: Forecast future spending using linear regression models
- Data Export: Export filtered data in CSV, Excel, or JSON formats with custom formatting
- Smart Transaction Categorization: AI-powered categorization using multiple NLP techniques
- Sentiment Analysis: Analyze the emotional context of transaction descriptions
- Natural Language Search: Search transactions using plain English queries
- Word Cloud Visualization: Visual representation of most common transaction terms
- Financial Insights Extraction: Automatically detect merchants, locations, and financial terms
- Topic Modeling: Discover spending themes and patterns using advanced algorithms
- Semantic Similarity: Find similar transactions using sentence embeddings
- Personalized User Settings: Save preferences for budgets, chart types, and dashboard widgets
- Customizable Dashboard: Select and arrange widgets based on individual preferences
- Quick Actions: Fast access to data refresh, insights generation, and trend analysis
- Advanced Search Options: Multiple search modes including keywords, smart search, and regex
- Responsive Design: Optimized interface that works on different screen sizes
- Error Handling: Graceful fallback when advanced features are unavailable
- Fallback Mechanisms: Application works even when advanced NLP libraries are unavailable
- Runtime Dependency Testing: Automatically tests and adapts to available libraries
- Modular Architecture: Clean separation of concerns across different modules
- Comprehensive Error Handling: User-friendly error messages and recovery options
- Python 3.8+: Core programming language
- Streamlit: Modern web application framework
- Pandas: Advanced data manipulation and analysis
- NumPy: Numerical computing foundation
- Scikit-learn: Machine learning algorithms and preprocessing
- Matplotlib: Static plotting and charts
- Plotly: Interactive and dynamic visualizations
- Seaborn: Statistical data visualization
- WordCloud: Text visualization for transaction analysis
- TextBlob: Text processing and sentiment analysis (baseline)
- SpaCy: Advanced natural language processing (optional)
- Transformers: State-of-the-art NLP models (optional)
- Sentence Transformers: Semantic similarity and embeddings (optional)
- Gensim: Topic modeling and document similarity (optional)
- NLTK: Natural language toolkit (optional)
- Dateutil: Advanced date parsing and manipulation
- JSON: Data serialization for user preferences
- Base64: File encoding for export functionality
For basic functionality without advanced NLP features:
# Clone the repository
git clone https://github.com/yourusername/finviz-dashboard.git
cd finviz-dashboard
# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# Install minimal requirements
pip install -r requirements_minimal.txt
# Run the application
streamlit run main.py
For complete functionality including advanced NLP:
# Install all requirements
pip install -r requirements.txt
# Download SpaCy language model
python -m spacy download en_core_web_sm
# Run the application
streamlit run main.py
docker build -t finviz-dashboard .
docker run -p 8501:8501 finviz-dashboard
-
Start the Streamlit server : streamlit run main.py
-
Open your web browser and navigate to
http://localhost:8501
. -
Use the sidebar to upload your CSV file and configure dashboard settings.
-
Explore different visualizations and insights provided by the dashboard.
Your CSV file should contain the following columns:
Date
: Transaction date (format: YYYY-MM-DD)Description
: Transaction descriptionDeposits
: Amount deposited (positive float)Withdrawals
: Amount withdrawn (positive float)Balance
: Account balance after transaction (float)
Example: Date,Description,Deposits,Withdrawals,Balance 2023-01-01,Salary,5000.00,0.00,5000.00 2023-01-02,Grocery Store,0.00,150.25,4849.75
main.py
: Main Streamlit application with integrated user interface and navigationuserinput.py
: Comprehensive user input handling and preference management systemnlp_engine.py
: Advanced NLP processing engine with fallback mechanismsnlp_visualizations.py
: Interactive NLP analysis dashboard with multiple visualization tabs
data_processing.py
: Data preparation, cleaning, and exploratory data analysisutils.py
: Enhanced utility functions with NLP integrationmodel.py
: Machine learning models for anomaly detection and predictionsvisualization.py
: Core visualization functions for charts and graphs
requirements.txt
: Complete list of Python dependencies (full installation)requirements_minimal.txt
: Minimal dependencies for basic functionalityREADME.md
: Comprehensive project documentationsample.csv
: Example financial data for testinguser_preferences.json
: Auto-generated user settings file
- Streamlit UI orchestration
- File upload and data processing pipeline
- Widget selection and dashboard customization
- Integrated NLP and traditional analytics
- Export functionality with multiple format support
- Multi-library NLP support with graceful fallbacks
- Advanced transaction categorization
- Sentiment analysis with confidence scoring
- Natural language search capabilities
- Financial insight extraction
- Topic modeling and clustering
- Interactive sentiment analysis charts
- Smart categorization visualizations
- Word cloud generation
- Financial insights and pattern discovery
- Anomaly detection visualization
- Persistent user preference storage
- Advanced filtering interface
- Customizable dashboard widgets
- Export configuration options
- Quick action buttons
Visualizes net cash flow (deposits minus withdrawals) on a monthly basis, helping users understand their overall financial health over time.
Allows users to set budget limits for different expense categories and visualizes actual spending against these limits, highlighting areas where spending exceeds the budget.
Utilizes the Isolation Forest algorithm to identify unusual transactions based on amount and frequency, helping users spot potential fraudulent activities or unexpected expenses.
Implements a simple linear regression model to forecast future spending based on historical patterns, aiding in financial planning.
Users can customize various aspects of the dashboard:
- Chart types (Line, Bar, Histogram)
- Date range for analysis
- Transaction categories to include/exclude
- Minimum and maximum transaction amounts to consider
If you encounter TensorFlow-related errors when starting the application:
# Use minimal requirements to avoid TensorFlow dependencies
pip install -r requirements_minimal.txt
streamlit run main.py
The application will automatically fall back to basic NLP features using TextBlob.
# Install SpaCy language model
python -m spacy download en_core_web_sm
# Install specific missing packages
pip install textblob nltk wordcloud
- Format Issues: Ensure your CSV has columns: Date, Description, Deposits, Withdrawls, Balance
- Date Format: Use YYYY-MM-DD format or common date formats (MM/DD/YYYY, DD/MM/YYYY)
- Encoding Issues: Save your CSV in UTF-8 encoding
- Special Characters: Remove or escape special characters in descriptions
- Large Datasets: Use date range filters to process smaller chunks
- Memory Issues: Disable NLP features for very large datasets (>100k transactions)
- Slow Loading: Start with minimal requirements and enable NLP features gradually
- Check Dependencies: Verify advanced NLP libraries are installed
- Fallback Mode: Application will use basic text processing if advanced libraries unavailable
- Error Messages: Check the console for specific library loading errors
The application includes intelligent fallback mechanisms:
- Advanced NLP β TextBlob: When transformers/spacy unavailable
- Semantic Search β Keyword Search: When sentence transformers unavailable
- Topic Modeling β Basic Categorization: When gensim unavailable
- Word Clouds β Text Analysis: When wordcloud library unavailable
- Check write permissions in the application directory
- Ensure
user_preferences.json
can be created/modified - Restart the application if preferences appear corrupted
streamlit run main.py --logger.level debug
The application displays which NLP libraries are available in the console output when starting.
- Restart the application - Fixes most temporary issues
- Clear browser cache - Resolves Streamlit display issues
- Update dependencies -
pip install -r requirements.txt --upgrade
- Use minimal setup - Start with
requirements_minimal.txt
and add features gradually
Contributions to the Finance Analytics Dashboard are welcome! Please follow these steps:
- Fork the repository
- Create a new branch (
git checkout -b feature-branch
) - Make your changes and commit (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin feature-branch
) - Create a new Pull Request
For any queries or suggestions, please open an issue on the GitHub repository.