RAVIS.
Adding 80% more features while reducing product complexity by 60% with a brand new system.
Duong (Matthew) Duong
Data Scientist
Dai Quang Nguyen
Data Engineer
Technologies Used
Frontend
Backend
Tools
Introduction
FPT Software is a leading global technology and IT services provider headquartered in Vietnam. During my summer internship at FPT Software, my team and I was tasked with revamping the e-learning recommendation system of our business unit. It is capable of suggesting the employees with courses from platforms like Udemy, Udacity, and Coursera tailored to their needs and career goals. With the new system, our team is set to solve the below problems in just 2.5 months.
Problems
The old UI design is unwelcoming.
It does not have a consistent design language across components and pages, demonstrated by conflicting color usages and themes. The excessive use of carousels in the design creates a lot of inconvenience for the user when browsing courses.
Core features are nonfunctional.
Many core functionalities of the old system are not working such as parsing and extracting user data from resumes, searching for courses based on keywords, managing user's skills, and most importantly recommending courses based on user's skills.
The system architecture is unnecessarily complicated.
The old system used expensive and respectively complex solutions like AWS EC2, AWS Lambda, and two separate databases (Neo4j and MongoDB) for storing user data even though in-house on-premise solutions are available.
Database is inefficiently used.
Neo4j was used as the main database but only for storing user data. It opts for a neural collaborative-filtering model that requires hand-labeling for 3000+ skills. Consequently, it fails to leverage the nature of Neo4j being a graph database, which is well-known for recommendation system applications.
My Responsibilities
Front-end Development
I played the pivotal role in designing and developing the front-end of RAVIS using Next.js and React.
OAuth with Azure
I was in charge of setting up the authentication logic like sign in/sign up, page protection, etc. for the application using NextAuth and Microsoft Azure.
Search System with Pagination
I developed the website's search system, enabling users to search courses using keywords and sorting/filtering options. Additionally, I implemented server-side pagination for the search page to optimize bandwidth and enhance system performance.
Data Access Layer Design
I designed the data access layer to connect our Flask back-end with Neo4j database. This creates a separation of logic from our API layer which enables reusability, scalability, and great maintainability for the system.
Results
A simpler and more effective system with the removal of excessive MongoDB database and technologies.
Carousels are replaced with pagination for enhanced user browsing experience.
Graph and visualizations are added to facilitate user's studying.
A functional search system with sort and filter using Neo4j's full-text indexing and Apache Lucene.
A dedicating user page for skill management and uploading resume/cv.
Going Beyond
Having pride and enthusiasm for what we did, our team commit to go beyond what was required and exceed the expectation of our managers and supervisor. Here are the special features that we added to the system.
An admin page with dashboard for managing users and courses.
A generative AI chatbot for quick and interactive recommendations using LangChain and OpenAI's API.