Inspiration
After speaking with several small vendors, artists, and shopkeepers, I discovered their struggles with customer engagement and retention, hindering their business growth. Recognizing the need to connect these talented individuals with the right customers, I initiated a project called Ennovation Hub to address this gap.
The name Ennovation Hub was selected as it represents a seamless fusion of innovation and technology, serving as a pivotal connection between two crucial market players: Customers and Sellers. This platform encompasses various user interface options, such as Extension, Website, or a WhatsApp chatbot, catering to diverse user preferences.
This has been nothing short of a roller-coaster ride for us for the past couple of weeks and we are proud of the fact that we pulled off this project in time.
Sponsors' Utilities
Before diving into the project, we want to highlight the various utilities of the sponsors of this event, that we used in this amazing project. There were a plethora of utilities to use in this event, but we had to cut short our choices because we had limited time. So, we used the following utilities:
🔴 Descope: Be it the seller/buyer, we used Descope's flows, Client SDKs, backend SDKs, Connectors, and many other things to ensure that we quickly get our best-in-class authentication model up and working.
💡 Note (for Descope judges): We have mentioned everything regarding the Descope's usage in our project on this page Please read this page and we are sure you will appreciate our effort 🤞https://github.com/ChamanSahil/devweek-ennovation/blob/main/descope.md
🟡 Codacy: If it's about security and ensuring that there are no loopholes in the code, Codacy is the go-to service. We used it to find issues, and duplicate codes and easily rectify them.
💡Note (for Codacy judges): To see how the codacy dashboard looks for the code repository of this project, you can visit this page 🤞https://github.com/ChamanSahil/devweek-ennovation/blob/main/codacy.md
What it does
Now let us jump into what this project offers and how is it one of the best services out there. Let's start with the website:
1️⃣ Website
| Whom is it for? | Sellers |
| Features |
|
| Services (Sponsors) | Codacy, RedHat OpenShift, and Descope |
By using Descope's flows, Client, and Backend SDKs we ensured that we enable Password-less authentication for the buyers so that they can focus on just maintaining their inventory and targeting their customers. To be specific, we used enchanted email for signing up/logging in the buyers and if Google's reCaptcha flags the current session as a bot attack, then they will be required to complete the Multi-Factor Authorization (MFA). So, by evaluating the risk score and adding the MFA (TOTP), we are adding another security layer.
👀 By the way, did you notice that the application is hosted on this long and weird URL: https://openshift-app-chamanrock-dev.apps.sandbox-m2.ll9k.p1.openshiftapps.com/
It is so weird because it is running on Redhat's Openshift platform (so, the app is running in the cloud) and is within a Kubernetes-based container so that the application can be scaled and modularized whenever needed. Isn't that great 😉
Let's see, what the login/signup page looks like for the.

In case, the email is already registered on the platform, then you just have to check your email and click on the same number that is being shown on the screen. This is called the Enchanted Link authentication in DeScope and we loved it. Whereas if you are a new one, then you will also be asked to fill up a sign-up form and add MFA (by scanning the QR code)
In the case of adding a product, the buyer can use the ML model by just uploading the product image and the rest will be taken care of by the model. It will automatically return the best-suited label and in case, it returns a wrong one, you can update the label output and thus you can make the model learn while getting the outputs from it. So, you are not just consuming the ML model, but you are also making it learn new things.
Why I used the ML Image Classification Model
ここに書かれていることを理解できますか? Are you able to read out what's written in the previous sentence? The chances are no unless you know Japanese.
Whenever there is an exchange of something, then it should be in a format that can be understood by both sender and receiver. Our project focuses on optimally matching customers with products tailored to their needs while offering extensive features to both sellers and buyers for better presentation and coordination. It's crucial for interaction with products through visual and textual descriptions to be consistent. Inconsistencies, such as labelling a product as "Mobile" by some brands and "Phone" by others, can lead to confusion and inefficiency. This discrepancy might result in products being overlooked during searches, thereby limiting consumer options and concealing certain brands. Maintaining uniform data categorization is essential to avoid such chaos, ensuring all products are accessible and enhancing the overall user experience.
That is not all, the buyer can use the analytical page to see a lot of other things. You can always refer to the video for more understanding.
2️⃣ Extension
| Whom is it for? | Buyers |
| Features |
|
We have not used Descope's flows here because due to the limited resources and constraints posed by Google for extension-development, we could not use any external scripts in there. So, that is why we incorporated our custom signup/login form with the SDKs so that we can still use Descope for authentication purposes.
What is happening? To sign up for the extension, one has to fill in the form and as the last step, an SMS OTP will be sent to the mobile and that has to be verified. To login, email and password have to be inputted. In case, the user forgets the password, he/she can request an OTP and thus can login into the account
Make sure to watch the video as it explains the functionalities properly.
3️⃣ WhatsApp Chatbot
| Whom is it for? | Buyers |
| Features |
|
Below are the images showing snippets of the conversation between a buyer and the chatbot.

🟡 Start the conversation: The buyer can type in any phrase and if the phrase is not according to the expected inputs, then the above-shown output will be provided by the Chatbot. It will guide you about the various keywords that can be used to get some meaningful results back and is a great way to recapitulate the same.

🟢 Brands endpoint: When you type the Brands keyword, the bot will provide you with the brand names that are registered with the project (on the website to be specific)

🟠 Products of a brand: If one has to fetch the products for a particular brand, then it can be done using the keyword brands/{brandName} and the response will be syntactically tailored according to the WhatsApp markup and will display all of the important stuff about the product

🟢 About a brand: This endpoint will give a small description/summary about the requested brand so that the buyer can have a look at it

🟣 Buyer Details: If the buyer wants to see his/her registered details, then this endpoint can be used. It contains a great field, NOTIFICATIONS and the buyer can toggle it via the nudge command

🔴 Nudge: For a buyer, it is not possible to always be online and thus it may be hard to track the newly added products by a brand. So, through this nudge endpoint, the user can turn on/off the new products' addition notification for the brands of his/her interests. Say, the buyer is interested in clothing brands and Adidas is a registered company that deals in the clothing space. So, when Adidas will add a product, then the buyer will be sent a notification. Isn't that great, because it lets the user be notified about the products of his/her interest and thus the buyer will always be informed about the latest updates within the project.
The below image shows the notification that is dropped for the same in the buyers' WhatsApp account:

How we built it
We split the type of UI that one has to make. So, each one of us is working for three different UIs: website, extension, and the WhatsApp chatbot. We wanted to have simplicity in the UI and we maintained it, but we also ensured that the functionalities were up to the mark. Basic stuff is being used to make it: HTML, JS, Node js, PHP, Python. But because it synchronizes these many things at a time and provides the end-user with a lot of options to interact with the project is a great way to showcase the project's full potential.
Challenges we ran into
1️⃣ We have used the RedHat Openshift platform, but the API (Intel OpenVINO) was recently shifted from v1 to v2. So, we have to dig around and find a way to make ou Python-ML model get up and running
2️⃣ Making an extension that incorporated Descope's SDK calls was challenging initially because we had to dig up their resources and see how to replicate the whole flow process via SDK calls.
3️⃣ Adding MFA and incorporating Descope's flow in the website was also daunting because we had to master how the flows work and thus adapt it to our needs accordingly
Accomplishments that we're proud of
From writing the first LOC to finalizing the project, we faced many roadblocks, but we are proud of the fact that we overcame each one of those and have finally submitted our project.
What we learned
Descope and Codacy :)

Log in or sign up for Devpost to join the conversation.