This project is a multi-stage Data Engineering and Analytics Pipeline designed to analyze customer satisfaction and pain points for three major Ethiopian mobile banking applications: Commercial Bank of Ethiopia (CBE), Bank of Abyssinia (BOA), and Dashen Bank.
The pipeline executes the full data lifecycle: scraping, NLP-based analysis, data warehousing in PostgreSQL, visualization, and final reporting.
- Source Data: Google Play Store user reviews (1,200+ total reviews).
- Core Deliverables: Cleaned dataset, Sentiment Scores, Thematic Analysis, PostgreSQL Data Warehouse, and Actionable Recommendations Report.
- Python 3.8+
- PostgreSQL installed and running locally.
- The
bank_reviewsdatabase must be created in PostgreSQL before running Task 3.
Create and activate a Python virtual environment (venv).
pip install -r requirements.txt
# Ensure NLTK resources are downloaded (run this in Python interpreter once):
# import nltk
# nltk.download('stopwords')
# nltk.download('punkt')fintech-app-reviews/
├── .gitignore
├── README.md
├── requirements.txt
├── task_1_data_collection/
│ └── scrape_reviews.py # Task 1: Scrapes and cleans raw data.
├── task_2_analysis/
│ └── nlp_analysis.py # Task 2: Executes Sentiment and Thematic Analysis.
├── task_3_database/
│ ├── database_schema.sql # Task 3: SQL to define Banks and Reviews tables.
│ └── insert_data.py # Task 3: Python script for PostgreSQL ETL.
├── task_4_reporting/
│ └── visualization.py # Task 4: Connects to DB, generates charts (Matplotlib/Seaborn).
│ └── final_report.md # Task 4: Comprehensive report with insights and recommendations.
└── data/
├── fintech_reviews_*.csv # Output of Task 1 (Raw/Cleaned)
└── analyzed_reviews_*.csv # Output of Task 2 (With Sentiment and Themes)Task 2: Sentiment and Thematic Analysis Sentiment Model: distilbert-base-uncased-finetuned-sst-2-english (Hugging Face Transformers).
Thematic Clustering: Rule-based keyword matching (e.g., 'crash', 'login', 'slow transfer') clustered into 5 themes: Account Access/Security, Transaction Performance, User Interface/UX, Bugs/Reliability, and Customer Support.
Task 3: Data Persistence (PostgreSQL) Schema: Two tables: Banks (stores bank names and IDs) and Reviews (stores all scraped data, sentiment scores, and themes, linked by bank_id FOREIGN KEY).
Task 4: Insights and Visualization Visualizations are used to clearly communicate:
Sentiment Distribution by Bank: Percentage breakdown of Positive, Negative, and Neutral reviews.
Rating Distribution: Bar chart showing the frequency of 1-star through 5-star ratings per bank.
Top Thematic Pain Points: Count of reviews mentioning the top 5 themes per bank.