Rabbit
Financial Data Processing & Reporting System
Executive Summary
A web-based financial data processing system developed for an accounting practice to reduce manual transaction processing and improve reporting efficiency. The system extracts transaction data from bank statements, converts unstructured financial records into a structured database, and provides reporting and filtering capabilities that support accounting and financial analysis workflows. The solution was designed to address the time-consuming and error-prone process of manually capturing transaction data from bank statements.
Business Problem
Business Challenge
Accountants received bank statements in PDF format.
Staff had to:
-
1. Open statements
2. Read transactions manually
3. Capture information into spreadsheets
4. Categorize transactions
5. Prepare reports
Challenges:
- Time-consuming
- Repetitive
- Human error risk
- Difficult to scale
Requirements Analysis
Stakeholder Requirements
The accounting firm required:
- Secure document uploads
- Automated transaction extraction
- Transaction categorization
- Search and filtering capabilities
- Reporting functionality
- User-specific access controls
System Workflow
- Source: Kaggle loan default dataset.
- Size: 32,581 rows, 12 columns.
- Features: person_age, person_income, person_home_ownership, person_emp_length, loan_intent, loan_grade, loan_amnt, loan_int_rate, loan_status, loan_percent_income, cb_person_default_on_file, cb_preson_cred_hist_length.
- Key columns: Include person_age, person_income, loan_amnt, loan_int_rate, loan_intent, and the target: loan_status.
Technical Implementation
Technologies Used
- Django
- PostgreSQL
- Python
- Bootstrap
- Authentication & Authorization
Key Components
- Django
- PostgreSQL
- Python
- PDF upload
- Data extraction
- Auto Categorization
- Validation
- Filtering
- Transaction views
- Report generation
Security & Compliance
Security Considerations
- User authentication
- User-specific data access
- Secure document handling
- POPIA-conscious development approach
Challenges & Solutions.
Challenge: Bank Statement Variations
Different banks generate statements using different formats.
Solution
Implemented pattern recognition using regular expressions to support extraction from targeted statement formats.
Challenge: Limited Training Data
Client data could not be used during development.
Solution
Created a development dataset using personal statements while maintaining confidentiality.
Challenge: Categorizing unseen data
Unseen data could not be categorized
Solution
Unknow transactions set to general transactions and allow users to manually categorize same descriptions in bulk.
Results & Impact
Outcomes
- Reduced manual transaction capture effort
- Improved accessibility of financial records
- Enabled faster transaction search and retrieval
- Created a foundation for future automated categorisation
- Improved consistency of financial reporting workflows
Future Roadmap
Planned Enhancements
- Support for multiple bank formats
- Automated categorisation models
- Financial dashboards
- SaaS deployment