Agent-assisted resume tailoring for job seekers.
Project description
Career Tailor
Career Tailor is a local-first command line tool that turns a master resume into job-specific drafts. It extracts a structured profile from your resume, compares that profile against a job description, and generates tailored Markdown, JSON, CSS, and optionally PDF output.
The goal is not to fabricate experience. The agent is prompted to preserve the facts in your profile and reframe them in the language of the job description.
Why
Many applicant tracking systems and recruiter workflows reward resumes that use the same language as the job posting. Career Tailor helps job seekers build truthful, role-specific versions of a resume without manually rewriting the same material for every application.
Install
uvx career-tailor --help
For local development:
git clone https://github.com/chriestensonb/career-tailor.git
cd career-tailor
uv sync
cp .env.example .env
You can also run the latest unreleased GitHub version directly:
uvx --from git+https://github.com/chriestensonb/career-tailor career-tailor --help
Set your model provider key in .env. By default the project uses a Pydantic AI
Anthropic model string, but OpenAI model strings are supported too:
CAREER_TAILOR_MODEL=anthropic:claude-sonnet-4-6
ANTHROPIC_API_KEY=...
Or:
CAREER_TAILOR_MODEL=openai:<model-name>
OPENAI_API_KEY=...
Usage
Create a structured profile from an existing resume:
career-tailor ingest ./my-resume.md
Generate a tailored resume from a job description:
career-tailor tailor ./job-description.md
Skip PDF rendering when you only want Markdown and JSON:
career-tailor tailor ./job-description.md --no-pdf
The default profile path is data/profile.json. Generated outputs go to
tailored/. Both directories are ignored by Git because they commonly contain
personal information.
Data And Privacy
Career Tailor runs locally, but it sends resume and job description text to the model provider you configure. Do not use it with sensitive data unless you are comfortable with that provider's data handling terms.
The repository ignores:
.envand other local env filesdata/, which stores extracted profile datatailored/, which stores generated resumes- local caches and virtual environments
Development
uv sync --dev
uv run pytest
uv run ruff check .
If PDF rendering fails the first time, install Playwright's Chromium browser:
uv run playwright install chromium
Project Status
This is early alpha software. It is useful as a local CLI today, and the next good open-source milestones are provider examples, safer redaction workflows, more resume import formats, and package publishing.
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 career_tailor-0.1.0.tar.gz.
File metadata
- Download URL: career_tailor-0.1.0.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c2e7dab77c45be6d0c2cfaeda6a7a634942a713ae5ae6c279b16c36b1ef8541
|
|
| MD5 |
94efe1a7d988ba3d1c067c0a8f6d61e5
|
|
| BLAKE2b-256 |
66275200c9f063f5131ce9cff4aeb4d0e7c919d64abf729d6c0db8f5aa74c3ff
|
Provenance
The following attestation bundles were made for career_tailor-0.1.0.tar.gz:
Publisher:
publish.yml on chriestensonb/career-tailor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
career_tailor-0.1.0.tar.gz -
Subject digest:
6c2e7dab77c45be6d0c2cfaeda6a7a634942a713ae5ae6c279b16c36b1ef8541 - Sigstore transparency entry: 1781342175
- Sigstore integration time:
-
Permalink:
chriestensonb/career-tailor@ce9e46a757a37d3e1a0a2071ae66e8ec3e5be5fa -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/chriestensonb
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ce9e46a757a37d3e1a0a2071ae66e8ec3e5be5fa -
Trigger Event:
release
-
Statement type:
File details
Details for the file career_tailor-0.1.0-py3-none-any.whl.
File metadata
- Download URL: career_tailor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 28.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5fa0aebff271f1cd032007951407f37ba40680aba38f28460da9aeb8db922135
|
|
| MD5 |
caa5bd48aec1d72e184adea4c06c4f9c
|
|
| BLAKE2b-256 |
1b7d0a5487412d9b685cc5c00dece39a7994d0b7adc53872811e5c3df8d53605
|
Provenance
The following attestation bundles were made for career_tailor-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on chriestensonb/career-tailor
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
career_tailor-0.1.0-py3-none-any.whl -
Subject digest:
5fa0aebff271f1cd032007951407f37ba40680aba38f28460da9aeb8db922135 - Sigstore transparency entry: 1781342294
- Sigstore integration time:
-
Permalink:
chriestensonb/career-tailor@ce9e46a757a37d3e1a0a2071ae66e8ec3e5be5fa -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/chriestensonb
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ce9e46a757a37d3e1a0a2071ae66e8ec3e5be5fa -
Trigger Event:
release
-
Statement type: