Auto-generate ATS-friendly resume bullets from your GitHub commits
Project description
gitfolio
Turn your GitHub commits into ATS-friendly resume bullets. Automatically. Every week.
The Problem
You ship features every day. You close PRs, review code, fix bugs, build systems. None of it shows up on your resume because it's all in private repos and you're too busy shipping to write about it.
gitfolio fixes that.
It reads your commits and PRs (including private repos), uses Claude AI to analyze the actual diffs, and generates polished XYZ-format resume bullets. Every week it emails you the updated .tex file — you review, upload to Overleaf, done.
How It Works
GitHub (private + public repos)
↓
Fetch commits + diffs + PRs
↓
Score & prioritize by impact
↓
Claude AI → XYZ format resume bullets
↓
Inject into your LaTeX resume
↓
Email digest + updated .tex file → you review → upload to Overleaf
Install
pip install gitfolio
Or via Homebrew tap (coming soon):
brew install pranav-iiitdm/tap/gitfolio
Setup
1. Get a GitHub token
Go to github.com/settings/tokens → New token → select repo scope.
2. Get an Anthropic API key
Sign up at console.anthropic.com and create an API key.
3. Set your API key
export ANTHROPIC_API_KEY="sk-ant-..."
4. Run setup
gitfolio init
This walks you through setting up your GitHub token, repos, email, and resume path.
Usage
First run (backfill last 12 months)
gitfolio sync --backfill
Preview without sending email
gitfolio sync --dry-run
Weekly sync
gitfolio sync
Check everything is working
gitfolio doctor
Set Up Weekly Cron
# Open crontab
crontab -e
# Add this line — runs every Sunday at 9am
0 9 * * 0 ANTHROPIC_API_KEY=sk-ant-... gitfolio sync
What You Get in Your Weekly Email
gitfolio weekly digest — March 08, 2026
==================================================
SUMMARY
-------
Added 3 bullet(s) ready to use.
Flagged 1 bullet(s) needing your input.
✅ Ready bullets:
• Implemented JWT-based authentication system with refresh token
flow and middleware, reducing session-related support tickets
across the platform
• Migrated legacy REST endpoints to GraphQL, improving API
response consistency for mobile clients
⚠️ Needs your input:
• Optimized database query layer for user feed service,
reducing load time by [METRIC: add latency improvement here]
→ Do you know the before/after query time for this change?
SKIPPED (14 items)
-------
These were too small to include:
• fix typo in README
• bump lodash version
...
==================================================
The updated resume .tex file is attached.
Review it, upload to Overleaf, and you're done.
How Bullets Are Prioritized
Every commit/PR cluster is scored across 5 dimensions:
| Signal | What it looks at |
|---|---|
| Work type | Feature > Perf > Migration > Refactor > Bugfix > Chore |
| Scope | Files changed, lines added |
| Business context | PR description quality, impact keywords |
| Your involvement | Author vs reviewer |
| Skip signals | WIP, typo, dependency bump, etc. |
Tier 1 — strong signal, written directly into resume
Tier 2 — good work but needs a metric from you (flagged in email)
Tier 3 — skipped (mentioned in summary only)
Privacy
- Your code diffs are sent to the Anthropic API for analysis
- No data is stored anywhere outside your machine and Anthropic's API
- Only your own commits (filtered by your git email) are analyzed
- You can use
PR titles + commit messages onlymode if you prefer (setdiff_access: falsein config)
Requirements
- Python 3.11+
- GitHub Personal Access Token (
reposcope) - Anthropic API key
- Gmail account with App Password (for sending digest)
- A
.texresume (Overleaf format works perfectly)
Contributing
PRs welcome. See CONTRIBUTING.md.
License
MIT
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 gitfolio_cli-1.0.0.tar.gz.
File metadata
- Download URL: gitfolio_cli-1.0.0.tar.gz
- Upload date:
- Size: 20.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9d7584d5e2f504eaccb0d060a0aa7564046b1dffbfd54e14f92078fde8b8a239
|
|
| MD5 |
78779a248887ca08f720595c68d78d44
|
|
| BLAKE2b-256 |
87d32d1764773f9eb108c951f59c9517daf24f6a7a502a4233ce255094294d43
|
Provenance
The following attestation bundles were made for gitfolio_cli-1.0.0.tar.gz:
Publisher:
release.yml on pranav-iiitdm/gitfolio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gitfolio_cli-1.0.0.tar.gz -
Subject digest:
9d7584d5e2f504eaccb0d060a0aa7564046b1dffbfd54e14f92078fde8b8a239 - Sigstore transparency entry: 1429448973
- Sigstore integration time:
-
Permalink:
pranav-iiitdm/gitfolio@ba28052eec3ceab184400807ed6790790e556ad6 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/pranav-iiitdm
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ba28052eec3ceab184400807ed6790790e556ad6 -
Trigger Event:
push
-
Statement type:
File details
Details for the file gitfolio_cli-1.0.0-py3-none-any.whl.
File metadata
- Download URL: gitfolio_cli-1.0.0-py3-none-any.whl
- Upload date:
- Size: 23.3 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 |
a30f951111c1c4aef33951138cedce7792700fe9c448f1824f8bd124056ee446
|
|
| MD5 |
f9aca40af6923dbae76e56b231da90ed
|
|
| BLAKE2b-256 |
bd33d3b380970d0f272191763bee1b6b6055408afb40d4f75e6128fc9192467d
|
Provenance
The following attestation bundles were made for gitfolio_cli-1.0.0-py3-none-any.whl:
Publisher:
release.yml on pranav-iiitdm/gitfolio
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gitfolio_cli-1.0.0-py3-none-any.whl -
Subject digest:
a30f951111c1c4aef33951138cedce7792700fe9c448f1824f8bd124056ee446 - Sigstore transparency entry: 1429448974
- Sigstore integration time:
-
Permalink:
pranav-iiitdm/gitfolio@ba28052eec3ceab184400807ed6790790e556ad6 -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/pranav-iiitdm
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@ba28052eec3ceab184400807ed6790790e556ad6 -
Trigger Event:
push
-
Statement type: