Sometimes it might be pretty hard to put your disruptive ideas into motion and make your dreams come true, especially in the business sector. However, Fahim Saleh, a co-founder of Pathao and Gokada, genuinely believed you shouldn't give up on your dreams no matter how tough the challenge is, which we totally agree with.
In this article, we'd like to tell you of the fruitful partnership we built with Fahim and his company and to highlight a few issues we encountered in our mutual ride-sharing project.
Thinking big
Driven by the success of Pathao, founded in Bangladesh back in 2015, Fahim decided to go the extra mile and start a new project in another country.
What I needed was a country that had intense traffic, a large population, a readily available supply of motorcycle taxis, and little competition.
Known for its heavy traffic and populous cities, Africa ended up being a decent fit to start a motorbike ridesharing business. The increasing costs of vehicle ownership, the need to reduce traffic jams and environmental exposure made it possible for bike hailing services to flourish in those regions.
On the one hand, it was a breakthrough idea that could possibly change the traffic situation. On the flip side of the coin, Fahim faced new problems he had to take into account:
- Create a user-friendly app and a driver training program
- Make sure there is a parking area and a tracking system
Furthermore, he managed to adopt a new monetization model — instead of paying a ride fee, users had to pay for using the service, which, in turn, caused additional challenges.
So-called Nigeria's okadas (a local term for motorbike taxis) gave the name to a new project — Gokada. Having made basic preparations to check the project's viability, Fahim came up with a working MVP designed specifically for Lagos, Nigeria.
The MVP was tested with around 200 drivers who had previously passed the quality-of-service test. The next step was to create a fully-functioning product and increase the number of drivers up to 2000.
It's at this point when our fruitful collaboration story begins.
First meeting, first issues
The first time I met Fahim was when he visited our office in Sumy city to showcase his new project. He had a working MVP and a few thoughts on what improvements and functionality enhancements to implement later. We managed to combine our versatile teams of seasoned experts to ensure a highly dynamic and smooth working environment between Brocoders and Gokada.
First and foremost, we started with the requirements elicitation and in-depth research of Gokada's business processes to acquire insights into the primary challenges and issues we could face during the development phases. As a business owner, you might want to do the same to see the big picture.
#1 Technology stack
Developing a ridesharing app is a trend these days, but you always have to be very deliberate and consider numerous project-specific pitfalls. Choosing the technology for your software is one of those you have to take care of in the first place.
A native-based app allows to create awesome UI, but it costs a lot to make one. On the other hand, cross-platform tools enable building cost-efficient and powerful software solutions under harsh deadlines. That said, the decision was made to opt for React Native, which was totally approved by Fahim and his team.
React Native saves the developers' time for design since its UI code is reusable for both platforms. Also, React Native provides a developer with better visual features to simulate the code view on different platforms.
#2 Single app for drivers and users
I first met Fahim in our Sumy office. After a few workshops, we assembled a self-motivated team of senior-level experts to carry out the project and execute our new partner's visions. Guys were so inspired by Fahim's enthusiastic spirit and his passion for innovations, they couldn't wait to meet new challenges.
It was a pleasure doing business with him since he had a clear vision of what to do and where to go next while still accepting our feedback and recommendations.
During the development phases, it was decided to create one cross-platform app for both drivers and users. The early solution had two separate mobile applications for different roles, but our new approach allowed for decreasing the development time and costs.
Besides, it made it possible for us to implement new features into a single platform for drivers and users in one go, as well as to release new product versions for Android and iOS at the same time.
#3 Mapping service
Can you imagine a taxi-related app without a GPS feature? Neither do we. That's why it was crucial for us to find a mapping service that can fit our platform best. But you know the way these things usually go:
- Since the primary flow was deeply connected to a location data function, it was vital to pick the one that had cost-effective payment plans to reduce expenses related to GPS tracking and data location features.
- A Google Map Service API was too expensive to afford for all internal processes, so we tried a few different mapping services to determine which is the most appropriate.
- We compared OpenStreet Maps and Mapbox to Google Maps based on the data we worked with ─ distance and duration.
Mapbox turned out to be a decent option in certain circumstances, so we decided to utilize the combination of two mapping services for different situations.
#4 Payment system
What features make a ridesharing software product comfy enough for people to enjoy using it? A feature-rich and intuitive interface? A captivating design? Sure. But an easy-to-use payment system is what any successful app cannot exist without. Why force users to pay only in cash if it could be processed via a banking card too?
In light of this, we had to integrate the Gokada solution with a platform that would support local Nigeria's payment methods, including a cashless settlement. Unfortunately, it might be a daunting task for companies to link their products with African e-payment platforms since they often lack the required functionality and compatibility.
Aside from processing and payment delays, lost transactions, chargebacks and expensive fees, businesses might end up with fraudulent misuse of payment networks and data theft. To ensure rock-solid data security and smooth compatibility, we carried out several in-depth research studies of Lagos' e-payment market.
As a result, we managed to find and implement a Paystack payment system powered by robust functionality that could fit our specific requirements.
#5 Anti-cheat protection
As an on-demand bike taxi service provider, Gokada used to charge drivers a flat fee of 3,000 Nigerian Naira a day (around $8) to work on their platform. The total price included an app, a branded bike and a training program.
Now let's say you put your heart building a business only to find out someone misuses the services you provide and responsible for. Fahim woke up to the fact that drivers could turn the application off to give a ride for two passengers at once, which, in turn, violated security policies and the local government rules.
That said, the Gokada team came up with the idea to start adding sensors to its fleet to better track safety standards.
We're looking at seat sensors and another GPS sensor to track things like 'did this driver add more than one passenger on the bike' so all that data will provide feedback into our servers.
Later on, we rolled out a series of bug fixes and implemented a new feature so that the Gokada team could calculate the number of rides for each driver using seat sensors data.
#6 Cloud-based service
To cover one of Gokada's components that uses a serverless approach, we decided to opt for AWS Lambdas. Basically, it was mostly a REST API and cron-tasks, powered by the following technologies (all of these are provided by the Amazon Web Services):
- API Gateway as a platform for API management
- CloudWatch Rules for scheduling cron-tasks
- Lambdas as computing units
- S3 buckets to store static files
- CloudWatch Logs with Logs Insights for log management
- Tools for continuous integration and deployment of our application: AWS CodeBuild, AWS CodePipeline and AWS CodeDeploy
Despite the benefits of AWS Lambdas like a "Pay as You Go" payment approach, great scalability, a standard set of monitoring and logging tools and an isolated environment, we had to cope with a few pain points as well.
- Execution duration limit. Lambda can be performed within 15 minutes maximum. Moreover, if a trigger is requested from an API Gateway, the duration must be no more than 30 seconds. It could have possibly worked for the API, but a 15-minutes limit for the cron-tasks was way too long to execute the particular scope of tasks on time. That said, we had to create a separate server specifically for long-running tasks.
- CloudFormation deployment limitations. The stack started failing with different errors like "Number of resources exceeded" once the number of Lambdas grew to more than 30 CloudFormations. Thanks to the Serverless framework and its plugins, we managed to cope with this issue early on.
- Failure to expand monitoring and debugging toolset. Even though AWS provides some basic monitoring and debugging tools, it's still impossible to extend these and make some custom metrics. As a workaround, we had to adopt third-party services that you usually need to integrate as libraries into your code to be able to monitor some specific stuff.
- Database connection pitfalls. In terms of AWS Lambda, you can't just open a connection pool to your MongoDB or MySQL servers at the application startup phase and reuse it during the entire lifecycle. In light of this, there are two ways to manage connections. You can either open a connection for each Lambda invocation and close it after your code with logic is completed, or you can try to reuse a connection and keep it in the Lambda memory as a reference in code or field in context.
- Inability to adopt caching in a traditional way. You can't implement traditional caching for classic-like servers. Usually, you have to use other services like S3, DynamoDB or ElasticCache (de-facto Redis hosted on AWS) to keep Lambda's state or cache some data between AWS Lambda invocations.
- Complex payment model. Even though AWS Lambda is quite cheap, various supplementary elements can significantly increase the total costs. So make sure to consider additional services that you will have to pay for.
Government ban and pivoting
Driven by a transparent development approach and the expertise that has been polished throughout almost 100 successful projects, Brocoders and Gokada teams managed to mitigate multiple pitfalls early on.
After the final release, our teams still worked together, fixing emerging bugs to ensure the entire platform operates properly. Our work was underway to implement new functionality enhancements based on Fahim's feedback, like the admin panel optimization or recruitment add-on module.
Unfortunately, the Lagos government enforced a ban on passenger motorcycles in February 2020, meaning all forms of commercial motorcycles (okada) and tricycles (keke) were banned from major highways in the state. The decision has not gone down well with people since okadas saved them from numerous traffic jams, dropping them off at their doorsteps, not to mention hard-to-reach areas where buses and taxis are unable to go physically.
Startups are most exposed to multiple risks, and this ban was one of those you cannot foresee, so you should always be ready for a pivot. It could have destroyed Fahim's business and his dream, but he managed to pivot the Gokada platform towards delivery services, thus saving drivers from ending up on the streets. It was at this point when our mutual collaboration and time together has come to an end.
Fahim Saleh was an exceptional example of a leader and innovator for our team. Whatever issues he faced or challenges he endured, he always endeavored to work them out. Struggling with technical issues or overcoming political threats was just a part of his entrepreneurship life. But one day we heard something unthinkable, unbearable to accept. One day we learned that Fahim tragically died. Since that day, Gokada management was assigned to Nikhil Goel, a new CEO. To date, we are negotiating with the Gokada team on the possibility to resume our fruitful collaboration in terms of the previous business model. "
If you want to find out more about technical details, you might want to read this case study.
An investor that finds things — that's how Fahim described himself on LinkedIn. For sure, he had a bunch of future-proof business strategies and revolutionary ideas to offer had his life not been taken in cold blood.
As a true pathfinder in tech-based innovations, he wanted to make the world a better place. We will all miss you. Rest in peace, dear friend.