GoodCabs Data Analysis and Dashboard by Amit ChejaraGoodCabs Data Analysis and Dashboard by Amit Chejara

GoodCabs Data Analysis and Dashboard

Amit Chejara

Amit Chejara

Data-Driven Success: Enhancing GoodCabs Operations with Insights and Innovation

In today’s competitive ride-hailing market, data is not just an asset — it’s a driving force for strategic decision-making. This is particularly true for GoodCabs, a cab service company committed to empowering local drivers and delivering exceptional customer experiences. With support from data provided by Code Basics, I embarked on a comprehensive analysis and visualization project, transforming raw data into actionable insights.

Project Overview

This project aimed to analyze GoodCabs operational and customer data to identify patterns and opportunities that enhance efficiency, customer satisfaction, and revenue. The analysis leveraged advanced tools like Power BI and SQL to create an interactive dashboard that highlights key metrics and trends, providing stakeholders with a clear path forward.
The project was guided by several business questions, focusing on optimizing trip patterns, understanding passenger behavior, and aligning strategies with revenue goals. Additionally, ad-hoc business requests were addressed using SQL queries, further enriching the insights.

Key Metrics and Findings

1. Trip Analysis

Business-focused cities, such as Surat and Vadodara, see peak demand from March to May, driven by corporate activities. These cities experience higher weekday trip volumes, with a notable increase in repeat trips. Tourism-focused cities like Jaipur and Chandigarh thrive in February, aligning with festivals and cooler weather. Weekends dominate trip volumes in these regions, underscoring the leisure-driven nature of the demand.
Key Metrics:
Total annual trips: 426K
Peak demand months by city: Business (March-May), Tourism (February)
Total Distance: 8M Km
Average trip distance: 19.13 Km

2. Passenger Behavior

Passenger behavior varies significantly between business and tourism cities. In Vadodara, 19% of repeat trips come from six-trip passengers, demonstrating strong customer loyalty. Conversely, tourism cities report a 50% repeat rate for two-trip passengers, reflecting short-term engagement linked to tourist activities.
Key Metrics:
Repeat passenger rate: 25.73%
New passenger rate: 74.27%
Avg passenger rating: 7.66
Total passengers: 238K
Total new passengers: 177K
Total repeat passengers: 61K

3. Revenue Insights

Revenue trends show that business-focused cities achieve peak performance during weekdays, while weekends dominate in tourism hubs. Dynamic pricing strategies during high-demand periods resulted in an 18% increase in revenue.
Key Metrics:
Total revenue: 108M
Average trip cost: 254.02

4. Driver Performance

Driver ratings in tourism cities are higher compared to business hubs, reflecting better service quality in leisure-driven markets.
Key Metrics:
Average driver rating: 7.83

Business Requests

The project also addressed several ad-hoc business requests using SQL queries, delivering targeted insights:
Request 1: Identify top and bottom cities by total trips monthly.
Solution: A SQL query aggregated trip counts by city and month, sorting results to highlight top and bottom performers.
Request 2: Find peak and low-demand months by city.
Solution: SQL was used to group data by city and month, revealing seasonal demand patterns.
Request 3: Determine the highest revenue month for each city.
Solution: SQL identified monthly revenue peaks by grouping city and month, followed by a max aggregation for each city.
Request 4: Analyze passenger types and categorize cities.
Solution: SQL was used to calculate percentages of new and repeat passengers by city, categorizing cities into “top” and “bottom” based on performance.
Request 5: Evaluate monthly performance against targets.
Solution: SQL joined trip data with monthly targets to calculate variances and identify overperforming and underperforming cities.
These targeted analyses provided quick, data-backed answers to specific business questions, demonstrating the versatility of SQL in complementing visualization tools.
-- Business Request - I: City-Level Fare and Trip Summary Report
USE trips_db;

SELECT city_name, COUNT(trip_id) AS total_trips, AVG(fare_amount/distance_travelled_km) AS avg_fair_per_km,
AVG(fare_amount) AS avg_fair_amount, (COUNT(trip_id)*100/(SELECT COUNT(trip_id) FROM fact_trips)) AS percent_contribution
FROM
dim_city JOIN fact_trips ON dim_city.city_id = fact_trips.city_id
GROUP BY city_name;

-- Business Request - 2: Monthly City-Level Trips Target Performance Report
USE targets_db;

SELECT dc.city_name AS city_name, MONTHNAME(ft.`date`) AS month_name, COUNT(ft.trip_id) AS actual_trips,
AVG(mtt.total_target_trips) AS target_trips,
CASE
WHEN COUNT(ft.trip_id)>AVG(mtt.total_target_trips) THEN "Above Target"
ELSE "Below Target"
END AS performance_status,
ABS((COUNT(ft.trip_id) - AVG(mtt.total_target_trips))*100/AVG(mtt.total_target_trips)) AS `%_difference`
FROM
trips_db.fact_trips ft LEFT JOIN targets_db.monthly_target_trips mtt
ON ft.city_id = mtt.city_id AND MONTHNAME(ft.`date`) = MONTHNAME(mtt.`month`)
LEFT JOIN trips_db.dim_city dc
ON mtt.city_id = dc.city_id
GROUP BY
city_name, month_name, MONTH(ft.`date`)
ORDER BY
city_name, MONTH(ft.`date`);

-- Business Request - 3: City-Level Repeat Passenger Trip Frequency Report

USE trips_db;

SELECT city_name, (SUM(CASE WHEN trip_count = "2-Trips" THEN repeat_passenger_count ELSE 0 END)*100/ SUM(repeat_passenger_count)) AS `2-Trip`,
(SUM(CASE WHEN trip_count = "3-Trips" THEN repeat_passenger_count ELSE 0 END)*100/ SUM(repeat_passenger_count)) AS `3-Trip`,
(SUM(CASE WHEN trip_count = "4-Trips" THEN repeat_passenger_count ELSE 0 END)*100/ SUM(repeat_passenger_count)) AS `4-Trip`,
(SUM(CASE WHEN trip_count = "5-Trips" THEN repeat_passenger_count ELSE 0 END)*100/ SUM(repeat_passenger_count)) AS `5-Trip`,
(SUM(CASE WHEN trip_count = "6-Trips" THEN repeat_passenger_count ELSE 0 END)*100/ SUM(repeat_passenger_count)) AS `6-Trip`,
(SUM(CASE WHEN trip_count = "7-Trips" THEN repeat_passenger_count ELSE 0 END)*100/ SUM(repeat_passenger_count)) AS `7-Trip`,
(SUM(CASE WHEN trip_count = "8-Trips" THEN repeat_passenger_count ELSE 0 END)*100/ SUM(repeat_passenger_count)) AS `8-Trip`,
(SUM(CASE WHEN trip_count = "9-Trips" THEN repeat_passenger_count ELSE 0 END)*100/ SUM(repeat_passenger_count)) AS `9-Trip`,
(SUM(CASE WHEN trip_count = "10-Trips" THEN repeat_passenger_count ELSE 0 END)*100/ SUM(repeat_passenger_count)) AS `10-Trip`
FROM
`dim_repeat_trip_distribution` LEFT JOIN `dim_city`
ON `dim_repeat_trip_distribution`.city_id = `dim_city`.city_id
GROUP BY city_name;

-- Business Request -4: Identify Cities with Highest and Lowest Total New Passengers

USE trips_db;

SELECT city_name, SUM(new_passengers) AS total_new_passengers,
(CASE
WHEN SUM(new_passengers)>=(SELECT SUM(new_passengers) AS np FROM `fact_passenger_summary` GROUP BY city_id ORDER BY np DESC LIMIT 1 OFFSET 2)
THEN "Top-3"
WHEN SUM(new_passengers)<=(SELECT SUM(new_passengers) AS np FROM `fact_passenger_summary` GROUP BY city_id ORDER BY np ASC LIMIT 1 OFFSET 2)
THEN "Bottom-3"
ELSE "None"
END) AS city_category
FROM `fact_passenger_summary` LEFT JOIN `dim_city`
ON `fact_passenger_summary`.city_id = `dim_city`.city_id
GROUP BY city_name;

