<aside> 💼 Skills: Product Management, AI, Product Marketing, Business Development

</aside>

Problem

Our enterprise users feel our product has a lousy ROI because it requires expensive servers ($25.000 - $80.000) which did not meet their budget. Our product was initially designed for the government which typically needed massive scalability (100+ CCTVs) and provide massive fund. The budget for server procurement lies between $25.000 - $80.000 per server, excluding other infrastructures such as camera, internet, and installation service. While enterprises generally had $10.000 to $14.000 for a project.

This former product later we call it Cluster. Cluster is an on-premise AI solution to enhance CCTV stream to have AI capability like Face Recognition, Automatic License Plate Recognition, Anomaly Detection, etc. It runs on local server, connected with CCTV, and users can get insight like how many blacklisted person appear in important event, how long a vehicle park, which person authorized to enter sensitive area, and many more.

Untitled

Root Causes

There are several main problems with our product:

  1. Excessive computation cost. Building the product into production requires multiple programming language translations, from building a model with Python to binarizing with Cobra and deploying it into the Mesos-Marathon service. This translation resulting excess needed computational power.
  2. Monolithic & rigid installation. From the AI model, the pipeline, interface, and installation are packed into one image, with an enormous size of 120GB, not mentioning dozens of configuration and rules. It is not easy to install, especially when remote installation is needed. Installation alone requires 5 hours without considering downloading the image. It also difficult to update since all parts tightly coupled. Minor update on interface can take a quarter or hours to be fully functioned
  3. Poorly documented. For a complex product, it is not well documented both for users and the team. Existing documentation lagged with development, causing chaos and confusion in deployment.

Actions

I was assigned as a product manager in 2020 when the pandemic and economic crisis kicked in. I realize that the core problem of our business is the product itself. To reduce the computation, we have to reinvent our product; it costs much less rather than trying to fix the current product. We called our new product Visionaire.

Here’s how we built Visionaire:

Breaking Down the Product

We must start breaking down the product into smaller abstractions cut the computational cost. We divide our products into services that interact for better observability and maintainability.

Cluster architecture simplified. The core computation needed to be encrypted for security purpose. This resulting additional computation required to translate from Grabber to Pipeline to Model.

Cluster architecture simplified. The core computation needed to be encrypted for security purpose. This resulting additional computation required to translate from Grabber to Pipeline to Model.

Reinventing the Core

We must translate the entire engine into a single programming language to cut computational costs. Finally, we found that C++ has the best performance, security, and flexibility. Furthermore, being the second best language to develop computer vision and the deep learning-based application made C++ stand out compared to the alternatives.

We also want to create this computation as compact as possible to meet enterprise or retail budgets but capable of scaling to city scale. Thus, we must consider how we can be scalable without external software such as Mesos or Kubernetes. We create our product to be capable act as Master/Slave. This component reduces computation even more and gives better visibility for large-scale deployment.

For comparison, the total Computational Cost before was IDR 37.667.000 ($2400), meaning if you have a server worth IDR 220.000.000 (~$15.000), you can only run around 6 analytics on that server.