Yet Another AI Resume Tool
Project description
YAART - Yet Another AI Resume Tool
Python package that leverages AI to automatically tailor your resume to specific job descriptions, optimizing your resume content to highlight relevant skills and experiences.
Features:
- 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, and claude-3-5-sonnet-20241022
Note: I built this for my own use - sharing in case it is useful to others.
Installation
pip install yaart
Quick Start
-
Create
base_resume.mdfollowing thesample.mdtemplate in theMarkdownfolder
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 (GPT-4 Optimized)
llm = ChatOpenAI(
model="gpt-4o", # GPT-4 Optimized is default
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
Markdowndirectory. 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",
)
Prerequisites
- Python 3.8+
- LangChain compatible LLM (OpenAI, Anthropic, etc.)
- Base resume in markdown format
How It Works
-
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
License
MIT
Contributing
Contributions welcome! Please feel free to submit a Pull Request.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file yaart-1.0.0.tar.gz.
File metadata
- Download URL: yaart-1.0.0.tar.gz
- Upload date:
- Size: 11.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.12.3 Linux/6.8.0-1020-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6abbbd464e46e6420ee9adff29ceab1f62c28fe7fb9041a2cab8baa853ef5bb2
|
|
| MD5 |
c45cd07250a1aed91e4512a2cc969a5f
|
|
| BLAKE2b-256 |
08672d4a9b56c1eba465e2d9ea42060d1b5b57a90af9a68f10b6255455f09b95
|
File details
Details for the file yaart-1.0.0-py3-none-any.whl.
File metadata
- Download URL: yaart-1.0.0-py3-none-any.whl
- Upload date:
- Size: 12.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.6.1 CPython/3.12.3 Linux/6.8.0-1020-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d46cdf8571e2178d61229d6a02778b79cb1a1d62f88400d797c231206a94a37
|
|
| MD5 |
1ac6c0c8e3b8836a2977241e8a91c527
|
|
| BLAKE2b-256 |
a241cafcc3fbfabdff7ab6a60c515160e65ead8ba2fb8cad79849a7d3a950dda
|