Analysed 5.4 million ride records in Google BigQuery (cloud data warehouse) using analytical SQL to identify behavioural differences between casual riders and annual members.
Designed operational marketing interventions and a measurable validation plan to increase membership conversion and revenue stability.
Live project: https://m77rahman.github.io/Cyclistic-Case-Study/
Full report: report/cyclistic_case_study.pdf
Cyclistic’s profitability depends on annual members, but a large portion of usage comes from casual riders.
The objective is to understand behavioural differences and determine practical actions that convert casual riders into members.
The dataset was analysed entirely in Google BigQuery, allowing efficient querying of a multi-million-row dataset without local processing.
All aggregation was performed in the warehouse before exporting results for visualisation.
To minimise scan cost and improve performance:
| Behaviour | Members | Casual Riders |
|---|---|---|
| Time of day | Commute peaks (08:00 & 17:00) | Afternoon usage |
| Seasonality | Stable year-round | Summer dependent |
| Week pattern | Weekday dominant | Weekend heavy |
| Purpose | Transportation | Leisure |



Cyclistic serves two behavioural segments:
Members
Casual riders
Therefore the opportunity is not attracting new users but converting existing engaged users into repeat customers.
Trigger: after a casual rider completes their 2nd ride
Channel: mobile push notification
Timing: May–August, 10:00–16:00
Channel: in-app banner + station display
Timing: 07:30–09:30 and 16:30–18:30
Trigger: 3 weekend rides within 30 days
Offer: discounted first-month membership
Casual riders completed ~1.9M rides annually.
If 5% convert to membership: ~95,000 new members → increased recurring revenue and reduced seasonal volatility.
Primary KPI
Supporting KPIs
Campaigns should be evaluated using controlled experiments:
Success is defined as sustained conversion and increased weekday usage after intervention.
The dataset captures behaviour but not context:
Recommendations therefore require experimental validation before full rollout.
Dataset: 12 months Divvy trip data
Tables created:
Cleaning rules:
SQL workflow: