[Lobsters 요약] SHOBR: 브라우저 자동화, 이벤트 소싱, LLM을 활용한 구직 CLI 도구
26
설명
2026년 구직 시장을 겨냥한 SHOBR은 브라우저 자동화와 이벤트 소싱, 그리고 최소한의 LLM 활용을 결합한 새로운 형태의 구직 자동화 CLI 도구입니다.
이 도구는 사용자의 일상 브라우저를 직접 제어하는 beachpatrol과 이력서 관리를 위한 roffume을 기반으로 합니다.
SHOBR은 'Hacker-in-the-Loop' 접근 방식을 채택하여, 자동화된 초안 작성 및 검증 과정을 거치지만 최종 제출은 사용자가 직접 수행하도록 설계되었습니다.
### 배경 설명
현대의 구직 과정은 복잡하고 시간이 많이 소요되며, 특히 온라인 채용 플랫폼의 등장으로 인해 자동화 도구에 대한 수요가 증가하고 있습니다. 기존의 많은 구직 자동화 도구들은 헤드리스 브라우저를 사용하거나 사용자의 인증 정보를 직접 요구하는 방식이었으나, 이는 탐지될 위험이 높거나 보안상의 우려를 야기할 수 있습니다. SHOBR은 이러한 문제점을 해결하기 위해 사용자의 일상 브라우저를 직접 제어하는 beachpatrol을 활용하여 'Daily-Driver Stealth'를 구현했습니다. 이는 마치 사용자가 직접 브라우저를 조작하는 것처럼 보이게 하여 탐지를 회피하고, 동시에 사용자의 인증된 세션을 그대로 활용할 수 있게 합니다. 또한, LLM 활용을 최소화하면서도 이력서 맞춤화와 같은 핵심 기능을 수행하도록 설계되어, LLM 제공업체에 대한 의존도를 낮추고 유연성을 확보했습니다. 이벤트 소싱 패턴을 채택하여 모든 데이터 변경 사항을 기록하고 이를 기반으로 상태를 재구성할 수 있어, 작업 중단이나 규칙 변경 시에도 데이터 손실 없이 복구 및 재계산이 가능하다는 점은 이 도구의 중요한 특징입니다.
### SHOBR의 디자인 철학 및 핵심 기능
SHOBR은 'Daily-Driver Stealth'와 'Human-in-the-Loop'라는 두 가지 핵심 철학을 기반으로 설계되었습니다. 'Daily-Driver Stealth'는 beachpatrol을 사용하여 사용자의 실제 브라우저를 자동화함으로써, 마치 일반 사용자가 탐색하는 것처럼 보이게 하여 탐지를 회피합니다. 이는 헤드리스 브라우저나 별도의 인증 정보 추출 없이도 안전하게 자동화를 수행할 수 있게 합니다. 'Human-in-the-Loop'는 SHOBR이 이력서 초안 작성, 제안 및 검증을 돕지만, 최종 지원서 제출은 사용자가 직접 하도록 하여 통제권을 유지하도록 합니다. 이는 'spray and pray' 방식의 무분별한 지원이 아닌, 신중하고 검증된 지원 과정을 보장합니다.
LLM 활용은 'LLM-light By Design' 원칙에 따라 최소화되었습니다. 고품질의 이력서 튜닝을 위해 LLM이 필요하지만, SHOBR은 필요한 만큼만 사용하며 별도의 에이전트 드라이버를 요구하지 않습니다. 또한, 'LLM-provider-Agnostic' 설계를 통해 OpenAI, Anthropic, 로컬 모델 등 다양한 LLM 제공업체를 지원하며, faaah를 통해 로컬 LLM 에이전트 구독을 활용할 수도 있습니다. 데이터 관리는 'Event-Sourced Data' 방식을 채택하여, 발견된 채용 공고, 스크리닝, 추적 등의 모든 데이터가 append-only JSONL 이벤트 로그에 저장되고 상태 파일로 투영됩니다. 이를 통해 파이프라인 중단이나 규칙 변경 시에도 데이터 손실 없이 언제든지 재계산이 가능합니다. 이력서 관리는 Markdown 기반으로 이루어지며, Groff와 Pandoc을 통해 ATS(Applicant Tracking System) 호환 PDF로 컴파일됩니다. 모든 결과물은 각 지원서별 폴더에 저장됩니다. 개발 방식은 'Full E2E Red-Green TDD'를 따르며, 3500 LOC(주석 포함)로 비교적 간결하게 유지되었습니다.
### 설치 및 구성 방법
SHOBR을 설치하기 위해서는 Python 3.14 이상과 uv 패키지 관리자가 필요합니다. 먼저 GitHub에서 shobr 저장소를 클론하고, uv sync 명령어로 종속성을 설치합니다. 이후 uv tool install . 명령어를 통해 shobr CLI를 PATH에 추가합니다. SHOBR은 roffume을 사용하여 Markdown 이력서를 PDF로 컴파일하므로, groff와 pandoc과 같은 표준 Unix 텍스트 처리 도구가 시스템에 설치되어 있어야 합니다.
설치 후에는 shobr setup 명령어를 실행하여 $XDG_CONFIG_HOME/shobr/config.toml 파일, 프로필 템플릿, 그리고 beachpatrol 명령어를 위한 심볼릭 링크를 생성합니다. config.toml 파일을 사용자의 환경에 맞게 설정해야 하며, 특히 LinkedIn에 로그인된 beachpatrol 프로필 이름을 beachpatrol_profile 키에 지정해야 합니다. LLM 관련 설정은 환경 변수(OPENAI_API_KEY, SHOBR_AI_MODEL, OPENAI_BASE_URL)를 통해 구성하며, any-llm-sdk를 통해 다양한 LLM API 제공업체를 사용할 수 있습니다. 메인 CV 경로는 SHOBR_MAIN_CV_PATH 환경 변수로 지정하거나, 기본값인 <cv_toolchain_dir>/resume.md를 사용합니다. CV 툴체인 디렉토리는 첫 번째 'tailor' 단계 실행 시 자동으로 클론되거나, config.toml에서 지정할 수 있습니다.
### SHOBR 파이프라인 및 CLI 명령어
SHOBR은 구직 과정을 5단계의 파이프라인으로 구성합니다. 각 단계는 CLI 명령어를 통해 실행하거나, shobr next 명령어를 사용하여 다음 논리적 단계를 자동으로 진행할 수 있습니다. 각 단계별 상세 상태는 shobr status 명령어로 확인할 수 있습니다.
1. **Discovery**: LinkedIn의 채용 공고 검색 결과를 키워드와 위치 설정에 따라 스크랩하고, 기본적인 정규 표현식 필터를 적용합니다. `shobr discover` 명령어로 실제 스크랩을 트리거합니다.
2. **Enrichment**: 개별 채용 공고 페이지를 방문하여 상세 설명, 급여 범위, Easy Apply 링크 등을 추출합니다. 요청 속도를 조절하여 속도 제한을 피합니다. `shobr enrich-next` 명령어로 다음 비처리된 리드의 상세 정보를 가져옵니다.
3. **Screening**: 개인 프로필과 'deal-breakers'를 기준으로 채용 공고를 평가합니다. `shobr screen-llm-next`는 LLM을 사용하여 다음 리드를 평가하고 이유를 작성하며, `shobr screen-next`는 사용자가 직접 점수와 이유를 입력하도록 합니다.
4. **Tailoring**: 'Pursue'로 표시된 공고에 대해 LLM을 사용하여 기본 이력서를 관련 기술을 강조하도록 재작성합니다. 이후 roffume (Groff/Pandoc) 툴체인을 사용하여 이력서가 한 페이지를 넘지 않도록 반복적으로 조정합니다. `shobr tailor-next` 명령어로 다음 지원 가능한 공고에 대한 이력서 및 커버레터 패키지를 생성합니다.
5. **Tracking**: 지원서 진행 상황을 Kanban 스타일로 추적합니다. `shobr track <posting_id> <status>` 명령어로 지원 상태를 업데이트하고, `shobr tracked` 명령어로 전체 파이프라인 현황을 개괄적으로 확인합니다.
### 가치와 인사이트
SHOBR은 기존 구직 자동화 도구의 한계를 극복하며, 사용자의 일상 브라우저를 활용한 'Daily-Driver Stealth'와 'Human-in-the-Loop' 접근 방식을 통해 안전성과 통제력을 동시에 제공합니다. LLM 활용을 최소화하고 이벤트 소싱 패턴을 도입하여 데이터의 영속성과 복원력을 확보한 점은 주목할 만합니다. 또한, Markdown 기반의 이력서 관리와 Groff/Pandoc을 활용한 PDF 생성은 ATS 호환성을 높이며, CLI 중심의 설계는 자동화 및 스크립팅에 익숙한 개발자들에게 매력적인 선택지가 될 수 있습니다. LinkedIn에 국한된 현재의 제약에도 불구하고, 코드의 유연성은 향후 다른 플랫폼으로의 확장을 용이하게 할 잠재력을 가지고 있습니다.
### 기술·메타
- Python
- beachpatrol (Browser Automation)
- roffume (Resume Management)
- Groff & Pandoc (PDF Generation)
- LLM (any-llm-sdk)
- Event Sourcing
- CLI (Command Line Interface)
- Markdown
- TDD (Test-Driven Development)
### 향후 전망
SHOBR의 향후 전망은 LinkedIn의 DOM 구조 변화에 대한 대응 능력과 LLM 통합의 확장성에 달려 있습니다. LinkedIn의 잦은 UI 변경은 추출 로직의 불안정성을 야기할 수 있으나, 개발자는 LLM을 활용하여 이러한 변화에 신속하게 대응할 수 있을 것으로 기대됩니다. 또한, 현재는 LLM 활용을 최소화하고 있지만, 사용자의 요구에 따라 더 많은 LLM 기능을 통합하거나, 로컬 LLM 에이전트와의 연동을 강화하는 방향으로 발전할 수 있습니다. 현재는 LinkedIn에만 집중되어 있지만, 코드의 추상화 수준을 높여 다른 채용 플랫폼으로의 확장 가능성도 열려 있습니다. 커뮤니티의 참여와 기여를 통해 기능이 개선되고 새로운 기능이 추가될 가능성도 존재합니다. beachpatrol의 하드 요구사항은 사용자에게 추가적인 설치 부담을 줄 수 있으나, 이는 SHOBR의 핵심적인 차별점이기도 합니다.
📝 원문 및 참고
- Source: Lobsters
- 토론(Lobsters): [lobste.rs](https://lobste.rs/s/bslggr/shobr_job_seach_cli_via_browser)
- 원문: [링크 열기](https://github.com/sebastiancarlos/shobr)
---
출처: Lobsters · [원문 링크](https://github.com/sebastiancarlos/shobr)
이 글에 대한 한 줄 의견
신고 · 불법·유해·아동 안전(CSAE) 관련 콘텐츠

댓글 0
아직 댓글이 없습니다. 로그인하면 바로 의견을 남길 수 있습니다.