Inspiration
The inspiration to create “converse.ai” came from my curiosity to learn about how the concept of an AI-powered chatbot works on a deeper level. Plus, taking part in this hackathon has provided me with an opportunity to go in-depth not only about the AI functionality but also about keeping my application secured using Okta.
What it does?
In this application, you can create an account with credentials and also with Okta, which is OIDC-compliant. Apart from that, this application comes with SCIM functionality for managing users. Once the user logs in through their account, he/she/they are greeted to their dashboard. By clicking on the upload button on the right sidebar, they can upload a PDF document. Currently, I have kept the page limit to 1 for free users, 2 for Pro users, and 5 for enterprise users.
What are enterprise users? In this application, an enterprise user is defined as someone who belongs to an organization and has an external ID. In this application, the eternal ID is generated by Okta. In the demo video, I will showcase how I can successfully do CRUD functionality from the Okta admin console. Also, in this application, if a user logs in with their organizational credentials, then all the files uploaded by any member of the organization are visible, which makes this application more efficient. If the user is deprovisioned from the Okta dashboard then the active status of the user becomes false and the user loses excess to the organizational documents.
How did I build it?
The tech stack for my application is as follows:
- next.js as the framework
- next-auth with credentials and Okta for authentication
- mysql database from aiven cloud to store information.
- Pinecone as the vector database.
- Open AI for embeddings
- llama 2 from anyscale to generating responses.
- shadcn/ui and tailwind for components and styling
- langchain to do semantic search
Challenges I ran into
The journey for this hackathon has been like a rollercoaster ride. It had its ups and downs, but I am happy to finally finish this application as intended. Without the support from the Okta team, it would not have been possible for me to complete this application.
I was introduced to the whole concept of SCIM a couple of days ago and in the beginning, I was having difficulties wrapping my head around it since it was a new concept but with the YouTube video from the enterprise series and also the blog post, I was able to have a deeper understanding of it and was able to implement that concept in my application.
Accomplishments that I am proud of
A few of my accomplishments that I am proud of are as follows:
- Integrating SCIM
- Integrating Okta as a provider to maintain OIDC standards.
- Deeper understanding of pinecone integration. Since I am on the free plan for the Pinecone database, a lot of features that would have made it easier for me are not available. On this application, I have to keep track of the index of the file so that it gets deleted from the vector database once it is deleted. Also, those indexes are referenced to provide answers to the user's question.
What have I learned?
Taking part in this hackathon has taught me how easy Okta makes user management. With a few clicks, you can add, remove, and update a user. My words may not justify the complexity it solves but their service does.
What's next for converse.ai?
My plan after the hackathon with converse.ai is to make it perfectly work for this use case, including having a long memory for the conversation. This will be an interesting topic to go into depth on since I believe some problems will arise due to token length.
Limitations
I realized this limitation at the last moment since it was working fine in the local environment. Due to the limits set by Vercel on their free plan, some files may be indexed.
Built With
- nextjs
- okta

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