InsightGPT is an AI-powered CSV analysis web application that turns raw tabular data into clear, human-readable insights. It combines deterministic data analysis using Pandas with natural-language interpretation generated by Google Gemini, presenting both statistical outputs and AI-generated narratives through a clean Flask-based web interface.
This project demonstrates how traditional data analytics and modern large language models can be composed responsibly in a backend system.
- Upload arbitrary CSV datasets via a web UI
- Automatic schema detection and data profiling
- Summary statistics, missing-value analysis, and correlation matrices powered by Pandas
- AI-generated natural-language insights grounded in computed statistics (Google Gemini)
- Designed to work with flexible CSV schemas (no manual feature engineering)
- Secure API key handling using environment variables (
.env)
- Backend: Python, Flask
- Data Analysis: Pandas, NumPy
- AI / LLM: Google Gemini API
- Frontend: HTML, CSS (Jinja2 templates)
- Configuration: python-dotenv
- Runtime: Local development (Flask dev server)
InsightGPT/
├── run.py # Application entry point
├── config.py # Global configuration (paths, settings)
├── requirements.txt # Python dependencies
├── README.md # Project documentation
├── .gitignore # Ignored files
├── app/
│ ├── __init__.py # Flask app factory
│ ├── routes.py # Web routes and request handlers
│ ├── extensions.py # App extensions (future-ready)
│ ├── models.py # Data models (placeholder for expansion)
│ ├── services/
│ │ ├── file_service.py # File upload and filesystem handling
│ │ ├── pandas_service.py # Deterministic data analysis logic
│ │ └── gemini_service.py # AI insight generation via Gemini
│ ├── templates/
│ │ ├── index.html # Upload + dataset listing page
│ │ └── dataset_detail.html # Analysis and AI insight view
│ └── static/ # Frontend static assets
└── instance/
└── uploads/ # Uploaded CSV files (runtime data)