$HAP · Hiring Agent Protocol·v0.2 · candidate-initiated · MIT

Your work is your résumé.
Your agent does the rest.

Your agent builds a profile from your real GitHub work, applies to jobs for you, and helps employers find you. They rank you on work they can open and check — not a résumé you wrote. Free, no limits, built for agents. You own your profile — it's an open A2A format, not a locked-in database.

Star on GitHub read the spec
free · unlimited · agent-friendly📦 scored on verified evidence, not prose↪ open A2A profile · self-hostable🔐 your data stays yours

How it works

No résumé, no forms.
Here's the actual flow.

Two short commands on each side — that's the whole thing.

① If you're job-hunting

  1. 1Run one command — your profile builds itself from your real GitHub work (and, if you opt in, what you've built with Claude Code).
  2. 2Name a company, or let it find matches — it pulls the role and checks how well you fit.
  3. 3It writes the application for you, citing your real commits, repos, and talks. You see exactly what it'll send, first.
  4. 4Employers reach out to you. Your contact only shows when one actually asks — you never broadcast that you're looking.

You apply with proof, not a résumé — in about a minute.

② If you're hiring

  1. 1Post a role: a title plus what you require. It's just a file — no account, no dashboard to set up.
  2. 2Candidates' agents apply with evidence — links to real commits, repos, and talks.
  3. 3The scorer opens every link and verifies it (is this commit theirs? is the repo real?). Faked links are rejected outright.
  4. 4You get a ranked shortlist with the proof attached — or search candidates yourself, ranked by what's verified.

You read verified work, not self-written resumes.

See it run

One application in. One verified report back.

Not a chat — the candidate submits a single packet (evidence per requirement), the scorer opens every link, and one report comes back. Same scorer, opposite outcomes.

① one hap.application → renlab · Alex Chen · proof-of-control ✓
REQ · multi-agent simulations end to end
github_repo github.com/alex-chen/abm-sim · 1.2k★ ✓ verified
REQ · ships production code
github_commit github.com/alex-chen/abm-sim/commit/9f4ac21 ✓ verified
nice · world models / SWM
— declined: no_evidence (honest)
nice · agent / LLM product
github_repo github.com/alex-chen/eval-harness ✓ verified
↓ the scorer opens every link
② one score report
FIT · overall 0.85 · identity proven
m1 verified · 1.00
m2 verified · 1.00
n1 declined · no_evidence — 0 penalty
n2 verified · 1.00
✅ identity proven (@alex-chen)
① one hap.application → renlab · Sam Faker · self-assessed "strong"
REQ · multi-agent simulations end to end
github_commit github.com/torvalds/linux/commit/000000… · unverified
REQ · ships production code
github_repo github.com/sam-faker/app (unrelated) · unverified
↓ the scorer opens every link
② one score report
NO_FIT · overall 0 · identity asserted
🚩 fabrication: cited evidence does not exist
🚩 overclaim: said "strong" · evidence: no_fit

$ npm run demo:tour — run it live

What makes it different

A job board makes you sell yourself.
HAP lets your work speak — and checks it.

Anyone can write a great résumé — and AI made that free. So HAP doesn't grade what you wrote; it grades what it can open and verify. Your agent turns your real work into a profile that applies for you and gets you found, and every claim an employer sees links straight to the proof.

01 · LIVING PROFILE

Your résumé writes
and updates itself.

Run one command and your profile builds itself from your public GitHub. Opt in, and it also counts your local Claude Code projects — only their names and how often you used them, never the contents, and nothing leaves your machine. Nothing to fill in, nothing to host. Re-run it (or schedule it) and it stays up to date.

// public github + opt-in cc footprint · candidate-owned
02 · SCORED ON EVIDENCE

Employers open every link.
Prose scores nothing.

The employer's scorer opens every link you cite and checks it — is this commit yours, is the repo real, did that talk happen — and scores that. What your agent wrote, and how confident it says it is, count for nothing. Cite something fake and you're out. Say "I don't have that" honestly and you lose nothing.

// score the artifact, not the sentence
03 · FOUND BY EVIDENCE

Recruiters find you by
what's verified, not keywords.

Publish your profile only if you want to, and an index ranks you by what's been verified — not keywords. You're not broadcasting that you're looking, and recruiters can't scrape you in bulk. Your contact isn't shown in results — to reach you, they have to ask, within a limit you set.

// opt-in discovery · contact gated by your rate limit
04 · OPEN & YOURS

Free, unlimited, agent-friendly.
The opposite of a walled job board.

It's an open format with published JSON Schema, so any agent in any language can implement it — and you can run it yourself. No paywall, no daily caps, no banning your bot. Your profile and contact live with you, not in someone else's database. Built on A2A, MIT.

// no paywall · no bot bans · data stays candidate-owned

Get started

Two sides. Paste a block, or run it.

Job-seekers and employers each get one paste-to-Claude-Code block — or the plain commands.

Job-seeker · paste to Claude Code
Set up HAP for me. Clone https://github.com/luanrj-ai/hap, run `npm install && npm run build`, then build my HAP profile from my PUBLIC GitHub: `npm run profile -- --handle <your-github> --with-claude`. Show my verified evidence and how to apply.
Employer · paste to Claude Code
Set up HAP to hire. Clone https://github.com/luanrj-ai/hap, run `npm install && npm run build`, then start the verifying inbox with `npm run serve:inbox` and tell me how to open the /hap dashboard to read scored candidates.

↪ plain commands — job-seeker: npm run profileapply; employer: serve:inbox + serve:index, dashboard /hap. Replace <your-github>.

§3 · Where HAP sits

An A2A profile.
Async, candidate-first.

HAP is to Google's A2A what HTTP is to TCP. A2A is the envelope; HAP standardizes the payload — and it's store-and-forward, so neither side has to be online at once.

  • Four messages — hap.posting, hap.application, hap.receipt, hap.profile — with published JSON Schema.
  • Employers publish a posting (a JD + rubric) as static data; no agent required to post.
  • The candidate-agent submits one evidenced packet; a neutral scorer dereferences and scores it.
  • An opt-in index makes a candidate discoverable, ranked by verified signal, with contact gated.
your candidate-agent any LLM · BYO
builds a profile, applies with evidence — runs and exits
hap.v0.2 · skill
posting · application · receipt · profile · verified score · discovery
A2A · agent2agent
envelope · agent card · routing · auth · open standard
HTTPS · store-and-forward
no central broker · no always-on candidate server

§3 · The spec · v0.2

Four messages. One open spec.

Employer publishes a hap.posting; the candidate-agent returns a hap.application; the inbox replies with a hap.receipt and a neutral, dereferenced score. A candidate-owned hap.profilepowers opt-in discovery. All four have machine-readable JSON Schema.

§4 · How HAP differs · honestly

A protocol, a job board, and a screening bot
walk into a hiring conversation.

We get asked "isn't this just another X?" a lot. Short answer: no. Long answer below. Where we lose, we say so.

HAP
Job board / ATS (centralized)
AI résumé screener (self-reported)
trust root
dereferenced evidence + proof-of-control
the platform's database
the résumé's own words
what gets scored
verified artifacts — not the agent's prose
keywords + recruiter eyeballing
an LLM reading self-reported claims
who owns the data
the candidate — profile + contact stay with you
the platform owns the graph
whatever you upload, ranked
cost / access
free · unlimited · agent-friendly
paid · daily caps · bans bots
per-seat SaaS
ships today
v0.2 · MIT · runnable demo + JSON Schema
yes (and owns the pipe)
yes (and trusts the text)
where we lose
spec is v0.x · adoption is early · best for technical/IC roles today
we don't track applications (we're not an ATS)
no model tuned on your exact funnel (yet)

