Documentation Index
Fetch the complete documentation index at: https://mintlify.com/clyrisai/gitresolve/llms.txt
Use this file to discover all available pages before exploring further.
Batch mode lets you resolve an entire hiring pipeline at once. Point GitResolve at a CSV of portfolio links and a folder of PDF resumes, and it will process every candidate, aggregate results from multiple sources, and either print a summary table or write per-candidate JSON files to disk.
Batch Flags
| Flag | Description |
|---|
--portfolios | Process portfolio URLs from the CSV file only |
--resumes | Process PDF resumes from the resumes directory only |
--all | Process both the CSV and the resumes directory |
Running gitresolve with no URL argument and none of these flags defaults to --all.
# These three commands are equivalent
gitresolve
gitresolve --all
gitresolve --portfolios --resumes
Default Data Paths
| Source | Default Path | Override Flag | Environment Variable |
|---|
| Portfolio CSV | ./data/portfolio_links.csv | --portfolio-csv <path> | PORTFOLIO_CSV |
| Resumes directory | ./data/resumes | --resumes-dir <path> | RESUMES_DIR |
Custom Paths
# Custom CSV path
gitresolve --portfolios --portfolio-csv ./candidates/ats-export.csv
# Custom resumes directory
gitresolve --resumes --resumes-dir ./uploads/applications
# Both at once
gitresolve --all \
--portfolio-csv ./candidates/ats-export.csv \
--resumes-dir ./uploads/applications
The CSV must contain a column that GitResolve can use as the URL source. Column names are checked in the following priority order:
url
URL
link
Link
- First column (fallback — used if none of the above are present)
name,url,notes
Jane Doe,https://janedoe.dev,Strong frontend
John Smith,https://github.com/jsmith,Backend focus
Alice Lee,https://gitlab.com/alicelee,
GitResolve applies the same URL normalization used in single-URL mode. Bare domains like janedoe.dev in the CSV are automatically prefixed with https:// before processing.
If your CSV column is named something other than the four supported names, rename the column or rely on the first-column fallback:
portfolio_url
https://janedoe.dev
https://github.com/jsmith
GitResolve scans the target directory and processes every file with a .pdf extension. Subdirectories are not traversed — all PDFs must be in the top-level folder.
data/
└── resumes/
├── jane-doe.pdf
├── john-smith.pdf
└── alice-lee.pdf
Non-PDF files in the same directory are silently ignored.
Step-by-Step Setup
Create the data folders
Create the default directory structure in your project root. Add portfolio links
Create data/portfolio_links.csv with a url column.name,url
Jane Doe,https://janedoe.dev
John Smith,https://github.com/jsmith
Alice Lee,https://gitlab.com/alicelee
Add resume PDFs
Copy or move candidate resume PDFs into data/resumes/.cp ~/Downloads/*.pdf data/resumes/
Run the batch command
Process all inputs with a single command.To save results to disk instead of (or in addition to) the terminal:gitresolve --all --output-dir ./results
Candidate Aggregation
When two or more sources — for example, a portfolio link from the CSV and a PDF resume — both resolve to the same Git username, GitResolve automatically merges them into a single AggregatedResult. Duplicate links are deduplicated by URL, and all source references are tracked in the sources and sourceTypes arrays.
# janedoe.dev and janedoe.pdf both resolve to github.com/janedoe
# → one merged AggregatedResult is written to results/resolved/janedoe.json
gitresolve --all --output-dir ./results
Example Aggregated Output
{
"candidateUsername": "janedoe",
"sources": [
"https://janedoe.dev",
"./data/resumes/janedoe.pdf"
],
"sourceTypes": [
"portfolio",
"resume_file"
],
"ownerProfile": {
"url": "https://github.com/janedoe",
"provider": "github",
"type": "profile",
"username": "janedoe"
},
"confidence": "high",
"ownedRepos": [
{
"url": "https://github.com/janedoe/my-project",
"provider": "github",
"type": "repo",
"username": "janedoe",
"repo": "my-project"
}
],
"contributions": [
{
"url": "https://github.com/open-source-org/library/pull/42",
"provider": "github",
"type": "pull_request",
"username": "janedoe",
"repo": "library",
"number": "42"
}
],
"externalRepos": [],
"allLinks": [],
"warnings": []
}
Candidates whose sources cannot be resolved to any Git username are written to unresolved/ with a sanitized filename rather than a username. See Output Options for the full directory structure.
Privacy
All processing happens locally on your machine. No candidate data — portfolio URLs, resume text, or resolved profiles — is sent to any external server by GitResolve. The only outbound network requests are the page fetches to the candidate URLs themselves.
It is good practice to add your data directories to .gitignore so that candidate materials are not accidentally committed to version control:
data/resumes/
data/portfolio_links.csv
results/