Behaviourly

Inspiration

Preparing for interviews is stressful, and most people do not have access to realistic, personalized practice. Generic interview prep tools often give broad advice, but they do not reflect the actual company, role, or context of a candidate’s upcoming interview.

We wanted to solve that problem by building something smarter and more practical: a mock AI interview platform that does more than just ask random questions. We were inspired by the idea of creating a tool that could automatically detect upcoming interviews, prepare users with role-specific context, and then simulate a tailored mock interview experience with real performance feedback.

That idea became Behaviourly.

What it does

Behaviourly is a Mock AI Interview Web App that helps users prepare for real interviews in a much more personalized way.

Here is how it works:

  • Behaviourly uses Google Gemini API and Auth0 to securely access and scrape a user’s email for upcoming interview information
  • Users can also manually add interviews if needed
  • Interview data is then stored in a PostgreSQL database using Supabase
  • That information is sent to a dashboard, where Behaviourly prepares a tailored mock AI interview

Before the mock interview starts, the user is shown an interview briefing screen that includes:

  • the role
  • the company
  • key values
  • skills the employer is looking for
  • tailored tips for the interview

After that, the interview begins. The user answers the tailored interview questions through their camera, and Behaviourly records the responses.

Using Presage, the platform analyzes:

  • confidence
  • performance
  • score
  • weak points or worst moments during the interview

Once the interview is complete, Behaviourly shows the user:

  • separated clips of their weakest moments
  • targeted feedback and critique for each clip
  • overall interview statistics
  • a final interview score

In short, Behaviourly turns interview prep into a personalized, end-to-end practice experience rather than a one-size-fits-all guessing game.

How we built it

Behaviourly was built as a full-stack AI web application combining authentication, email-based context extraction, backend processing, AI-generated interview preparation, and performance analysis.

Frontend

We built the frontend using:

  • React
  • Vite

The frontend handles the user dashboard, interview briefing flow, and interview experience. We focused on building a structured interface so users could move through the preparation process clearly:

  1. Detect or add interview
  2. View interview briefing
  3. Start mock interview
  4. Review flagged weak moments
  5. See final score and statistics

Backend

We built the backend using:

  • FastAPI
  • Python

The backend manages interview ingestion, dashboard preparation, communication with the AI services, and the flow of data between the frontend and database.

We created backend routes to support features like:

  • interview context retrieval
  • dashboard population
  • tailored preparation content
  • interview session handling

Authentication and email workflow

To support user accounts and email-based interview detection, we used:

  • Auth0
  • Google Gemini API

This allowed us to authenticate users securely and process relevant email data to identify upcoming interviews. For users who do not want to rely on automatic email detection, we also included a manual interview-entry option.

Database

We used:

  • PostgreSQL
  • Supabase

This allowed us to store interview details, user-related information, and the data needed to drive the personalized dashboard and interview flow.

Interview preparation layer

Once interview information is detected or entered, Behaviourly generates a tailored preparation experience. The interview briefing screen is designed around the following structure:

[ \text{Interview Briefing} = {\text{Role}, \text{Company}, \text{Key Values}, \text{Skills}, \text{Tips}} ]

This gives the user a focused understanding of what they are walking into before they begin the mock interview.

Interview analysis

During the interview, the user responds to tailored prompts through their camera. We integrated Presage to analyze behavioral and confidence-based aspects of performance.

This analysis helps Behaviourly identify:

  • lower-confidence moments
  • weaker responses
  • moments where delivery can improve

At the end of the process, these moments are surfaced as individual clips with associated feedback, allowing the user to review exactly where they struggled and how to improve.

Challenges we ran into

One major challenge was connecting so many moving parts into one smooth experience.

We were not just building a chatbot or a static dashboard — we were building a complete workflow involving:

  • authentication
  • email-based interview detection
  • database persistence
  • AI-generated interview preparation
  • camera-based interview responses
  • behavioral analysis
  • clip-based feedback review

Another challenge was making the preparation output structured enough for the UI. Since our interview briefing screen needed specific categories like key values, skills, and tailored tips, we had to design the backend and AI flow so the information was organized and consistent.

We also ran into integration and environment issues while working across the frontend, backend, authentication, database setup, and Python dependencies. Getting all of those systems to work together reliably under hackathon time pressure was one of the hardest parts of the project.

A final challenge was designing feedback that feels actionable. It is one thing to score an interview, but it is much more useful to actually show users their weakest moments and explain what went wrong. Building around that experience pushed us to think carefully about how users learn from critique.

What we learned

Behaviourly taught us a lot about building real AI-powered products beyond simple text generation.

We learned:

  • how to build a full-stack AI web application
  • how to use Auth0 for secure authentication
  • how to connect a React + Vite frontend with a FastAPI backend
  • how to structure and store application data using PostgreSQL and Supabase
  • how to design AI-powered systems around a real user workflow
  • how important output structure is when AI needs to support a frontend product
  • how valuable it is to turn raw analysis into feedback users can actually improve from

Most importantly, we learned that a strong AI product is not just about using AI — it is about connecting data, interface design, analysis, and user experience into something genuinely useful.

What's next for Behaviourly

We see a lot of potential for Behaviourly beyond the hackathon.

Some next steps we would explore are:

  • expanding support for more email and calendar integrations
  • improving interview detection accuracy
  • generating even more role-specific and company-specific questions
  • giving users historical progress tracking across multiple mock interviews
  • offering trend analysis over time for confidence, clarity, and performance
  • adding recruiter-style evaluation categories for different industries
  • making the clip-feedback system even more interactive

Our long-term vision is to make Behaviourly a platform that helps users practice interviews with the same level of personalization and insight that they would get from a real coach.

Final thoughts

Behaviourly was built to make interview preparation smarter, more targeted, and more reflective. Instead of asking users to prepare blindly, it detects or stores upcoming interviews, briefs them on what matters most, runs a personalized mock interview, and then shows them exactly where they need to improve.

By combining AI-generated preparation with behavioral analysis and clip-based critique, we created a tool that helps people practice with purpose — not just practice more.

We believe Behaviourly can make the interview process less intimidating and much more effective for students, job seekers, and anyone trying to present their best self.

Built With

  • auth0
  • axios
  • concurrency
  • elevenlabs-api
  • eslint
  • fastapi
  • flask
  • gmail-api
  • google-gemini-(google-genai)
  • google-oauth-2.0
  • javascript
  • mediadevices/getusermedia
  • mediarecorder
  • postgresql
  • python
  • python-dotenv
  • python-multipart
  • react
  • react-dom
  • react-router-dom
  • recharts
  • requests
  • sqlalchemy
  • sqlite
  • uvicorn
  • vite
  • web-speech-api-(speechsynthesis)
  • websocket
Share this project:

Updates