Skip to main content
The interview practice feature allows you to engage in realistic mock interviews with an AI interviewer that adapts questions based on your background and the specific role you’re targeting.

How it works

The AI interviewer analyzes both your CV and the job description to generate relevant, personalized questions that simulate a real interview experience.
1

Start your interview

After uploading your CV and job description, navigate to the interview page. The AI generates an opening question tailored to your most relevant experience for the role.The first question is designed to be:
  • Warm and professional
  • Related to your background
  • Open-ended to encourage detailed responses
2

Answer questions naturally

Type your responses in the text area and submit them. The interview supports:
  • Natural conversation flow
  • Up to 8 questions per session
  • Real-time progress tracking
Press Enter to submit your answer, or Shift+Enter to add a new line within your response.
3

Receive adaptive follow-up questions

Based on your answers, the AI generates follow-up questions that:
  • Build naturally on your previous responses
  • Explore different aspects of your experience
  • Assess skills mentioned in the job description
  • Maintain a conversational and engaging tone
4

Complete the interview

After answering all 8 questions, you’ll see a completion message and can proceed to view your comprehensive feedback and performance analysis.

Interview interface

The interview page displays:

Progress tracking

A visual progress bar shows how many questions you’ve answered out of the total 8 questions.
{
  "question_count": 5,
  "max_questions": 8,
  "is_started": true,
  "is_complete": false
}

Conversation history

All questions and answers are displayed in a chat-like interface:
  • AI messages appear on the left with a blue background
  • Your responses appear on the right with a green background
  • Messages auto-scroll as the conversation progresses

Answer input

A text area allows you to type detailed responses with:
  • Minimum content validation (cannot be empty)
  • Multi-line support
  • Auto-focus for seamless typing
  • Loading indicator while AI generates the next question

Question generation

The AI interviewer uses sophisticated prompts to ensure questions are relevant and realistic:

Opening question

Generated based on:
  • Your CV content (up to 2000 characters analyzed)
  • Job description requirements (up to 2000 characters analyzed)
  • Target job title and company name

Follow-up questions

Generated by considering:
  • The complete conversation history
  • Your CV context (up to 1500 characters)
  • Job requirements (up to 1500 characters)
  • Current progress in the interview
The AI is designed to assess skills mentioned in the job description while maintaining a natural, conversational flow.

Session state management

Your interview progress is automatically saved, allowing you to:
  • Resume incomplete interviews anytime
  • View your conversation history
  • Pick up exactly where you left off
The system tracks:
  • Each question asked by the AI
  • Each answer you provide
  • Timestamps for all messages
  • Overall interview completion status

Best practices

  • Be specific and provide concrete examples
  • Use the STAR method (Situation, Task, Action, Result) when describing experiences
  • Refer to relevant projects or achievements from your CV
  • Keep answers focused but detailed enough to demonstrate your expertise
Once submitted, answers cannot be edited. However, you can clarify or expand on previous answers in subsequent responses if the AI asks related follow-up questions.
Aim for 2-4 sentences for most questions. Provide enough detail to showcase your skills without overwhelming the interviewer. The AI adapts based on your response style.
Yes! Your complete conversation history is preserved and can be reviewed on the feedback page along with your performance analysis.

Technical details

The interview practice feature is powered by:
  • AI providers: Google Gemini or OpenRouter
  • Adaptive questioning: Questions build on your previous responses
  • Real-time updates: HTMX enables seamless question/answer flow without page refreshes
  • Session persistence: All data stored in SQLite database
# Interview progress is tracked with:
class InterviewService:
    MAX_QUESTIONS = 8
    
    def get_interview_progress(self, session_id: int) -> dict:
        question_count = self.message_repo.count_messages(
            session_id, role="assistant"
        )
        return {
            "question_count": question_count,
            "max_questions": self.MAX_QUESTIONS,
            "is_started": question_count > 0,
            "is_complete": question_count >= self.MAX_QUESTIONS
        }

Build docs developers (and LLMs) love