A new package that leverages language models to transform structured YAML data into well-formatted resume PDFs. Users provide their resume details in YAML format, and the package extracts key informat
Project description
resume-yaml-builder
resume-yaml-builder is a Python package that turns structured YAML resume data into a clean, professional PDF resume using a language model. Provide your resume details in YAML format, and the package will validate the structure, extract the key information, and generate a well‑formatted PDF—all without requiring design skills.
✨ Features
- YAML‑driven: Write your resume once in a simple, human‑readable YAML file.
- LLM powered: Uses a language model (default: ChatLLM7) to verify and format the content.
- Flexible LLM backend: Supply any LangChain‑compatible LLM (OpenAI, Anthropic, Google, etc.).
- Zero‑code PDF output: Get a ready‑to‑use PDF resume.
📦 Installation
pip install resume_yaml_builder
The package depends on:
langchain-corelangchain-llm7(the default LLM backend)llmatch-messages
These will be installed automatically.
🚀 Quick Start
from resume_yaml_builder import resume_yaml_builder
yaml_input = """
name: Jane Doe
title: Data Scientist
contact:
email: jane.doe@example.com
phone: "+1-555-1234"
summary: >
Passionate data scientist with 5+ years of experience...
experience:
- company: Acme Corp
role: Senior Data Scientist
dates: "2020-2023"
details: |
- Built predictive models ...
education:
- institution: University of Example
degree: MSc Computer Science
year: 2019
"""
# Simple call – uses default ChatLLM7 (API key from env var LLM7_API_KEY)
pdf_paths = resume_yaml_builder(user_input=yaml_input)
print(pdf_paths) # → List of generated PDF file paths
Custom LLM Example (OpenAI)
from langchain_openai import ChatOpenAI
from resume_yaml_builder import resume_yaml_builder
my_llm = ChatOpenAI(model="gpt-4o-mini")
pdf_paths = resume_yaml_builder(user_input=yaml_input, llm=my_llm)
Custom LLM Example (Anthropic)
from langchain_anthropic import ChatAnthropic
from resume_yaml_builder import resume_yaml_builder
anthropic_llm = ChatAnthropic(model="claude-3-haiku-20240307")
pdf_paths = resume_yaml_builder(user_input=yaml_input, llm=anthropic_llm)
Custom LLM Example (Google Gemini)
from langchain_google_genai import ChatGoogleGenerativeAI
from resume_yaml_builder import resume_yaml_builder
gemini_llm = ChatGoogleGenerativeAI(model="gemini-1.5-flash")
pdf_paths = resume_yaml_builder(user_input=yaml_input, llm=gemini_llm)
📋 Function Signature
def resume_yaml_builder(
user_input: str,
api_key: Optional[str] = None,
llm: Optional[BaseChatModel] = None
) -> List[str]:
| Parameter | Type | Description |
|---|---|---|
user_input |
str |
YAML‑formatted resume data to be processed. |
llm |
Optional[BaseChatModel] |
A LangChain LLM instance. If omitted, the function creates a ChatLLM7 instance using the provided api_key or the LLM7_API_KEY environment variable. |
api_key |
Optional[str] |
API key for ChatLLM7. Falls back to the LLM7_API_KEY environment variable. Required only when using the default LLM. |
The function returns a list of file paths to the generated PDF(s). If the LLM call fails, a RuntimeError is raised with an explanatory message.
🔑 API Keys & Rate Limits
- ChatLLM7 (default) is available on the free tier; its rate limits are sufficient for most development and small‑scale usage.
- To obtain a free API key, register at https://token.llm7.io/.
- You can pass the key directly:
pdf_paths = resume_yaml_builder(user_input=yaml_input, api_key="your_llm7_api_key")
- Or set the environment variable
LLM7_API_KEYbefore running your script.
If you need higher limits on LLM7, upgrade your account on the provider’s website.
🐞 Reporting Issues
Found a bug or have a feature request? Please open an issue on GitHub:
https://github.com/chigwell/resume_yaml_builder/issues
👤 Author
Eugene Evstafev
Email: hi@euegne.plus
GitHub: chigwell
📄 License
This project is licensed under the MIT License. See the LICENSE file for details.
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 resume_yaml_builder-2025.12.21142031.tar.gz.
File metadata
- Download URL: resume_yaml_builder-2025.12.21142031.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
361f27fa55197cb8a9e66d79494dfebb2b1f3890ed50aa79316c474e1452e1f0
|
|
| MD5 |
01986e224781e59588d3d3f3b8f94bb1
|
|
| BLAKE2b-256 |
019bbf27557989c887273574b12f6849a25a2123974d80c9f7a868b94142c6a4
|
File details
Details for the file resume_yaml_builder-2025.12.21142031-py3-none-any.whl.
File metadata
- Download URL: resume_yaml_builder-2025.12.21142031-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b099a9b4e7583c312f66f7e98c58b37321f347d54642a7cfce6cc53acc5d93fa
|
|
| MD5 |
4cad719db90d7ed1662fef3d77c45be9
|
|
| BLAKE2b-256 |
001960b6da3d4fa059df32ffd11da692063615a830ac22d8fc72a46f99f1d6f5
|