Files
santifer--career-ops/modes/ko/pipeline.md
T
wehub-resource-sync d083df1fdb
CodeQL Analysis / Analyze (javascript-typescript) (push) Failing after 2s
Web CI / web typecheck + build (push) Failing after 1s
Release Please / release-please (push) Failing after 1s
CodeQL Analysis / Analyze (go) (push) Failing after 16s
chore: import upstream snapshot with attribution
2026-07-13 12:02:43 +08:00

3.4 KiB

모드: pipeline -- URL Inbox (Second Brain)

data/pipeline.md에 쌓인 채용 공고 URL을 처리합니다. 후보자는 원할 때 URL을 추가하고, 이후 /career-ops pipeline을 실행해 한 번에 처리합니다.

Workflow

  1. 읽기 data/pipeline.md -> "대기" / "Pending" / "Pendientes" 섹션의 - [ ] item 찾기
  2. 각 대기 URL에 대해: a. node reserve-report-num.mjs를 실행해 다음 sequential REPORT_NUM을 atomic하게 예약합니다(report 작성 후 node reserve-report-num.mjs --release <num>으로 sentinel 해제). b. 공고 추출: Playwright(browser_navigate + browser_snapshot) -> WebFetch -> WebSearch c. URL에 접근할 수 없으면 note와 함께 - [!]로 표시하고 계속합니다. d. 전체 auto-pipeline 실행: Evaluation A-F -> Report .md -> PDF(score >= 3.0이면) -> Tracker e. "대기"에서 "처리 완료"로 이동: - [x] #NNN | URL | Company | Role | Score/5 | PDF yes/no
  3. 대기 URL이 3개 이상이어도 Playwright-backed 처리는 직렬로 실행합니다. Playwright browser instance를 공유하므로 여러 browser-backed agent를 동시에 띄우지 않습니다. 병렬화가 필요하면 Playwright를 쓰지 않는 non-browser 작업에만 제한합니다.
  4. 마지막에 요약 표를 표시합니다.
| # | Company | Role | Score | PDF | Recommended action |

pipeline.md format

## 대기
- [ ] https://jobs.example.com/posting/123
- [ ] https://boards.greenhouse.io/company/jobs/456 | Company Ltd | Senior PM
- [!] https://private.url/job -- Error: login required

## 처리 완료
- [x] #143 | https://jobs.example.com/posting/789 | Acme Korea | AI PM | 4.2/5 | PDF yes
- [x] #144 | https://boards.greenhouse.io/xyz/jobs/012 | BigCo | SA | 2.1/5 | PDF no

Note: 섹션 heading은 EN("Pending"/"Processed"), ES("Pendientes"/"Procesadas"), DE("Offen"/"Verarbeitet"), FR("En attente"/"Traitees"), KO("대기"/"처리 완료") 모두 유연하게 읽습니다. 쓸 때는 기존 파일의 style을 따릅니다.

URL에서 공고를 지능적으로 감지

  1. Playwright (preferred): browser_navigate + browser_snapshot. 모든 SPA에 대응합니다.
  2. WebFetch (fallback): 정적 페이지 또는 Playwright를 사용할 수 없을 때 사용합니다.
  3. WebSearch (last resort): 공고를 index하는 secondary portal에서 검색합니다.

특수 케이스:

  • LinkedIn: login이 필요할 수 있음 -> [!]로 표시하고 후보자에게 공고 text를 붙여넣어 달라고 요청
  • PDF: URL이 PDF를 가리키면 Read tool로 직접 읽기
  • local: prefix: 로컬 파일 읽기. 예: local:jds/linkedin-pm-ai.md -> jds/linkedin-pm-ai.md 읽기
  • 원티드 / 리멤버 / 잡코리아 / 사람인 / LinkedIn KR: 한국 시장에서 자주 쓰는 portal. cookie banner나 login wall이 있으면 Playwright로 먼저 확인

자동 번호 부여

  1. node reserve-report-num.mjs를 실행해 다음 sequential number를 예약합니다(stdout이 {###} 반환).
  2. 해당 번호로 report를 작성합니다.
  3. report 작성 후 node reserve-report-num.mjs --release {###}를 실행해 sentinel을 해제합니다.

Source sync

URL을 처리하기 전에 sync를 확인합니다.

node cv-sync-check.mjs

sync 문제가 있으면 계속하기 전에 후보자에게 알립니다.