A powerful tool to analyze your Commercial Bank of Ethiopia (CBE) transactions by parsing SMS messages and transaction PDFs. This tool provides detailed visualizations and insights into your banking activities.
- 📊 Comprehensive transaction analysis
- 📱 SMS message parsing for both incoming and outgoing transactions
- 📄 Automatic PDF receipt parsing
- 💰 Category-based spending analysis
- 📈 Interactive visualizations including:
- Monthly income/expense trends
- Category distribution pie charts
- Top receivers/senders analysis
- Detailed transaction tables
- Python 3.8+
- httpx
- pypdf
- sqlite3
- pandas
- matplotlib
- seaborn
- Node.js 18+
- pnpm
- Ethiopian IP Address Required: The PDF parsing functionality only works when running from an Ethiopian IP address due to CBE's regional restrictions
- SMS Backup: You need to export your CBE SMS messages using SMS Backup & Restore
-
Export SMS Messages
# Use SMS Backup & Restore app to export messages # Rename the exported file to sms-file.json
-
Install Python Dependencies
pip install httpx pypdf # pandas matplotlib seaborn -
Run Transaction Parser
# Place sms-file.json in the same directory as main.py python main.py -
Install Node.js Dependencies
pnpm install
-
Start the Development Server
pnpm run dev
├── app/
│ ├── actions/
│ ├── transactions.ts
│ │── categories.ts
│ ├── components/
│ │ ├── Dashboard.tsx
│ │ ├── MonthlyTransactions.tsx
│ │ └── CategoryPieChart.tsx
│ └── page.tsx
├── lib/
│ └── db.ts
├── main.py
└── category.json
- The default analysis starts from October 2024. To modify this, update the date check in
process_messagesfunction (line 140 in main.py) - Category mappings can be customized in
category.json
-
After starting the development server, navigate to:
http://localhost:3000for the main dashboard
-
Use the interactive filters and controls to:
- Search transactions
- Filter by transaction type
- Sort by different fields
- View different time periods
- Analyze category distributions
The project is designed to be easily extendable:
-
Add new visualizations:
- Create new React components in
app/components - Add new server actions in
app/actions - Update the database queries in
lib/db.ts
- Create new React components in
-
Modify transaction processing:
- Update the SMS parsing patterns in
main.py - Add new data extraction logic
- Modify the database schema
- Update the SMS parsing patterns in
- PDF parsing only works with Ethiopian IP addresses
- Currently optimized for CBE transaction messages
- Processes transactions from October 2024 onwards by default
- Requires manual SMS export using SMS Backup & Restore app
Feel free to submit issues and enhancement requests!
This project is licensed under the MIT License - see the LICENSE file for details.
- Thanks to CBE for providing transaction details via SMS
- SMS Backup & Restore app for easy SMS export functionality
- All the amazing open-source libraries that made this possible
💡 Tip: For better insights, maintain consistent categorization of your transactions in the category.json file.
For any questions or support, please open an issue on GitHub.



