Context

It all started in 2017 after I had graduated from high school. As an international student, I knew the tuition burden would be unbearable so I decided to start my own business to help pay my way through college. After pitching the idea to my parents, my father loaned me his pickup truck which helped me kickstart the operation, and from there Bubbly — Mobile Car Care was born.

The idea was to create a complete frictionless mobile car care solution that would make car maintenance simpler and more up-to-date with current technology. After studying the market, we learned that most competitors were informal individuals who did not offer the reliability and professionalism the market was demanding. With all that in mind, Bubbly began operating during the summer of 2017, offering an on-demand mobile car wash service in Houston, TX. Thanks to our competitive advantages, Bubbly was able to exceed the market demand and grow throughout these years, resulting in strong brand recognition in the area.

However, with this growth, we quickly realized that our operation was not scalable. Our once advantageous booking system (third party) was no longer meeting our needs, and the payroll spreadsheets were becoming a nightmare - it was time for an upgrade.

Inspiration

After identifying our bottlenecks, I decided to put those hours of youtube tutorials to work and build out a suite of solutions that would not only solve Bubbly's problems but also other similar services.

You can also watch this presentation on https://www.youtube.com/watch?v=D3vb3-Ybruc

After some careful planning, this is what we found:

1. Lack of service customization results in poor customer experience

In our perspective, there were two ways to solve this problem, we either offer many different services to cover a large spectrum of customer needs, or we somehow create base services that can be customized to better fit the customer needs. Since the whole mission behind Bubbly was to make car care simpler, we decided to create very well thought out base services that could be customized with "upgrades". However, the current website/booking system would not support that.

2. Unable to book more than one service at a time

Throughout the years, we have noticed that most of our customers want to schedule 2 or more vehicles at the same time; however, with the current implementation, our users need to go through the entire booking flow twice - which is extremely inefficient and generates more friction.

3. Customers can't manage their appointments

Part of our customer-oriented culture is to allow for flexible rescheduling and canceling. However, currently, it is extremely tedious and confusing for customers to manage their appointments - in most cases, they have to email or call to get anything done.

4. No support for recurring services

A big part of achieving our goal of a complete car care solution is the ability to offer recurring services. Being able to create their own service schedule (i.e. every Monday service A, every 3 months service B) is extremely important to our users and guarantees them to always have a well-maintained vehicle.

5. No manager dashboard

On the employee side of things, managing appointments is extremely difficult, due to the lack of a manager dashboard.

6. Appointments are distributed inefficiently

Currently, the appointments are scheduled on a first come first serve basis. Which for a small scale operation is fine, but once the operation grows, it becomes inefficient. In other words, employees have to drive longer distances, which results in many problems (i.e. increased delays, increased operation costs, etc.)

7. No employee-facing system

The current booking system gives us very little flexibility in terms of data. This means we cannot give our employees key information about their schedule, and keep the customer updated regarding the status of their appointments. Ultimately, increasing no-shows, delays, and cancelations.

What it does

Now let's talk about the interesting stuff. This suite of solutions was designed to completely fix all the problems mentioned above and more.

Customer Facing app

Available for both iOS and Android, this native app will allow our customers to:

  • Save their vehicles, addresses, and payment methods, resulting in faster checkouts
  • Easily customize their services by adding upgrades, which increases the flexibility of our services and the average ticket price.
  • Re-book appointments with one tap
  • Add more than one appointment per order
  • Rewards program
  • Manage their appointments
  • Track their appointments in real-time
  • Enroll in recurring services that are fully customizable
  • Authorize employees to remotely unlock/lock and locate their vehicle, which further removes friction

Employee facing app

Available for both iOS and Android, this native app will allow our employees to:

  • Keep track of their hours and earnings
  • Provide appointment updates to customers
  • Improve overall day-to-day operations
  • lock/unlock customer vehicles in-app as well as locate them

How I built it

Customer/Employee apps

When choosing what technology to use, I tried to be as objective as possible. As a team of one, I had to choose the most efficient tool for the job. After some research, I landed on Flutter -- Google's UI toolkit for building natively compiled applications for mobile with a single codebase. This framework is what allowed me to create both Android and iOS applications quickly and jumpstart the project.

Manager Dashboard web app

This application was built with React, which offers great performance and community support due to its popularity.

Backend infraestructure

We decided to go with Firebase since it is extremely easy to bootstrap the project and flexible enough to allow for customizations.

Challenges I ran into

Lack of experience

Being a sophomore in college, and never taking a computer science class before, I knew it was going to be a challenge. With no previous experience, I did not know how larger teams approached a project like this. With some research I was able to set up a decent workflow, using story tracking and CI/CD pipelines to streamline the development process.

Time management

Planning, designing, and building this whole project on my own, while running a business and studying computer engineering has not been easy, to say the least. This is a big hurdle I face every day, but also made me learn a lot.

Accomplishments that I'm proud of

Booking system

One of the hardest problems to solve during this project was to create a booking system from the ground up. I did not want to rely on previously built booking systems once again. Creating a fully custom booking system from scratch was a tough challenge, but extremely rewarding. At this stage, there's still a lot that can be improved, but so far it is working like a charm :D

Appointment distribution system

As mentioned before, the appointments were previously distributed on a first come first serve basis which is extremely inefficient. Designing an algorithm that automatically gives the employees the optimal combination of routes and appointments was a huge improvement. This change greatly reduce operating costs and customer friction. It also has a lot of room for improvement, but it's a big step towards a more efficient future.

What I learned

Planning is key...

In the beginning, I would just sit down, make myself some coffee, and starting coding away. I quickly realized this wasn't the best approach. While I was coding I would make wrong decisions that could've been easily avoided with some planning. After failed attempts, I started to plan out every single feature that I wanted to add. How would the data flow? how should the data look like? how is this screen going to look like?

...so is resting

Sitting down for hours writing code is good and all until you have to leave the "autopilot mode". When a difficult problem comes to light and you have spent hours coding, it is almost impossible to solve it. I learned that by taking a break, or "sleeping it off", will allow your brain to better process the information and help you come up with better solutions much faster.

Simple is often better

When trying to solve all these problems, it is easy to get carried away and architect some extremely complex and over-engineered solutions. However, I later learned that simple solutions are often much better.

What's next for Bubbly Solutions

We will continue to build our solutions and improve its modularity to allow other small businesses to take advantage of this technology. Solving Bubbly's problems is awesome, but enabling our community to grow is extremely important. I like to think of it as "lifting while you climb."

Small businesses are at the core of this country. The current state of the world is uncertain, but by enabling small businesses to grow and reach their full potential, we can make the world a better place, community by community.

Share this project:

Updates