Skip to content

Allow users to select the interviewer's persona before interview #115

Description

@Jerry-Chiang-23

Feature Request

Add buttons for Interviewees to select Jim's (the interviewer) persona before the interview begins. For example, "Friendly & Guiding", "Strict & Challenging", and "Custom". Users could enter prompt to specify the interviewer's persona.

Motivation

Interviewers come in various styles in the real world. Some are supportive, offering step-by-step guidance and positive feedback, while others are strict, constantly challenging your assumptions and edge cases.

Currently, the AI interviewer (Jim) leans heavily toward a supportive and guiding persona. While this is great for learning, adding a customizable "Interviewer Persona" feature would allow users to practice under different stress levels and better adapt to the diverse interview dynamics they will face in actual technical interviews.

Implementation

Front-end

Add a dropdown menu named "Interviewer Persona" within the existing Optional interview context section. This dropdown will contain three options: "Friendly & Guiding", "Strict & Challenging", and "Custom". If the user clicks the "Custom" button, a textarea will show up and allow user to enter prompt to specify the interviewer's persona.

Back-end

  • Introduce a Rust enum in the backend module responsible for handling interview configurations to represent the three persona states. FriendlyAndGuiding and StrictAndChallenging can be standard variants, while Custom should be designed as a variant that holds a String payload (e.g., Custom(String)) to capture the user's custom text sent from the frontend.

    • FriendlyAndGuiding: "You are a supportive and guiding technical interviewer. Your goal is to evaluate the candidate while helping them succeed. If the candidate is stuck, provide gentle, step-by-step hints. Encourage them and maintain a positive, friendly tone throughout the interview."
    • StrictAndChallenging: "You are a strict and highly demanding technical interviewer. Your goal is to stress-test the candidate's knowledge. Do not provide direct hints. Frequently question their assumptions, ask them to prove why their code will not fail in edge cases, and demand optimal time and space complexity. Maintain a professional, cold tone."
    • Custom(String): Directly extracts and returns the user-defined string contained within the Custom enum variant.
  • Before establishing the chat session with the underlying LLM, invoke the mapping function to retrieve the final prompt string. Inject this string as the system_instruction in the initial request to strictly define the AI's subsequent behavior and persona.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions