Python package that leverages AI to automatically tailor your resume to specific job descriptions, optimizing your resume content to highlight relevant skills and experiences.
- Generates editable Markdown files so you can modify the AI-optimized resume.
- LLM-powered scraper for pulling job descriptions.
- Supports custom CSS styles when generating a PDF resume.
- Stores all jobs in a sqllite database so you can track your applications.
- Leverages Pydantic output parsing for consistent generation.
- Intended to be plug-and-play with different models - succesfully tested with:
- o1-preview
- gpt-4o
- claude-3-5-sonnet-20241022
- o3-mini
Note: I built this for my own use - sharing in case it is useful to others.
pip install yaart
-
Create
base_resume.md
following thesample.md
template in theMarkdown
folder
import asyncio
import os
from pathlib import Path
from langchain_openai import ChatOpenAI
from yaart import optimize_resume
# Job description text (optional if providing URL)
jd_text = """
Optional text in case the scraper fails...
"""
async def main():
# Initialize LLM
llm = ChatOpenAI(
model="gpt-4o",
temperature=0.2,
api_key=os.getenv("OPENAI_API_KEY")
)
result = await optimize_resume(
llm=llm,
company="ExampleCorp",
jd_url="https://example.com/job-posting",
base_resume_path="path/to/base_resume.md",
jd_string=jd_text, # Optional, will scrape from URL if not provided
output_dir=Path("output") # Optional, defaults to current directory
)
print(f"Generated files:")
print(f"Markdown: {result['markdown_path']}")
print(f"PDF: {result['pdf_path']}")
print(f"Role: {result['role']}")
if __name__ == "__main__":
asyncio.run(main())
- (Optional) If you want to modify your generated markdown resume, find it in the generated
Markdown
directory. Once you would like to generate a PDF from it, run the following:
from md2pdf.core import md2pdf
if __name__ == "__main__":
md2pdf("PDF/sample.pdf",
md_file_path="Markdown/sample.md",
css_file_path="styles.css",
)
- Python 3.8+
- LangChain compatible LLM (OpenAI, Anthropic, etc.)
- Base resume in markdown format
-
Job Description Analysis:
- Extracts key requirements, skills, and responsibilities
- Structures information into standardized format
- Caches parsed results in local SQLite database
-
Resume Optimization:
- Matches skills and experience with job requirements
- Prioritizes relevant achievements
- Incorporates key technical terms and phrases
- Maintains professional tone and factual accuracy
-
Output Generation:
- Creates tailored Markdown version
- Generates styled PDF using custom CSS
- Preserves original resume structure
MIT
Contributions welcome! Please feel free to submit a Pull Request.