from pydantic import BaseModel from typing import List, Optional, Dict, Any class SourcingRequest(BaseModel): job_description: str location: Optional[str] = None max_candidates: int = 10 batch_size: Optional[int] = 5 class CandidateProfile(BaseModel): name: str headline: str location: str profile_url: str company: Optional[str] = None education: Optional[str] = None experience_summary: Optional[str] = None class ScoreBreakdown(BaseModel): education_score: float career_trajectory_score: float company_relevance_score: float experience_match_score: float location_score: float tenure_score: float total_score: float class CandidateWithScore(BaseModel): profile: CandidateProfile score_breakdown: ScoreBreakdown outreach_message: Optional[str] = None class SourcingResponse(BaseModel): candidates: List[CandidateWithScore] total_found: int search_query: str processing_time: float