strands-rendercv
CV generation with Strands Agents + RenderCV
Generate beautiful, typographically perfect CVs from YAML. AI reads your docs, validates schema, outputs PDF.
Installation
pip install strands-rendercv
# macOS: Install LaTeX for PDF generation
brew install --cask mactex-no-gui
Quick Start
from strands import Agent
from strands_rendercv import render_cv
agent = Agent(tools=[render_cv])
# Create template → Edit → Generate
agent.tool.render_cv(action="create_template")
agent.tool.render_cv(action="validate", input_file="John_Doe_CV.yaml")
agent.tool.render_cv(action="render", input_file="John_Doe_CV.yaml")
AI-Powered Generation
agent("""
Read my LinkedIn from ~/linkedin.md and work log from ~/work-log.md.
Generate CV for ... Engineer at ....
Focus on: distributed systems, leadership, open source.
Use 'engineeringresumes' theme.
""")
What happens:
- AI reads your docs
- Extracts + structures data as YAML
- Validates schema
- Generates PDF + HTML + Markdown
Examples
5 production-ready templates in examples/:
- Senior SWE - Full-stack, distributed systems (YAML)
- ML Researcher - PhD, publications (YAML)
- Product Designer - UX/UI, design systems (YAML)
- Startup Founder - Exits, fundraising (YAML)
- DevRel Engineer - Community, content (YAML)
agent.tool.render_cv(action="render", input_file="examples/senior_swe_cv.yaml")
Actions
| Action | Description |
|---|---|
create_template |
Generate sample YAML |
validate |
Check schema before render |
render |
Generate PDF + HTML + MD |
list_themes |
Show available themes |
YAML Structure
cv:
name: Jane Doe # Only required field
headline: Senior Software Engineer
email: jane@example.com
social_networks:
- network: GitHub
username: janedoe
sections:
work_experience:
- company: Tech Corp
position: Staff Engineer
start_date: 2020-01
end_date: present
highlights:
- "Built distributed tracing system (1B+ events/day)"
- "Reduced P99 latency by 80%"
education:
- institution: Stanford
degree: MS
area: Computer Science
start_date: 2016-09
end_date: 2018-06
design:
theme: engineeringresumes # or classic, sb2nov, moderncv
Advanced
Override fields:
render_cv(
action="render",
input_file="cv.yaml",
overrides='{"cv.email": "work@company.com"}'
)
PDF only (faster):
render_cv(
action="render",
input_file="cv.yaml",
dont_generate_png=True,
dont_generate_html=True
)
Multi-target generation:
for company in ["google", "meta", "openai"]:
agent(f"Customize my CV for {company}, output to ./{company}/")
Common Issues
Validation fails:
- Use
YYYY-MMorYYYY-MM-DDorpresentfor dates - Phone format:
+1 234 567 8900(optional) - Social networks: LinkedIn, GitHub, X (not Twitter)
- Page size:
us-letter(not letterpaper)
Empty CV:
- Sections must be under
cv.sections, not at root - Avoid special chars:
#,%
Citation
@software{strands_rendercv2026,
author = {Cagatay Cali},
title = {strands-rendercv: AI-Powered Professional CV Generation},
year = {2026},
url = {https://github.com/cagataycali/strands-rendercv},
note = {Built with Strands Agents and RenderCV}
}
Built with: Strands Agents | RenderCV
License: MIT | Issues & PRs
Metadata
Release files for strands-rendercv 0.1.0
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 | |
|---|---|---|---|---|
| strands_rendercv-0.1.0.tar.gz | 31.9 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| strands_rendercv-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.2 kB
Release files / strands_rendercv-0.1.0.tar.gz
| Download URL | strands_rendercv-0.1.0.tar.gz |
|---|---|
| Size | 31.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
960a70564a08932a04d6a2a5aeedaa83effa87bf5f11e4913a23bfe8e8a8e0c9
|
|
BLAKE2b-256 checksum How to use checksums |
c0899bf7957d783e1d06a7e7b4c4cf3cedc65a315ebe525530b4191d4219a019
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|
Release files / strands_rendercv-0.1.0-py3-none-any.whl
| Download URL | strands_rendercv-0.1.0-py3-none-any.whl |
|---|---|
| Size | 9.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
09b1b8bed5208e272dd0a7f77cbb1b87b2f04d6ff7a12b7b1f8ae2d4fbe2affe
|
|
BLAKE2b-256 checksum How to use checksums |
e4a8e439e6a3ccd4d92fc1343a66d0e2a2fa17650b4b34d5c0147f5ca16dcbb6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.14
|
Security for strands-rendercv 0.1.0
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.