FinSight — Personal Finance Tracker with Automated Categorisation and Forecasting
FinSight is a deployed Django web application for recording income and expenses, organising transactions, monitoring monthly budgets, and exploring spending patterns through interactive visualisations.
It combines personalised rule-based transaction categorisation with a statistical spending forecast, showing how backend development and data analysis can work together in a practical product.
The application is hosted on Render and may take several seconds to wake after a period of inactivity.
Business problem
Manually categorising transactions and comparing expenses against multiple budgets can become repetitive. FinSight provides one place to:
Record and organise financial transactions
Automatically suggest categories from transaction descriptions
Create personal categorisation rules
Track spending against category budgets
Visualise where money is being spent
Export transaction records for further analysis
Estimate upcoming spending from historical activity
✨ Key Features
Secure user registration, login, logout, and session management
Create, view, update, and delete income and expense transactions
Default keyword-based category suggestions
Personal smart rules that map the user's own keywords to categories
Monthly category budgets and progress indicators
Category-level spending visualisation using Chart.js
CSV export for Excel, Google Sheets, or other analysis tools
Thirty-day spending forecast
Responsive interface for desktop and mobile screens
PostgreSQL-backed deployment on Render
How automated categorisation works
FinSight uses an explainable rule-based categoriser rather than claiming that keyword matching is a machine-learning model.
The categoriser checks:
The user's personalised keyword rules
A fallback dictionary of common transaction descriptions
The user's available categories
For example, a user can map dps fee to Education, and later transactions containing that phrase can receive the corresponding category suggestion.
Forecasting approach
Expense transactions are aggregated into a daily time series with pandas. When at least 30 days of data are available, the application fits a SARIMA model with weekly seasonality and estimates total spending for the next 30 days.
When the history is shorter, the application uses an average-daily-spending projection. The forecast is an experimental planning aid and should not be treated as financial advice or a guaranteed prediction
🛠️ Technology Stack
This project was built using a robust and scalable tech stack:
Backend: Python, Django, Gunicorn
Frontend: HTML5, CSS3, JavaScript (ES6)
Database: PostgreSQL
Data processing: Pandas
Forecasting: statsmodels, SARIMA
Visualization: Chart.js
Deployment: Render, Whitenoise
Project structure
🚀 Local Setup and Installation
To run this project on your local machine, follow these steps:
Set Up Environment Variables: Create a file named .env in the project root directory. This file will hold your secret key. Do not commit this file to Git.