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.
Metadata
Release files for resume-yaml-builder 2025.12.21142031
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| resume_yaml_builder-2025.12.21142031.tar.gz | 5.7 kB | Without provenance | Details for resume_yaml_builder-2025.12.21142031.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| resume_yaml_builder-2025.12.21142031-py3-none-any.whl | Python 3 | none | any | Details for resume_yaml_builder-2025.12.21142031-py3-none-any.whl |
Total release size: 12.2 kB
Release files / resume_yaml_builder-2025.12.21142031.tar.gz
| Download URL | resume_yaml_builder-2025.12.21142031.tar.gz |
|---|---|
| Size | 5.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
361f27fa55197cb8a9e66d79494dfebb2b1f3890ed50aa79316c474e1452e1f0
|
|
BLAKE2b-256 checksum How to use checksums |
019bbf27557989c887273574b12f6849a25a2123974d80c9f7a868b94142c6a4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.1
|
Release files / resume_yaml_builder-2025.12.21142031-py3-none-any.whl
| Download URL | resume_yaml_builder-2025.12.21142031-py3-none-any.whl |
|---|---|
| Size | 6.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b099a9b4e7583c312f66f7e98c58b37321f347d54642a7cfce6cc53acc5d93fa
|
|
BLAKE2b-256 checksum How to use checksums |
001960b6da3d4fa059df32ffd11da692063615a830ac22d8fc72a46f99f1d6f5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.1
|
Security for resume-yaml-builder 2025.12.21142031
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.