-- Business Request - 5: Identify Month with Highest Revenue for Each City
USE trips_db;
SELECT derived.city_name AS city_name,
derived.`month` AS highest_revenue_month,
derived.revenue AS max_revenue
FROM (
SELECT dc.city_name,
MONTHNAME(ft.`date`) AS `month`,
SUM(ft.fare_amount) AS revenue
FROM fact_trips ft
LEFT JOIN dim_city dc
ON ft.city_id = dc.city_id
GROUP BY dc.city_name, `month`
) derived
JOIN (
SELECT city_id, MAX(revenue) AS max_revenue
FROM (
SELECT city_id,
MONTHNAME(`date`) AS `month`,
SUM(fare_amount) AS revenue
FROM fact_trips
GROUP BY city_id, `month`
) aggregated
GROUP BY city_id
) max_derived
ON derived.revenue = max_derived.max_revenue
AND derived.city_name = (SELECT city_name FROM dim_city WHERE dim_city.city_id = max_derived.city_id);

-- Business Request - 6: Repeat Passenger Rate Analysis
USE trips_db;

SELECT
`dim_city`.`city_name` AS `city_name`, MONTHNAME(`fact_passenger_summary`.`month`) AS `month`,
SUM(`fact_passenger_summary`.total_passengers) AS `total_passengers`,
SUM(`fact_passenger_summary`.repeat_passengers) AS `repeat_passengers`,
(SUM(`fact_passenger_summary`.repeat_passengers)*100/SUM(`fact_passenger_summary`.total_passengers)) AS `monthly_repeat_passenger_rate_(%)`,
AVG(`temp`.`city_repeat_passengers_rate_(%)`*100) AS `city_repeat_passengers_rate_(%)`
FROM
`fact_passenger_summary`
LEFT JOIN
(SELECT city_id, (SUM(repeat_passengers)/SUM(total_passengers)) AS `city_repeat_passengers_rate_(%)`
FROM `fact_passenger_summary`
GROUP BY city_id) temp
ON `fact_passenger_summary`.city_id = `temp`.city_id
LEFT JOIN
`dim_city`
ON `fact_passenger_summary`.`city_id` = `dim_city`.`city_id`
GROUP By `month`,`city_name`
ORDER BY `city_name`, MONTH(`fact_passenger_summary`.`month`);

Strategic Recommendations

To address these findings, we proposed several targeted strategies:
Strategic Pricing Adjustments: Implement slight price hikes in business hubs to leverage repeat-trip loyalty and introduce discounts during peak tourism months to attract new customers.
Targeted Partnerships: Collaborate with hotels and restaurants in tourism-heavy cities and form corporate partnerships in business hubs to enhance both customer experience and demand.
Driver Training and Incentives: Focus on improving service quality in business hubs through training programs and incentivize high-performing drivers in tourism cities.
EV Transition: Leverage Gujarat’s EV policies to integrate electric vehicles into GoodCabs’ fleet and deploy charging stations near high-demand zones.

Interactive Dashboard and Future Outlook

The interactive dashboard, developed in Power BI, serves as a central tool for visualizing these insights. Stakeholders can explore trends dynamically, such as seasonal demand shifts, revenue patterns, and passenger behaviors.
Looking ahead, GoodCabs can enhance its data collection to include real-time feedback and AI-driven demand forecasts. These measures will enable the company to adapt quickly to market changes and improve operational efficiency. Moreover, tapping into eco-tourism and corporate sustainability trends will open new growth opportunities, ensuring that GoodCabs remains a competitive and innovative leader in the mobility sector.

Acknowledgment

This project was made possible through the rich dataset provided by Code Basics. Their commitment to fostering data literacy and real-world problem-solving has been instrumental in shaping this analysis.

Contact

For questions or suggestions, reach out to:
[Amit Subhash Chejara]: [amitsubhashchejara@gmail.com]
Like this project

Posted Jan 6, 2025

Delivered actionable insights to GoodCabs, including strategies tied to an 18% revenue surge and EV adoption plans, showcased through an interactive dashboard.

Likes

0

Views

3

Clients

Codebasics