A SQLite portfolio project analysing 12,000 synthetic financial transactions across products, markets, acquisition channels, and customer segments.
- How are fee revenue and contribution changing over time?
- Which markets contribute the most?
- Where are failed transactions concentrated?
- Which customer groups generate the most contribution?
- Which acquisition channels produce the highest contribution per customer?
- Relational schema design
- SQL joins-ready structure
- Common table expressions
- Subqueries
- Aggregations
CASE WHENLAGNTILE- Window functions
- Customer segmentation
- Operational and financial KPI analysis
- Python and SQLite integration
- 12,000 synthetic transactions
- 2,750 possible customers
- 5 markets
- 5 products
- 5 acquisition channels
- Completed and failed transaction outcomes
- Total fee revenue: GBP 13,192
- Total contribution: GBP 8,096
- Overall failed-transaction rate: 3.5%
- Highest-contribution market: UK
- Highest observed market-product failure rate: Spain / Transfers (6.2%)
data/ CSV dataset and ready-to-query SQLite database
sql/ Schema and documented analysis queries
src/ Python runner
outputs/ Query results, charts, and executive PDF
pip install -r requirements.txt
python src/run_analysis.pyYou can also open data/financial_operations.db with DB Browser for SQLite and run the queries in sql/analysis.sql.
All data is synthetic. No real customer, transaction, employer, or financial information is included.
Vansh Agrawal
MSc FinTech and Policy, University of Surrey
LinkedIn: https://www.linkedin.com/in/vanshagrawall

