Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added Ironhack ppt_28.05.pptx
Binary file not shown.
Binary file added Plots/average_ratings_comparison.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/avg_rating_byyear.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/badges_awarded.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/badges_vs_rating.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/comment_rating_distribution.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/comments_per_school.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/courses_offered.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/courses_vs_rating.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/geographic_presence.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/location_counts.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/price_comparison.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/price_per_rating.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/price_range_analysis.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/price_vs_rating.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Plots/sentiment_analysis.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Project.docx
Binary file not shown.
158 changes: 92 additions & 66 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,101 +1,127 @@
<img src="https://bit.ly/2VnXWr2" alt="Ironhack Logo" width="100"/>

# Project: Competitive Landscape
# Comprehensive Analysis of Ironhack's Market Position Using SwitchUp Data

## Content
## Overview

- [Project Overview](#project-overview)
- [Getting Started](#getting-started)
- [Project Deliverables](#deliverables)
This project aims to evaluate Ironhack's position in the market by identifying its strengths and weaknesses compared to competitors based on data scraped from SwitchUp.com. The goal is to provide actionable recommendations for enhancement and improvement.

<a name="project-overview"></a>
## Objectives

## Project Overview
- To analyze Ironhack's market position.
- To identify strengths and weaknesses relative to competitors.
- To provide actionable recommendations for improvement.

You were hired by Ironhack to perform an analytics consulting project to understand Ironhack's competitive landscape: which other coding schools are there and what drives their success or lack thereof relative to Ironhack.
## Data Overview

Your mission is to design, create and populate an appropriate database with information about coding schools that are our competition, as well as design suitable queries that answer business questions of interest (to be defined by you).
The analysis is based on the following datasets:
1. **Schools**: Information about schools, including price ranges.
2. **Comments**: Reviews and ratings from students.
3. **Courses**: Details of courses offered by different schools.
4. **Locations**: Information about the locations of schools.
5. **Badges**: Achievements or badges awarded to schools.

---
## Analysis and Findings

<a name="project-overview"></a>
### Competitor Identification
Competitors were identified by listing all schools except Ironhack to understand Ironhack's market position relative to similar institutions.

## Getting Started
### Ratings and Reviews Analysis
- **Ironhack Ratings**:
- Overall Rating: 4.5
- Curriculum Rating: 4.4
- Job Support Rating: 4.3
- **Competitor Ratings**:
- Overall Rating: 4.0 to 4.7
- Curriculum Rating: 4.0 to 4.6
- Job Support Rating: 4.0 to 4.5

The notebook attached to the project connects to a bootcamp review website (www.switchup.org) and scrapes some information into dataframes. This will be the basis of the information to design your database. Read the script and get a general understanding each function. Comment the code appropriately.
### Course Offering Analysis
- **Ironhack**: Offers 8 different courses.
- **Competitors**: Offer between 5 to 12 courses.

* Populate the list of schools with a wider variety of schools (how are you going to get the school ID?)
### Location Analysis
- **Ironhack**: Present in 9 cities across 6 countries.
- **Competitors**: Presence in 5 to 15 cities across 3 to 10 countries.

* Take a look at the obtained dataframes. What dimensions do you have? What can work as useful metrics? What keys do you have? How could the different dataframes be connected?
### Badge Analysis
- **Ironhack**: Earned 15 badges.
- **Competitors**: Earned between 10 to 20 badges.

* Go back to the drawing board and try to create an entity relationship diagram for tables available
### Comment Analysis
- **Ironhack**: Received 250 comments.
- **Top Competitors**: Received between 100 to 300 comments each.

* Once you have the schemas you want, you will need to:
- Create the suitable SQL queries to create the tables and populate them
- Run these queries using the appropriate Python connectors
- Crucial hint: check out the following tutorial:
https://www.dataquest.io/blog/sql-insert-tutorial/

### Course Ratings Over Time
- Ratings for each course have generally improved over the years.

---
### Sentiment Analysis
- Positive reviews: 200
- Negative reviews: 50

<a name="deliverables"></a>
### Price Comparison
- **Ironhack**: $8000 - $10000
- **Competitors**: $6000 - $12000

## Project Deliverables
### Course Performance by Location
- Higher ratings in cities with a higher concentration of tech companies.

We will henceforth list the requirements for each project in three groupings to help you prioritize your work
### Badge Distribution
- Schools with more badges tend to have higher overall ratings.

* MVP (Minimum Viable Product): these are the absolute minimum requirements that you will have to achieve for your project to be considered completed. *They should absolutely be your priority* as failure to meet these requirements means an insufficient delivery, even if you go above and beyond on other requirements. Plan around unforesseable situations to make sure you have time to at least deliver the MVP. A good way of doing this is to plan on having the MVP well in advance of the deadline for the project.
### Student Satisfaction Trends
- **Peak Performance** (2017-2019): Highest ratings across overall satisfaction, curriculum, and job support.
- **Recent Decline**: Noticeable decline in all three ratings from 2021 onwards, especially in job support ratings in 2024.

* Expected improvements: these are suggestions on how to improve your product, features that are not critical but that we expect most students to be able to deliver *some* of these features. They will often be stated in more open-ended description so that you can customize and differentiate your project and make it a tailored part of your portfolio.
## Actionable Recommendations

* Nice-to-haves: these are suggestions on how to go above and beyond. We do *not* expect your products to contain these features / use these technologies (but we will not actively discourage you from pursuing them as well). The nice-to-haves exist more to help you find resources that may not be taught in class and put some icing on your product, potentially even *after* the bootcamp.
1. **Enhance Curriculum Quality**:
- Focus on improving curriculum ratings.
- Gather student feedback to identify areas for enhancement.

The Deliverables for this project are:
2. **Expand Geographic Presence**:
- Increase presence in more cities and countries.
- Identify high-potential markets.

#### Minimum Viable Product
3. **Boost Job Support Services**:
- Strengthen partnerships with companies.
- Offer enhanced career support services.

[ ] Files that contain your solution submitted via a GitHub repo
4. **Increase Engagement**:
- Encourage more student reviews and comments.
- Implement initiatives to boost positive feedback.

- .py or .ipnby files to extract and transform the data scraped in the attached notebook as well as running the business analysis
5. **Leverage Achievements**:
- Promote badges and achievements.
- Aim to earn more badges.

- An exported .sql file with the final schema

- A README.md file with explanation fo the project goals, methodology and ERD
6. **Optimize Course Offerings**:
- Regularly update and optimize courses based on market demand.
- Introduce new courses aligned with industry trends.

[ ] A presentation that showcases your product
7. **Price Competitively**:
- Adjust pricing to remain competitive.
- Offer scholarships or financial aid.

- The presentation includes a business analysis built on top of your database where clear business hypotheses should be tested and some actionable conclusion must be presented
8. **Investigate Causes of Decline**:
- Conduct surveys or focus groups to understand reasons for the drop in ratings.
- Analyze feedback to identify areas of concern.

- The presentation includes a component about design choices for your database, with at least a presentation of the final ERD
9. **Continuous Curriculum Improvement**:
- Update curriculum to align with industry trends.
- Incorporate student feedback.

- The presentation includes a component about technical challenges faced
10. **Enhance Job Placement Services**:
- Strengthen company partnerships for better job placements.
- Provide career support services.

#### Expected improvements
11. **Leverage Successful Programs**:
- Study successful strategies from high-performing programs.
- Apply these strategies across other programs.

[ ] Additional depth in business analysis
12. **Monitor and Adapt to Market Trends**:
- Stay updated with market trends and employer demands.
- Regularly update course content.

- Deeper data gathering: more of the same datapoints (schools, locations, comments) AND/OR different data points (prices, recommendations, etc)

- Enriching data gathering: more sources of data (e.g. demographics by city, salaries per country etc.)

- Multi-layered questions: use your answers to basic hypotheses to generate more refined hypotheses (which may require more sophisticated scraping/ETL)

- Charting: use visual intuition to drive your analysis


[ ] Improved engineering and design of your solution

- Deployment of the solution to a cloud database

- Creation of auxiliary functions that test the database for data quality issues


#### Nice-to-haves

[ ] Improved engineering of solution

- Encoding of primary key - foreign key relation in database design

- Differential update of database (include only most recent data when you re-run the script)
## Conclusion

This comprehensive analysis provides insights into Ironhack's market position and highlights areas for improvement. By implementing the recommendations, Ironhack can strengthen its competitive advantage and enhance its overall market presence. Addressing areas of decline and leveraging strengths from peak performance years can improve student satisfaction and maintain a competitive edge.
Binary file added SQL/ERDModel.mwb
Binary file not shown.
Binary file added SQL/ERDModel.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
57 changes: 57 additions & 0 deletions SQL/SQLschema.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
USE tech_schools_data;
CREATE TABLE IF NOT EXISTS Schools (
school_id INT PRIMARY KEY,
school_name VARCHAR(255),
website VARCHAR(255),
description TEXT,
price_min FLOAT,
price_max FLOAT
);

CREATE TABLE IF NOT EXISTS Comments (
comment_id INT PRIMARY KEY,
school_id INT,
school_name VARCHAR(255),
user_name VARCHAR(255),
anonymous BOOL,
graduating_year INT,
tagline VARCHAR(255),
created_at DATETIME,
overall_score FLOAT,
overall_rating FLOAT,
curriculum_rating FLOAT,
job_support_rating FLOAT,
review_body TEXT,
program VARCHAR(255),
program_cat VARCHAR(255),
FOREIGN KEY (school_id) REFERENCES Schools(school_id)
);

CREATE TABLE IF NOT EXISTS Badges (
badge_id INT PRIMARY KEY,
school_id INT,
school_name VARCHAR(255),
badge_name VARCHAR(255),
keyword VARCHAR(255),
description TEXT,
FOREIGN KEY (school_id) REFERENCES Schools(school_id)
);

CREATE TABLE IF NOT EXISTS Locations (
location_id INT PRIMARY KEY,
school_id INT,
school_name VARCHAR(255),
country_id INT,
country_name VARCHAR(255),
city_id INT,
city_name VARCHAR(255),
FOREIGN KEY (school_id) REFERENCES Schools(school_id)
);

CREATE TABLE IF NOT EXISTS Courses (
course_id INT PRIMARY KEY,
school_id INT,
school_name VARCHAR(255),
course_name VARCHAR(255),
FOREIGN KEY (school_id) REFERENCES Schools(school_id)
);
Loading