SQL project analyzing churn behavior in a subscription-based fintech app
This project analyzes churn behavior using SQL across a simulated fintech user lifecycle dataset. This project reflects the patterns and logic I’ve encountered in real-world churn and retention work.
Your team has been asked to investigate potential user churn risks in a subscription-based finance platform. The product team suspects that support ticket trends, failed payments, and early inactivity may be predictive of churn.
Note: This dataset was synthetically generated to simulate churn patterns in a fintech app, modeled to mirror typical user lifecycles.
Tables used:
users: user_id, signup_date, country, plan_type, agetransactions: payment activity and success/failure flagslogins: login frequency over timesupport_tickets: complaints, refund requests, or downgrade issues
- Define churn behavior
- Example: no login for 30+ days, refund + downgrade, or repeated payment failures
- Identify churn risk signals
- Early login drop-off
- Support escalation
- Failed payment patterns
- Surface insights for the product team
- What patterns precede churn?
- Are there demographic or regional risk concentrations?
For this analysis, a user is considered churned if they meet one or more of the following:
- Have not logged in for 30+ days since their last recorded activity
- AND have fewer than 3 successful transactions
- OR have submitted a support ticket for a 'Refund Request' or 'Downgrade Dispute'
- MySQL + SQL Workbench
- GitHub for version control
- Manual data exploration via SQL queries
- Dataset generated and cleaned using Python (Faker, Pandas)
/churn-prediction-sql ├── README.md ← this file ├── data/ │ ├── data_users.csv │ ├── data_transactions.csv │ ├── data_logins.csv │ └── data_support_tickets.csv ├── sql/ │ └── churn_queries.sql ← main analysis queries ├── insights.md ← summary of findings
I welcome feedback from data leaders and hiring managers — connect with me on via LinkedIn or reach out directly.