Spaces:
Sleeping
Sleeping
| import requests | |
| from docx import Document | |
| from data_models.resume import Resume | |
| from ats_optimizer.data_models.job_description import JobDescription | |
| from ats_optimizer.data_models.resume import Resume | |
| class ResumeOptimizer: | |
| def __init__(self, api_key: str): | |
| self.api_key = api_key | |
| # self.template = "templates/professional.docx" | |
| self.template = "templates/Ramen_DXC.docx" | |
| def rewrite_resume(self, resume: Resume, jd: JobDescription) -> Resume: | |
| """Step 4: AI rewriting with formatting preservation""" | |
| prompt = self._build_optimization_prompt(resume, jd) | |
| response = requests.post( | |
| "https://api.deepseek.com/v1/chat/completions", | |
| headers={"Authorization": f"Bearer {self.api_key}"}, | |
| json={ | |
| "model": "deepseek-chat", | |
| "messages": [{ | |
| "role": "user", | |
| "content": prompt | |
| }], | |
| "temperature": 0.7 | |
| } | |
| ) | |
| # Apply optimized content to original format | |
| optimized_content = response.json()["choices"][0]["message"]["content"] | |
| return self._apply_formatting(resume, optimized_content) | |
| def _apply_formatting(self, original: Resume, new_content: str) -> Resume: | |
| """Preserve original formatting with new content""" | |
| doc = Document(original.file_path) | |
| # Advanced formatting preservation logic | |
| return Resume.from_docx(doc, new_content) |