Inspiration
As STEM students, we often find that when preparing for interviews, no matter how we practice, it is impossible to emulate the unique environment of being in a real interview. Whether it be the quick thinking required to answer unexpected questions on the spot, or the face-to-face interaction that is lacking when practicing using sites like Leetcode, nothing can quite come close to the true experience. We've also often found that practice material online can be generic, and doesn't provide useful feedback needed for the candidate to learn and improve. That's why we built AInterview, a platform that lets users conduct speech-to-speech mock interviews for their desired roles and get real, quantifiable feedback, all powered by AI.
What it does
With AInterview, users submit the details for a given job listing (including the job's title, company and description). From this listing, an AI agent will conduct an interview tailored to the job description, asking questions specifically revolving around the domain that the user chose. Interviews can also be conducted in a variety of styles, from behavioural to technical and more. Once the interview is over, AInterview gives feedback best suited to helping the user improve their interviewing skills. Users can also track their improvement over time with our grading system, that assigns accurate numerical grades based on the user's performance.
How we built it
For the frontend, we opted to use the React framework for a clean, responsive user experience, and for the backend, we used Python, including FastAPI for seamless, efficient API creation. To handle audio generation and user audio input, we integrated ElevenLab's agent technology to allow for real-time, websocket-based communication, resulting in a seamless, natural end-user experience. For text generation, and more specifically for reasoning and user feedback generation, we employed the Gemini API.
Challenges we ran into
While developing AInterview, one of our major focuses was to customize the ElevenLabs agent so that it produced relevant questions that perfectly fit both the job description and interview type. In order to achieve this, we built three different templates of customizable prompts for a single agent, while also fine tuning the prompt consistently. This same problem also extended to the generation of fair, accurate feedback. In the end, we feel we were able to find the perfect sweetspot for our agent's personality and response structure.
Another challenged we faced was to create infrastructure that supports a natural interview environment. We wanted to reduce user input as much as possible, excluding of course the user's voice input. In practice, this was implemented by avoiding a static, discrete question structure where the user has to input manually to move on to the next question (such as with a button). Instead, based on the context, the agent will automatically detect when the user is done responding, and in turn respond accordingly. We wanted to prioritize a natural-feeling environment that mimics, as closely as possible, the experience of interviewing with another human.
Accomplishments that we're proud of
We're proud that we were not only able to create a seamless, complete experience that lets users interact with our product from account creation to interviewing, but that we were able to put the tools at our disposal to smart, efficient use. Overall, we're proud of the ways that we managed to integrate ElevenLab's agent technology seamlessly into AInterview, as well as having being able to create a complete product.
Additionally, while it was a challenge, we are proud to have achieved our goal of creating a natural-feeling user experience that minimizes non-audio user input when possible. We feel that this truly allows our users to 'get in the zone', and in turn will be better prepared for the real interviews ahead.
What we learned
We learned that we'd much rather use Javascript for a hackathon rather than Typescript...
In all seriousness, we learned a lot about both full-stack architecture and the coordination required between front- and back-end, but also the need for efficient time-management, particularly when building a project over a time-span as brief as a day and a half.
What's next for AInterview
Firstly, we hope to scale AInterview to support more users, whether that be optimizing the way that we integrate ElevenLab's agents into our product, or scaling our backend databases. Furthermore, we'd love to implement additional features, including an avatar/3D model representing the interviewer that moves and reacts naturally as an interviewer would, further strengthening the real-time simulation aspect of AInterview. Finally, we are particularly interested in pursuing is a web-scraper that scrapes job listing data and displays those listings on AInterview itself, allowing users to both find new opportunities and easily practice from a preset list of those current job listings at the same time.
Log in or sign up for Devpost to join the conversation.