Skip to main content

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.

lint test codecov License: MIT

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

  1. Create base_resume.md following the sample.md template in the Markdown 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 (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())
  1. (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",
    )

Prerequisites

  • Python 3.8+
  • LangChain compatible LLM (OpenAI, Anthropic, etc.)
  • Base resume in markdown format

How It Works

  1. Job Description Analysis:

    • Extracts key requirements, skills, and responsibilities
    • Structures information into standardized format
    • Caches parsed results in local SQLite database
  2. Resume Optimization:

    • Matches skills and experience with job requirements
    • Prioritizes relevant achievements
    • Incorporates key technical terms and phrases
    • Maintains professional tone and factual accuracy
  3. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yaart-1.0.0.tar.gz (11.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yaart-1.0.0-py3-none-any.whl (12.5 kB view details)

Uploaded Python 3

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

Hashes for yaart-1.0.0.tar.gz
Algorithm Hash digest
SHA256 6abbbd464e46e6420ee9adff29ceab1f62c28fe7fb9041a2cab8baa853ef5bb2
MD5 c45cd07250a1aed91e4512a2cc969a5f
BLAKE2b-256 08672d4a9b56c1eba465e2d9ea42060d1b5b57a90af9a68f10b6255455f09b95

See more details on using hashes here.

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

Hashes for yaart-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3d46cdf8571e2178d61229d6a02778b79cb1a1d62f88400d797c231206a94a37
MD5 1ac6c0c8e3b8836a2977241e8a91c527
BLAKE2b-256 a241cafcc3fbfabdff7ab6a60c515160e65ead8ba2fb8cad79849a7d3a950dda

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page