skip to content

Everything terminalhire does

One local matcher, five surfaces. Nothing leaves your machine until you say so.

matching

It matches on what you build — and tells you why.

Not keyword bingo. terminalhire reads the real shape of your work, scores each role on genuine two-way fit, and shows you the reasoning in one line.

  • Understands adjacent skillsa FastAPI dev sees the right Django role — a 150+ skill relatedness graph gives credit for what is genuinely related, not just exact strings.
  • Ranked both waysscored on how well it fits you and how well you fit it — roles you could actually land, not "you match 1 of 12 requirements" noise.
  • Shows the whyevery match carries its reasoning, so you trust it at a glance instead of staring at a black box.
~/projects/my-appterminalhire
terminalhire jobs
1,240 roles scanned · profile never uploaded
Staff Backend Engineer @ Vercel#1 match
whytypescriptapi-designreact→nextjs
you→role82
role→you74
profile never leaves your machine · no fingerprint sent
winnability · where your PR lands

We surface the repos where your PR actually lands.

Not every open issue is worth your afternoon. terminalhire ranks contributions by how likely a maintainer is to merge yours — active repos, receptive maintainers, low contention — so the work you start is the work that ships.

  • Ranked by winnabilityeach issue is scored on merge-receptivity — maintainer activity, review speed, and how many PRs are already racing it — so you back the ones that actually land.
  • Matched to what you shipthe same local matcher as roles — high-traction repos ranked to your real stack. No board, no bidding, no proposals.
  • Proof a team you don’t know mergedevery merge into a repo you don’t own becomes verifiable Proof of Work — a credential a maintainer, not you, attested.
~/projects/my-appterminalhire
terminalhire contribute
high-traction repos · ranked by winnability · matched to your stack
94%Fix OAuth refresh racemerges weekly
88%Add retry to webhook workerlow contention
82%Port test suite to vitestfast review
76%Polish CLI help outputactive maintainers
ship it in an isolated worktree · the merge lands on your Proof of Work
trajectory · the second lens

Your trajectory, not just your tenure.

terminalhire trajectory reads your local Claude Code sessions to show what you actually build with now, what’s gone dormant, and where your work is trending. It never leaves your machine — you share a recruiter-safe view only if you choose.

  • Current stack, surfacedwhat you actually build with now — read from your own Claude Code sessions, not a stale skills list.
  • Dormant vs. trendingwhat has gone quiet and where your work is heading, so the signal reflects today, not last year.
  • Local, shared on your termsyour trajectory never leaves your machine — you share a recruiter-safe view only if you choose.
~/.claude/projectslocal only
// $ terminalhire trajectory · read-only · zero egress
Trajectory — your code is your résumé
↑ rising rust, kubernetes, oauth
↓ falling jquery, php
live typescript · react · postgres
dormant jquery · php
connect · dev ↔ dev, founder ↔ builder

Connect with the people behind the code.

Your code is your résumé; your handle is your introduction. Discover opted-in developers — and founders looking for builders — matched against your real work using a profile that never leaves your machine. When you want to reach someone, an intro crosses the wire only through a double-opt-in both sides approve — and then you talk, encrypted, in the terminal. No feed, no presence, no profile to upload.

  • Never leaves your machine, both waysdiscover opted-in peers — and founders looking for builders — ranked against your real work using a profile that never leaves your machine. The directory downloads anonymously.
  • Double-opt-in, or nothingan intro crosses the wire only after you type yes — and contact is exchanged only when both sides accept. Decline and nothing moves.
  • Chat by handle, not phone numberaccept an intro and you get 1:1 chat right in your terminal — end-to-end encrypted, so we can’t read a word of it. Your GitHub login is the only identity either side needs.
  • No feed, no profile to maintainnot a social network — no presence, no timeline, no upload. Just your accepted work and a deliberate handshake.
~/projects/my-appe2e-encrypted
// $ terminalhire chat @alice · handles only · zero server-read
✓ double-opt-in accepted — you ↔ @alice · X25519 sealed
@aliceloved your retry-backoff PR — pair on the webhook queue?
youyes — thu after 2pm ET works
@aliceperfect, sending a repo invite
🔒 sealed end-to-end · we can’t read a word · no phone number, no feed
learning

It gets sharper the more you code.

No résumé to maintain. Your profile is a living reflection of what you actually build — it learns from the projects you’re in and never leaves your machine unless you say so.

  • Reads the project, not your codeeach session it maps your dependencies, frameworks, and languages through a closed skill graph. Raw code and file paths are never used.
  • Weighted by what you build nowevery tag tracks frequency and recency — a 30-day half-life — so matches follow your current focus, not a stale résumé.
  • Deepens locally, every sessionsignals accumulate in your encrypted local profile. Nothing is uploaded unless you explicitly opt in.
~/.terminalhire/profile.enclocal only
// deepens every session · encrypted at rest · never uploaded
oauth → count 9 · seen today // actively building auth
react → count 7 · seen yesterday // strong recent signal
kubernetes → count 3 · seen 6 wks ago // fading in relevance

Developers never pay. Employers and recruiters pay to reach developers who raised their hand.