Ulascan
Summarizes Tokopedia product reviews with sentiment analysis to help customers make faster purchasing decisions.
Overview
Ulascan is a tool that summarizes Tokopedia product reviews using sentiment analysis, helping customers make faster and more informed purchasing decisions. By processing large volumes of reviews through machine learning models and natural language processing, Ulascan extracts key insights and presents them in a digestible format.
This project was built as the capstone for Bangkit 2024, a career-readiness program supported by Google, GoTo, Tokopedia, and Traveloka. Our team of seven represented three technical tracks: machine learning, mobile development, and cloud computing.
Project Goals
Bangkit is a career-readiness program that aims to produce high-caliber technical talent for world-class Indonesian technology companies and startups. Acknowledged by President Jokowi and praised by Minister Nadiem Makarim, Bangkit successfully trains thousands of students across Indonesia to help them grow in-demand skills in tech.
Our capstone challenge was to build a real-world solution that combined machine learning, cloud infrastructure, and mobile development. We chose to tackle the problem of information overload in e-commerce reviews, creating a tool that could save customers time while helping them make better decisions.
Screenshots

Challenges and How We Overcame Them
As the cloud computing cohort, I was responsible for the GCP infrastructure, backend system, and Tokopedia review parser. One of the first challenges was building the parser itself. After inspecting Tokopedia's website and analyzing its network traffic, I discovered they used a GraphQL API that was publicly accessible without authentication. Initially, I replicated the exact payload used by the website, but after understanding the structure, I refined the queries to request only the minimal data we needed—reducing payload size and improving efficiency.
A major technical challenge was processing speed. Our ML pipeline involved three sequential operations: sentiment analysis using our custom model, review analysis via the Gemini API, and summarization via another Gemini API call. Running these sequentially took around 90 seconds, which was unacceptable for a user-facing tool. I addressed this by implementing goroutines in Golang, enabling concurrent processing that reduced response time to 10-20 seconds—a 4-5x improvement.
Another challenge was cost optimization. We initially considered using Cloud SQL for our database, but the pricing was too high for our MVP budget. After discussing with my cloud computing teammate, we decided to use a Google Compute Engine (GCE) instance and install PostgreSQL manually. This gave us the functionality we needed at a fraction of the cost, though it meant sacrificing some of Cloud SQL's auto-scaling features—which we didn't need at the MVP stage anyway.
Finally, team coordination proved difficult because we were working remotely—half the team in Jakarta, the other half in Surabaya. To overcome this, we emphasized active communication and individual accountability. Each member took ownership of their tasks while staying aligned on our shared vision, which kept the project moving smoothly despite the distance.
Learnings
This project was my first experience with Google Cloud Platform, and while I leaned on my cloud computing teammate's expertise, I made sure to actively contribute to architectural decisions rather than simply deferring to him. For example, the decision to use GCE instead of Cloud SQL came from collaborative cost-benefit analysis, which taught me how to balance features, scalability, and budget constraints in cloud infrastructure.
I also gained hands-on experience with Golang, particularly using goroutines for concurrent programming—a powerful feature that dramatically improved our system's performance. Understanding how to structure a backend that efficiently integrates with ML models was invaluable.
On the non-technical side, I learned the importance of remote team collaboration. Staying aligned across cities required intentional communication, clear task ownership, and mutual trust. This experience taught me how to work effectively in distributed teams, a skill that's increasingly important in modern software development.
Attributions
- Adrian Karuna Soetikno: Android Development
- Alvaro Austin: Android Development
- Java Kanaya Prada: Cloud Computing
- Jaycent Gunawan Ongris: Machine Learning
- M. Alief Faisal Hakim: Machine Learning
- Mashita Dewi: Machine Learning
- Muhammad Hilman Al Ayubi: Cloud Computing