Solving Hard Problems, Creating Huge Impact

Carousell bio photo By Carousell

What began as a hackathon project at Startup Weekend, has now grown into one of the largest marketplace apps in the world since launching our iPhone app in August of 2012 and Android app in January of 2013. For the Carousell team, this is a once in a lifetime opportunity to re-imagine what peer-to-peer e-commerce can become in the era where smartphones are increasingly becoming the main way people access the Internet.

Though Carousell doesn’t move petabytes of data (yet), we facilitate large amount of transactions and are facing many of the challenges that eBay faced back in the early days. This post is for the software engineers who are curious about the types of challenges that we face.

Here are some illustrations of the problems we face and how we are tackling them:

Chat and Communication

When we first built Carousell, we started off with a basic implementation of the existing chat system to determine if it would be a popular feature among our users. Chat messages are stored in PostgreSQL databases and then later processed using Celery with RabbitMQ, allowing us to cope with the huge growth in the number of chat messages exchanged between our users. Today, millions of chat messages are exchanged between our buyers and sellers. The reliability and scalability of the chat system has become an important task for our engineering team. Our immediate plan is to introduce near real-time support to our chat system to improve the user experience for our users.

Search and Discovery

To date, the Carousell community has listed over 8 million new and preloved items for sale in categories ranging from fashion and beauty to even baby products. Search is the most used feature in Carousell to find and discover new items to buy within the user’s specified budget. Our current search backend is powered by a cluster of Elasticsearch servers using Haystack, a Django library to simplify access to Elasticsearch. We chose Elasticsearch as it was relatively easy to setup and provides spatial search capabilities out of the box, allowing users to find items on sale near their current location. Elasticsearch’s built-in replication capabilities also allows us to easily scale up to increased search demand by using zen discovery. New nodes can be added to our Elasticsearch cluster to scale up painlessly with no visible downtime for the users.

Some of our upcoming plans to improve Search and Discovery are to increase the relevancy in search results based on individual tastes, purchase histories and current location, enable real-time search alerts of new items to users who are actively looking for the best deals and also to improve our Popular algorithm to make it easy for our users to discover trending items.

Trust and Safety

With hundreds of thousands of transactions and growing happening at Carousell every month, building a trusted and safe marketplace for buyers and sellers is one of our top priorities at Carousell. Our engineers work closely with our Support and Community teams to build product features and support tools. Feedback from our Support team give us insights into user behaviours on the app as well as insights on how users are reacting to new features that we have built for them. Some of our upcoming plans are to develop a system to proactively identify patterns and suspicious behavior to mitigate fraud and scam cases by building an effective verification, feedback and reputation system to ensure a trusted and safe marketplace. With a growing user base, we will also work with the support team to streamline their work and prioritization of the different types of support tickets together so we can get to our users enquiries in a shorter amount of time. User acquisition, retention and virality.

Building a successful marketplace in every new country that we’re expanding into requires us to find and engineer scalable and repeatable ways to acquire new users, retain existing users, and most importantly help our users to become successful buyers and sellers. This requires us to design our product around the different stages of a user lifecycle: Acquisition, Activation, Retention, Referral, (Revenue); and to tailor our product to users from different countries while keeping in mind of cultures nuances and practices. We’re still in the very early days of our international growth and some of the exciting plans that we have for growth are to scale our user acquisition strategy through SEO, virality and referral system; run multivariate tests to maximize the impact of features; revamp our logging platform with technologies such as Kafka, HDFS, Hive and Presto.


One of our upcoming plans is to integrate payment systems to support transactions happening at Carousell. To date, over 2 million items have been sold on Carousell. As we expand internationally, the next challenge for our engineering team is to seamlessly integrate the various international and local payment providers into the buying experience. We want to provide the simplest way for users to transact by supporting as many payment methods, such as credit cards, PayPal, bank transfers, and so on. In order to ensure the trust and safety of transactions, we’ll also need to implement a secure escrow system to handle the holding and releasing of funds upon successful transactions. Interested in working on these challenges?

As Carousell continues to grow, we will be working on the challenges mentioned above including new technical challenges that will manifest themselves over time. If you are interested in working on these exciting challenges in our engineering team, we will be happy to chat with you over coffee to learn more about you. Drop us a note or check out our job openings. We’d love to hear from you :)