Anil Turaga • May 29, 2025
A walkthrough of the features our team of five developed over the course of two weekends for an AI-powered interview tool.
Recently, some of my colleagues and I participated in a hackathon. The problem statement was simple: build an MVP for a tool that leverages AI for taking interviews.
Why
Apart from the obvious reason of hackathon participation, almost all of us has recently been taking a lot of interviews. This product was our attempt to alleviate some of the pain points we were facing. Let me give you a quick rundown of the process of filling an open position from the pov of an org.
Talent acquisition
Job posting
Filtering applicants
Candidate interview
Salary negotiation
Offer letter
You can already see that apart from the interview step, all other steps are handled by dedicated resources such as HR, recruiters, etc. The interview step being one of the most important steps in the process, is handled by engineers as an
additional responsibility.
The implications of conducting interviews as an additional responsibility have lasting effects on the
engineer's productivity.
Cognitive overload on a workday with a senior-level interview
Work Prep/Decompress Interview Post-Interview
Worst case is that half of an engineer's day could be drained away because of a strong technical interview. This becomes a big problem if your company is going through sudden growth.
You want the engineers to focus on their core responsibilities to retain the growth but also scale up the team to sustain it.
And so, we have decided to build a tool that would help the interviewers to conduct interviews with reduced cognitive load.
What
We had a relatively short discussion on automation vs augmentation when it comes to the role of AI in interviews. We decided to go with augmentation because it's hard to get candidates to agree to be questioned and judged solely by an AI.
How
I am quickly going to walkthrough the features we have built. I will first cover the screen interviewers are meant to use while taking interviews. This screen is meant to be very information dense to keep the interviewer fully informed with no input. This is the screen that also took the most amount of time to build.
There are 4 sections in this screen:
- The top left section is for candidate's video stream
- The top right section is for live transcript of both the interviewer and the candidate
- The bottom left section covers all the information necessary such as the candidate's CV, job description, etc.
- The bottom right section is where GenAI comes in heavily. It has a stack of constantly updated suggested questions based on the candidate's CV, job description and live transcript.
Let me breakdown each section in detail.
Candidate stream(Left top section)
We needed a way to display the candidate's video stream embedded in the screen. We explored with some webRTC libraries but they were not performing well in unstable network conditions and the scalability aspect was also not very clear.
We didn't want to reinvent the video conferencing wheel and so we decided to support usage of existing tools like Google Meet, Zoom, etc. We also wanted to support all those tools without any additional effort. We ended up using a nice trick for this.
We requested screen sharing permission from the interviewer and they are supposed to share the tab which has the video conferencing tool open. We then capture the output of the screen sharing tab and also seperately capture the input of the microphone of the interviewer.
This way, we capture two streams. One stream corresponds to the video and audio stream of the candidate and the other stream corresponds to the audio stream of the interviewer which makes turn based transcription possible.
Transcript(Right top section)
Since we have seperate audio streams for the candidate and the interviewer, it was a matter of finding the right transcription service that is both performant with acceptable transcription quality.
We tried OpenAI Whisper first but it didn't work well for Indian accented English. We ended up with GCP's Chirp model service offering.
CV & JD(Left bottom section)
One personal pain point was working with the never ending formats of CVs and JDs. We wanted to create a common format for both of them so that reading it would be more about absorbing relavent information than hunting for it.
We used tool calling of LLMs to extract structured information from the CV and JD. We use this extracted information to generate suggested questions and also as options for the structured input field(More on that later).
Suggestions(Right bottom section)
This is by far the more important section. Interviewers spend a good amount of time before and during the interview to come up with appropriate questions. The more senior level you are interviewing, the more time you spend on this as you cannot simply use questions from a question bank. The questions need to be tailored to the candidate and the job description in addition to being appropriate in the flow of the interview.
Our approach was to use GenAI to generate suggestions based on the CV, JD and the live transcript. We want to present suggested questions every couple of seconds on what the interviewer can ask. These questions could be about a new topic or a follow up to the previous question.
We use a stack and keep adding new suggestions to the top of the stack. The interviewer can choose to ask any of the questions in the stack. They also have the option to drag any of the questions to any position in the stack. They also can pin any of the questions to the top of the stack that they'd like to ask later in the interview.
We also wanted to give the interviewer a way to request for suggested questions that are not in the stack. For that, we added a structured input field where we have some placeholders in a predefined query. We suggest options for each placeholder based on the parsed information from the CV and JD. This way, the interviewer can use any number of combinations of the extracted information to generate questions. As an escape hatch, we also added a free text input field.
Code Editor
I generally used to use tools like rustpad for coding tasks. We wanted to extend this functionality to executing the code and also some anti cheat measures.
We started off with supporting python and javascript both executing in the candidate's browser.
We also added monitoring for tab switching and pasting code into the editor. While this may not be the best implementation, it was a good enough solution for our use case.
Other screens
I have covered the middle part of the interview process in detail. Let me now quickly cover how the creation of an interview and also the ending of an interview is handled.
Managing & creating interviews
Creating an interview
Evaluating an interview
Conclusion
We have been quite pleased with the final product. We even went as far as using the application in real interviews and has seen a glimpse of the potential of the application.
However, we are not entirely sure if we will continue developing this product due to bandwidth constraints of all the developers involved.
Full disclosure: We didn't win the hackathon. We were however, part of the top 6 teams.
Team members:
- Gaurav Gupta
- Prasanth Kumhar
- Prahastha Shankesi
- Mohit Singh
- Anil Turaga