Inspiration
We heard of the digital human tool from NVIDIA's website and knew we wanted to work with it, but we were not sure exactly how to make it useful. We then tried to think of common problems that we all might face. First, we thought of a Mental Health assistant using the Digital Human Blueprint, but we were still bouncing around the ideas since we weren't sure how useful that would be. We then thought about how it might fit our use case to create a Digital Human assistant as an interviewer to help students practice their technical interviewing skills.
What it does
Our tool generates open-ended coding challenges that evolve dynamically through a series of sub-tasks. It verifies solutions, provides real-time chatbot guidance, and delivers everything through an NVIDIA digital avatar, making the experience immersive and engaging. Tasks are changed dynamically through the LLM to adapt to the candidate's questions and skills. Additionally, the candidate can ask questions in our chatbox that take into context the entire interview thus far, including all past tasks.
How we built it
We used NVIDIA Audio2Face for real-time avatar generation, Google Gemini for our LLM backend, and Gradio for our interactive frontend. AWS hosts our instances and stores data for the avatar, ensuring smooth performance and scalability. The backend processes user input, verifies correctness, and generates feedback using the LLM, while the front-end interface allows users to code, interact with the chatbot, and engage with the digital interviewer.
Challenges we ran into
Setting up the NVIDIA Digital Human system was overall very challenging, especially when we initially had trouble getting an instance with the required GPU. We also started with a more complex frontend framework, which proved difficult to work with, leading us to switch to Gradio after some time for a more streamlined experience.
Accomplishments that we're proud of
We're proud to have integrated the NVIDIA Digital Human, bringing a more immersive interview experience to life. Additionally, we’re proud of embedding an IDE directly into our front end, allowing users to code directly on our website. Our chatbot also stands out by maintaining context from the user’s previous actions and what’s happening inside their IDE, ensuring more personalized and relevant feedback. Another trick was dealing with advanced prompt engineering. We leveraged modular markdown tag-detection systems to streamline our prompt engineering.
What we learned
We learned the importance of balancing cutting-edge technologies with practical usability, particularly when integrating real-time avatar generation and LLM-driven feedback. The complexity of setting up the NVIDIA Digital Human system taught us about the intricacies of AI-powered avatar creation and the importance of having the right resources for the job. Additionally, transitioning from a more complex frontend framework to Gradio highlighted the value of simplicity and usability in ensuring smooth user interaction. We also learned a great deal about state management, ensuring the chatbot maintains context across sessions. Furthermore, we gained valuable experience in prompt engineering, as we had to carefully design prompts that would guide the user while dynamically generating the next parts of the tasks.
What's next for InterviewMaster
The biggest improvement we can make is expanding the range of coding problems. Currently, our system can't track problems when the user is expected to provide specific input or handle files in the challenges. Enhancing the system to account for these interactions will make tasks more dynamic and closer to real-world scenarios.
Built With
- amazon-ec2
- amazon-web-services
- amazonpolly
- docker
- fastapi
- gemini
- gradio
- lambda
- ngc
- nvidianim
- python
Log in or sign up for Devpost to join the conversation.