§6 · FAQ · for the skeptical reader

"Isn't this just X?"

Can't a candidate's agent just lie?
It can write anything — and the writing scores nothing. The scorer ignores the prose and the self-rated confidence; it dereferences each cited link and scores only what checks out. A fabricated citation isn't a small deduction, it's a hard gate to no_fit. Declining honestly ("no evidence") costs nothing.
How do you know the GitHub account is really theirs?
By default the anchor is asserted. A proof_of_control gist (a HAP-PROOF marker under that account) makes it proven; v0.3 adds one-click GitHub OAuth. The residual gap (wholesale impersonation of a public account) is acknowledged, not hidden.
Does it read my private code or Claude chats?
No. Scoring uses only public evidence. The Claude Code footprint is opt-in and reads metadata only — project names + session counts, never transcript contents — and stays on your machine; only what you see goes into your profile.
What stops spam — both ways?
Applying is candidate-initiated and targeted (auto-apply is gated by a match threshold + a cap). Discovery never exposes contact; a recruiter must request it, rate-limited by your terms, with a blocklist. No bot bans — abuse is priced by verification + reputation.

Your work already speaks. Let your agent use it.

It's MIT. It's v0.2. The fastest way to judge it is to run it and watch your work get scored on what it can prove.

★ Star on GitHub→ read the spec