from dataclasses import asdict, dataclass, field from typing import Any, Dict, List @dataclass class ResumeProfile: skills: List[str] = field(default_factory=list) languages: List[str] = field(default_factory=list) frameworks: List[str] = field(default_factory=list) tools: List[str] = field(default_factory=list) target_titles: List[str] = field(default_factory=list) locations: List[str] = field(default_factory=list) experience_level: str = "entry" @dataclass class CompanyRecord: company: str careers_url: str = "" source: str = "default" meta: Dict[str, str] = field(default_factory=dict) ats_type: str = "" ats_identifier: str = "" priority: int = 0 @dataclass class JobPosting: company: str title: str location: str url: str department: str = "" description: str = "" ats: str = "unknown" source_ats: str = "unknown" resolved_url: str = "" employment_type: str = "" posted_date: str = "" is_remote: bool = False is_entry_level: bool = False failure_reason: str = "" raw_payload: Dict[str, Any] = field(default_factory=dict) def to_dict(self) -> Dict[str, Any]: payload = asdict(self) payload["job_url"] = payload.pop("url") payload["source_ats"] = payload.get("source_ats") or payload.get("ats", "unknown") return payload @dataclass class JobMatch: company: str title: str location: str url: str score: float explanation: str ats: str @dataclass class CompanyRanking: company: str company_score: float match_count: int best_role: str ats: str explanation: str