best / backend /app /api /routes /interview.py
anky2002's picture
feat: Add Job Alerts, Admin Dashboard, Semantic Search (pgvector), Interview Prep Agent, Chrome Extension
3d3d997 verified
Raw
History Blame Contribute Delete
2.73 kB
"""
Interview Prep API routes.
"""
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
from app.api.deps import CurrentUser, DBSession
from app.agents.interview_prep import InterviewPrepAgent, InterviewType
router = APIRouter(prefix="/ai/interview", tags=["interview-prep"])
class GenerateQuestionsRequest(BaseModel):
job_title: str
job_description: str
resume_text: str | None = None
interview_type: str = "general"
num_questions: int = 5
class CompanyResearchRequest(BaseModel):
company_name: str
job_title: str | None = None
company_description: str | None = None
class EvaluateAnswerRequest(BaseModel):
question: str
answer: str
job_title: str | None = None
class StarStoryRequest(BaseModel):
experience_bullet: str
target_question_type: str = "general"
@router.post("/questions")
async def generate_interview_questions(
data: GenerateQuestionsRequest, db: DBSession, user: CurrentUser
):
"""Generate tailored interview questions based on job and resume."""
agent = InterviewPrepAgent(db)
try:
interview_type = InterviewType(data.interview_type)
except ValueError:
interview_type = InterviewType.GENERAL
result = await agent.generate_questions(
job_title=data.job_title,
job_description=data.job_description,
resume_text=data.resume_text,
interview_type=interview_type,
num_questions=data.num_questions,
)
return result
@router.post("/company-research")
async def research_company(data: CompanyResearchRequest, db: DBSession, user: CurrentUser):
"""Get company research brief for interview preparation."""
agent = InterviewPrepAgent(db)
result = await agent.research_company(
company_name=data.company_name,
job_title=data.job_title,
company_description=data.company_description,
)
return result
@router.post("/evaluate-answer")
async def evaluate_practice_answer(
data: EvaluateAnswerRequest, db: DBSession, user: CurrentUser
):
"""Evaluate a practice interview answer with coaching feedback."""
agent = InterviewPrepAgent(db)
result = await agent.evaluate_answer(
question=data.question,
answer=data.answer,
job_title=data.job_title,
)
return result
@router.post("/star-story")
async def generate_star_story(data: StarStoryRequest, db: DBSession, user: CurrentUser):
"""Convert a resume bullet into a full STAR interview story."""
agent = InterviewPrepAgent(db)
result = await agent.generate_star_story(
experience_bullet=data.experience_bullet,
target_question_type=data.target_question_type,
)
return result