import logging from langchain_core.messages import HumanMessage, SystemMessage from .llm import get_hf_token, invoke_chat logger = logging.getLogger(__name__) SYSTEM_PROMPT = """You are an ATS resume analyst. You MUST base your feedback ONLY on: - The provided ATS scores - The detected gaps DO NOT invent missing skills. DO NOT give generic advice. DO NOT mention motivation, confidence, or mindset. Write a concise analysis with exactly 3 sections: 1. Score Explanation 2. Weak Areas 3. Actionable Improvements Keep it under 500 words.""" def generate_resume_feedback(scores: dict, gaps: dict) -> str: user_prompt = f"""ATS Scores: Semantic: {scores['semantic_score']} Keyword: {scores['keyword_score']} Final: {scores['final_ats_score']} Detected Gaps: Missing Keywords: {gaps['missing_keywords']} Skill Overlap: {gaps['skill_overlap_percentage']}% Provide the 3-section analysis now.""" try: get_hf_token() return invoke_chat( [ SystemMessage(content=SYSTEM_PROMPT), HumanMessage(content=user_prompt), ] ) except ValueError as exc: logger.error("HF_TOKEN missing: %s", exc) return ( "AI feedback unavailable: HF_TOKEN is not configured. " "Add your Hugging Face token under Space Settings → Repository secrets." ) except Exception as exc: logger.exception("Feedback generation failed") return ( "AI feedback could not be generated. " "Check that HF_TOKEN has Inference access and the Space logs for details. " f"({type(exc).__name__})" )