Tailor your resume to any job posting from your terminal.
Project description
finch-cli
a terminal client for job hunting. browse fresh internship + new-grad postings, tailor your resume to any of them, see an ats-style match score with matched + missing keywords, keep a library of the tailored versions.
install
pip install finch-cli
finch login
finch ui
finch login opens a sign-in link in your browser. once you sign in with google or email on applyfinch.com, the cli is paired and tailoring just works -- no api key to manage, the backend pays the llm bill.
prefer your own key? skip finch login and set one instead:
export DEEPSEEK_API_KEY=sk-...
finch ui
deepseek keys are cheap (~30x cheaper than the major frontier models). get one at https://platform.deepseek.com/api_keys. any openai-compatible chat-completions endpoint also works (openai, together, groq, fireworks): pass --base-url and --api-key.
what it does
three tabs, one keyboard.
jobs pulls the simplifyjobs internship and new-grad lists (the same two feeds the finch backend mirrors). 3000+ active postings, filterable by query, source, term. press T on a row, the job loads into the tailor tab pre-filled.
library is the list of tailored resumes you've saved. Markdown preview on the right.
tailor is the three-pane editor: base resume / job posting / tailored output. the model rewrites bullets and ordering to fit the posting. won't invent skills you don't have. a match-analysis panel at the bottom shows an ats-style score, which job keywords your resume covers, which ones it doesn't, and how much the tailored version moved the needle vs the base.
install (pure cli, no tui)
finch tailor --resume resume.md --job https://jobs.example.com/swe-intern -o tailored.md
if the job site is js-heavy (workday, some greenhouse iframes), the fetch fails clean and tells you to use --job-file with a pasted description:
finch tailor -r resume.md --job-file pasted.txt -o tailored.md
tui keys
| key | action |
|---|---|
1 / 2 / 3 |
jump to jobs / library / tailor |
Ctrl+T |
tailor; on jobs tab loads the selected job first |
Ctrl+U |
paste a job url, fetches it into the tailor pane |
Ctrl+O |
open a resume file |
Ctrl+R |
refetch the job feeds |
Ctrl+L |
save the tailored output to the library |
Ctrl+S |
save the tailored output to a file |
Ctrl+D |
load the bundled demo |
Ctrl+Q |
quit |
filter inputs at the top of the jobs tab are live; type and the table updates.
cli flags
finch tailor
| flag | what |
|---|---|
-r, --resume PATH |
base resume in markdown or plain text (required) |
-j, --job URL |
job posting url |
--job-file PATH |
local file with the job description (use if --job won't extract) |
-o, --out PATH |
save tailored resume here, else stdout |
--model NAME |
model name (default deepseek-chat) |
--api-key KEY |
override $DEEPSEEK_API_KEY / $FINCH_API_KEY / $OPENAI_API_KEY |
--base-url URL |
override openai-compatible base url (default https://api.deepseek.com) |
finch ui
| flag | what |
|---|---|
--demo |
preload the bundled example into the tailor tab |
--model NAME |
model name |
where stuff lives
| path | |
|---|---|
| job feed cache (~6h ttl) | ~/.cache/finch-cli/{intern,newgrad}.json |
| saved tailored resumes | ~/.local/share/finch-cli/resumes/ |
| bundled example resume + job | examples/ in the repo |
why a cli
most of these tools are saas you have to sign up for. this is the opposite. install, run, the only thing leaving your machine is the llm call you control.
the autofill side - the part that actually fills out the application form - lives in the web app at applyfinch.com, free during beta.
known limits
- workday and some greenhouse iframe pages need js. the fetch fails clean and tells you to use
--job-file. - tailored output is markdown. pipe to pandoc for pdf, or paste into overleaf if you have a tex template.
- the model won't invent skills. if the base resume is thin, the tailored version is thin. fix the base first.
roadmap
- a built-in pdf renderer (drop the pandoc step)
finch applyto autofill the application after tailoring, same engine as the web app- optional sign-in to view your real applyfinch.com pipeline from the terminal
license
mit.
Project details
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 finch_cli-0.2.0.tar.gz.
File metadata
- Download URL: finch_cli-0.2.0.tar.gz
- Upload date:
- Size: 60.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52a266779c22675d1ab5a101514681887433040da5bee05b35596f4dece9dfd0
|
|
| MD5 |
0245a9eca73bceba864087685b30ea05
|
|
| BLAKE2b-256 |
afcbd4a98e8c83d6519b0dec381528c1d876e55c077df85cd1a75ee0d1363b78
|
File details
Details for the file finch_cli-0.2.0-py3-none-any.whl.
File metadata
- Download URL: finch_cli-0.2.0-py3-none-any.whl
- Upload date:
- Size: 31.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d9bf1ebabff4e329798bad3ef1bbd90aeff905f7267322783827200a294a792
|
|
| MD5 |
4d72e0aaff8b5bc85607dfff0ec4a79f
|
|
| BLAKE2b-256 |
7dfe4a7de4f3871348fc21f0287126ca7cecb8b8e41be8bf5cd9865a0fac2354
|