Industry Capstone Project
Sep 24 - Apr 25
Description
Smart POS is a mobile-first smart Point-of-Sale system designed to digitalise vehicle workshops across Southeast Asia by replacing manual processes with automation. It integrates modular inventory management, customer relationship management, and AI-driven marketing, enabling seamless stock control, procurement, and sales. Predictive analytics and real-time insights paired with an AI Assistant helps optimise operations, improve decision-making, and enhance customer engagement, ensuring operational efficiency regardless of digital proficiency.
Technologies
NestJS
MySQL
LLM and LangChain
AWS Kubernetes
AWS S3
AWS API Gateway
System Design
Microservices
Project Management
This was my final year capstone project at Singapore University of Technology and Design (SUTD). The project was done in collaboration with Oyika, a startup that focuses on electric vehicle charging solutions.
I was the lead developer for the project and was responsible for the overall system architecture, database design, and implementation of all backend services. I also helped liaise with the client to gather requirements and wrote the product specification document and system design document. Finally, I also led the implementation of AI features using LangChain and OpenAI’s LLMs for the project.
Manual inventory management slows small businesses down. Inaccurate tracking causes stock issues, delays, and lost sales. Without real-time insights, problems are caught too late. Last-minute orders increase costs and disrupt operations. Pen-and-paper methods are no longer enough to stay competitive.
My team and I built a Smart Point of Sale (POS) system for vehicle workshops across Southeast Asia.
At its core is an Inventory Management System with simple inputs and automated workflows.
A built-in Analytics layer gives our client real-time visibility into operations and their workshops gain actionable insights, improving decisions and user experience.
This solution boosts efficiency and deepens customer engagement.
Please visit our Capstone Showcase website for more information on all the features built.
Following the industry partners requirements, I designed a microservices architecture for our system. I learnt a lot about software architecture and microservices and the primary reason for us using microservices the fact that its modularity will eventually allow our client to take parts of the system and deploy them independently if they so require. Microservices are also scalable and allow our team to work on different parts of the system independently.
I was also the one that deployed all of our services on the cloud such as on AWS Elastic Kubernetes Service (EKS) and AWS API Gateway.
I also designed and managed all of our databases. Above shows one of the database and schema that we used for our system. All of our databases were normalised to Boyce-Codd Normal Form (BCNF) to ensure that there was no redundancy in our data. All the tables are also constrained to ensure that the data integrity is maintained.
In addition to these tables, we also implemented several stored procedures and views to help with our data processing and analytics.
I implemented most of the backend services for our system using NestJS and TypeScript.
In total, I implemented more than 50 endpoints for our system. Below are some of the key features that I implemented:
Inventory Management: The inventory management system that allows users to add, update, and delete items in the inventory. This includes features such as stock tracking and low stock alerts.
Scanner: The scanning system that allows users to send scanned data to the backend. This data is then processed and automatically returns the relevant information to the user from not only the inventory but also using UPC codes.
Insights Analytics: The insights endpoints that aggregates and make sense of our data to allow users to generate get reports on sales, inventory with features such as demand forecasting using Holt Winters and dead stock notifications.
Customer Relationship Management: The customer relationship management system that allows users to understand their customers and send marketing or notifications to customers.
AI Assistant: The AI chatbot that uses Langchain Tool Use to allow users to interact with the Smart POS to understand better their inventory and sales.
With AI being the latest trend, I took this opportunity to practice implementing RAG, one of the most talked about and implemented architectures in enterprise AI.
I used LangChain Tool Use and we wrote many custom functions that read from our database views to allow the AI to answer questions such as:
Thereafter, we evaluated the performance of the AI chatbot based on Relevance to the Question, Accuracy of the Answer and Groundedness of the Answer. Similar to the RAGAS evaluation method.
We found that the chatbot performed relatively well. However, I also learnt from this exercise that tool use significantly limits the answering capabilities of the AI if your tools are not extensive enough. This is because, with tool use, you are likely returning curated data from your database instead of feeding it the entire database and this restricts its knowledge significantly. E.g If you only have a function that returns specific customer data but not all customer IDs, the AI will not be able to know out of all the customer, who visited the workshop the most.
Finally, I also wrote and set up our documentation site for the project in both Docusaurus and Confluence for handover to our client. This was a great practice for me in writing better documentation for such an extensive project.
This was the most extensive project that I have done thus far from start to finish and I am glad to have managed to improve greatly my understanding of writing a comprehensive backend system, software architecture, database design and implementation and project management.