ats-optimizer / core /optimizer.py
CapProj's picture
Upload 25 files
5dec17e verified
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)