TL;DR

  • Hacker News(HN)의 월간 ‘Who is hiring?’ 게시물 수백 개를 이력서와 조건에 따라 로컬에서 평가하고, 설명·이메일 초안·지원서 사전 입력까지 처리하는 도구임.
  • 직무 우선순위, 근무 가능 지역, 경력 수준, 제외 조건을 반영해 게시물마다 0~100점을 매기며, 점수 근거와 우려 사항을 실제 경력과 채용 요건을 인용해 제시함.
  • 급여·회사 단계·기술 스택·지원 방법을 추출하고, 직무·지역 적합도·상태·점수 필터와 키보드 단축키를 제공함.
  • Claude Code 구독 또는 지원되는 로그인 방식으로 작동하며 별도 설치 패키지나 API 키가 필요하지 않고, 데이터는 로컬에 저장됨.
  • 이메일 초안 작성과 Chrome 지원서 입력을 대기열에 넣을 수 있으며, 전송·제출은 수행하지 않고 최종 동작은 사용자가 직접 해야 함.

기능

  • 매달 수백 개에 달하는 게시물을 모두 읽는 대신, 이력서와 원하는 조건에 맞춰 게시물을 평가하고 점수별로 정렬함.
  • 점수에는 직무 우선순위, 근무 가능 지역, 경력 수준, 제외 조건을 반영함. 기술 스택이 맞더라도 ‘베를린 출근’이 ‘미국 원격 근무’보다 높은 순위를 차지하지 않도록 지역 적합도를 고려함.
  • 각 매치에 적합한 이유와 지원을 막을 수 있는 요소를 표시하고, 이력서의 실제 경험과 게시물의 요구 사항을 대조해 인용함.
  • 자유 형식 게시물에서 급여, 회사 단계, 기술 스택, 지원 방법을 추출하며 직무·지역 적합도·상태·점수 기준 필터를 제공함.
  • 게시물의 지침을 따르는 짧고 구체적인 이메일을 한 번의 클릭으로 작성함. Gmail 작성 화면에서 열거나 이력서를 첨부한 Gmail 초안으로 대기열에 넣을 수 있음.
  • 지원 건을 대기열에 넣으면 Claude Code가 프로필을 바탕으로 Chrome의 지원서를 채우고 이력서를 첨부한 뒤 제출 직전에 멈춤.
  • 키보드로 목록을 처리하는 단축키는 j/k 이동, i 관심 표시, a 지원 완료 표시, s 건너뛰기, d 초안 작성, o 지원 링크 열기임.

빠른 시작

  • Python 3.10 이상과 설치 및 로그인이 완료된 Claude Code가 필요하며, claude가 경로에 있어야 함. pip 설치나 API 키는 필요하지 않음.
  • 소스 저장소는 GitHub에서 받아 python3 server.py로 실행함.
  • http://localhost:8787을 연 뒤 프로필을 작성함. 이력서 PDF를 올리면 텍스트를 추출하며, 직무 초점·근무 지역·일반 지원 답변도 설정함.
  • Refresh를 누르면 해당 월의 스레드를 찾아 모든 게시물을 가져와 점수를 매김. 게시물 약 180개 처리에 약 2분이 걸림.
  • 목록을 위에서부터 검토하며, 월중 다시 새로 고침하면 새 게시물이나 수정된 게시물만 점수를 다시 매김.

Claude 구독 사용

  • 모든 모델 호출은 claude -p를 통하므로 Claude Code에 로그인된 계정을 사용함. Pro 또는 Max 구독, API 키, Bedrock, Vertex를 사용할 수 있음.
  • 구독 사용 시 점수 산정은 요금제 사용량 한도에 포함되며 호출별 요금이 청구되지는 않음. 로그의 달러 금액은 API 요금 기준 추정치임.
  • Sonnet으로 게시물 179개를 처리한 비용은 API 요금 기준 약 2달러임.
  • 비용을 줄이려면 python3 match.py <key> --model haiku로 실행함.
  • 게시물은 수정되거나 프로필이 바뀔 때만 다시 점수를 매기는 캐시 방식임.

Claude로 지원하기

  • 각 채용 게시물에는 Queue Gmail draft + resume과 Queue form prefill 버튼이 있으며, 각각 Gmail 초안 작성과 지원서 사전 입력을 대기열에 넣음.
  • 이 폴더에서 Claude Code를 열고 process the outreach queue라고 입력하면 CLAUDE.md의 지침에 따라 이력서를 첨부한 Gmail 초안을 만들거나 프로필을 바탕으로 Chrome에서 지원서를 작성함.
  • 이메일을 전송하거나 지원서를 제출하지 않으며, 각 지원 과정은 사용자가 버튼을 클릭해야 끝남. 계정을 만들거나 비밀번호를 입력하지 않음.
  • 자유 서술형 답변은 이력서에서 가져오고, 기술 역량 체크박스는 프로필에 근거가 있을 때만 선택함.
  • Gmail 및 Chrome 단계에는 Gmail 커넥터(MCP)와 Claude Code의 Claude in Chrome 확장 프로그램이 필요함. 그 밖의 기능은 해당 도구 없이 작동함.

데모 프로필

  • HN_PROFILE_DIR=examples/demo_profile HN_DATA_DIR=/tmp/hn-demo python3 server.py로 데모 프로필을 실행함.
  • 예시 프로필은 브루클린에 거주하는 가상의 시니어 풀스택·인공지능 엔지니어이며, 화면 예시는 이 프로필을 기반으로 함.

데이터 로컬 저장

  • 프로필, 이력서, 수집한 게시물은 profile/과 data/에 저장되며 두 디렉터리는 Git 추적 대상에서 제외됨.
  • 데이터는 Claude Code가 Claude에 보내는 프롬프트를 제외하면 외부로 업로드되지 않음.
  • HN_PROFILE_DIR 및 HN_DATA_DIR 환경 변수로 각 디렉터리 위치를 변경할 수 있음.

작동 방식

  • 수집 — scrape.py: HN의 Algolia 검색으로 최신 스레드를 찾은 뒤 공식 HN API에서 최상위 게시물을 모두 가져옴. 다시 실행해도 최초 발견 시각을 유지하며 수정·삭제된 게시물을 표시함.
  • 점수 산정 — match.py: 게시물을 6개씩 묶어 프로필 및 이력서와 함께 claude -p로 보내고, 점수·근거·우려 사항·근무 방식·급여·지원 방법을 포함한 구조화된 JSON을 받음.
  • 검토 — server.py: 대시보드와 프로필 페이지를 제공하는 표준 라이브러리 기반 웹 서버이며, 새로 고침 작업을 백그라운드에서 실행함.
  • 이메일 작성 — outreach.py: 이력서, 게시물, 매치 이유를 바탕으로 이메일 초안을 작성함.
  • python3 scrape.py로 해당 월의 스레드를 가져오고, python3 scrape.py 2026-09 <item id>로 HN 항목 ID를 사용해 임의의 스레드를 등록함.
  • python3 match.py 2026-10 --limit 20으로 게시물 일부만 점수화하고, python3 server.py 2026-09 --port 9000으로 이전 스레드에 대시보드를 고정함.
  • macOS에서 테스트했으며 Linux에서도 작동할 것으로 예상하지만 Windows는 테스트하지 않음.

라이선스

  • MIT 라이선스임.