Suprol is one of the foremost manufacturers and suppliers of contact lenses, optical glasses, sunglasses and photographic equipment in India. Suprol manufactures its own lenses from its labs in Delhi and Mumbai. These labs have a customer support center that receives orders from all over the country for Just-in-time (JIT) manufacturing of custom lenses. The orders are either placed by Suprol’s own branches or by distributors, retailers.
Unlike traditional Indian manufacturing units, Suprol had always been invested in technology. Operations depend on multiple off-the-shelf or custom solutions for tracking customer orders (Order Management System), Inventory management, billing etc.
The OMS was a custom solution that had been first built around 10 years ago.
The existing OMS had several issues and shortcomings, the biggest one being that it would be unavailable multiple times or lacked integrations with the other systems that caused a lot of manual effort, data duplication, and delayed information for decision-making purposes.
Throwing the Kitchen Sink at it
Suprol initially tried to solve the outage issues by increasing the server size on AWS (vertical scaling). This did next to nothing towards resolving the issues but did lead to a significant spike in their AWS billing.
Rough around the edges
After our initial discussions with Suprol we concluded that the way forward would be to rebuild the order management system (OMS) from scratch and integrate it with the other softwares Suprol was using for it’s day to day operations.
Suprol being a mature organization posed unique challenges. The business had a lot of nuances to it with numerous edge cases that needed to be covered.
We needed to build a product that is more reliable and robust than their existing system from day one itself. Anything that is harder to use or manage than their existing system will just not see adoption.
Once we had built consensus on the way forward the requirement gathering started. Over numerous video calls, in-person meetings and plant visits we built an understanding of Suprol’s business and started building requirement documents along with wireframes of the new OMS.
The OMS had to facilitate the workflow of the lens production inside Suprol’s labs.
A single pair of lens orders can contain 30+ different specifics, from the power of the lens to the type of coating.
The order workflow had numerous steps such as a review, raw material assignment, warranty card printing etc. One of the most crucial stages was the actual production of the lens by the CNC machine. The operations team needed us to integrate with the CNC machine both for providing the file and for status updates of the CNC machine.
Finally, the source of orders also varied from customers to customers, some customers called the contact center, some smaller customers sent orders on whatsapp via text or images and enterprise clients sent orders via automated emails from their procurement software. These were some crucial cases that the last OMS was in no position to serve, if the new OMS had to be considered a success it had to cover all these scenarios and become a single source of truth for all orders.
Through a new lens
We recommended that we rebuild the OMS from scratch using Django, React and PostgreSQL. As a part of our solution we made sure the infrastructure would have proper error management, failovers, automated system backups and email notifications reporting of system failures.
We relied on the redux library to build the complicated order taking form. Using redux helped us in managing interdependencies and validations of the form. The final form had over 35 different validations and error messages to help the user with providing the correct input.
We built a tracking dashboard that covered the workflow of an order end-to-end. From the dashboard a user could review an order, take other actions such as modifying or canceling an order and search for orders based on different parameters such as dates, customer, or lens type.
The integration with the CNC machine was probably one of the most exciting part of this project for us. We implemented a robust mechanism to provide the CNC machine with the file input through an FTP server. Django’s ability to connect to multiple databases allowed us to integrate with the database of the CNC machine to track the CNC machine’s internal progress on an order.
To make sure that all orders for Suprol were present and tracked only and only through the OMS we integrated with the whatsapp API (via Twilio) to push messages with orders from customers directly to the OMS (without the need of opening a whatsapp tab). For the enterprise customers we integrated email to automatically parse and input the order to the system for processing.