careermate 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +33 -0
- package/dist/doctor.mjs +1 -1
- package/dist/mcp.mjs +1 -1
- package/dist/web.mjs +1 -1
- package/docs/FAQ.md +101 -0
- package/docs/MCP_TOOLS.md +292 -0
- package/docs/START_WORKFLOW.md +137 -0
- package/docs/SUPPORTED_AI_APPS.md +112 -0
- package/docs/WORKFLOWS.md +202 -0
- package/docs/career-os/README.md +76 -0
- package/docs/career-os/eop/cover-letter.md +46 -0
- package/docs/career-os/eop/fit-analysis.md +48 -0
- package/docs/career-os/eop/interview-prep.md +39 -0
- package/docs/career-os/eop/job-analysis.md +42 -0
- package/docs/career-os/eop/profile-extraction.md +37 -0
- package/docs/career-os/knowledge/ats.md +131 -0
- package/docs/career-os/knowledge/company-research.md +137 -0
- package/docs/career-os/knowledge/cover-letter.md +135 -0
- package/docs/career-os/knowledge/fit-matching.md +121 -0
- package/docs/career-os/knowledge/human-writing.md +118 -0
- package/docs/career-os/knowledge/interview-behavioral.md +132 -0
- package/docs/career-os/knowledge/interview-technical.md +126 -0
- package/docs/career-os/knowledge/linkedin-profile.md +152 -0
- package/docs/career-os/knowledge/networking-referrals.md +166 -0
- package/docs/career-os/knowledge/offer-evaluation-decision.md +121 -0
- package/docs/career-os/knowledge/onboarding-first-90-days.md +126 -0
- package/docs/career-os/knowledge/portfolio.md +121 -0
- package/docs/career-os/knowledge/recruiter-screen.md +105 -0
- package/docs/career-os/knowledge/rejection-triage-iteration.md +115 -0
- package/docs/career-os/knowledge/resume.md +123 -0
- package/docs/career-os/knowledge/salary-negotiation.md +123 -0
- package/docs/career-os/knowledge/verifiers/ats-compat.md +64 -0
- package/docs/career-os/knowledge/verifiers/consistency.md +61 -0
- package/docs/career-os/knowledge/verifiers/human-voice.md +82 -0
- package/docs/career-os/knowledge/verifiers/recency-staleness.md +72 -0
- package/docs/career-os/knowledge/verifiers/responsiveness-on-target.md +82 -0
- package/docs/career-os/knowledge/verifiers/truthfulness.md +67 -0
- package/package.json +11 -2
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
# LinkedIn 프로필 / LinkedIn Profile — CareerMate 지식 (Phase A)
|
|
2
|
+
|
|
3
|
+
> 이 문서는 CareerMate가 **연결된 AI에게 제공(serve)** 하는 지식이다. CareerMate 안에는 LLM이 없다 — 분석·작성·검증은 연결된 AI가 수행하고, 이 플레이북·루브릭은 그 AI가 **세계 최고 수준**으로 일하도록 안내한다.
|
|
4
|
+
|
|
5
|
+
## 1. 무엇을 하는가
|
|
6
|
+
|
|
7
|
+
LinkedIn 프로필을 **(1) 리크루터 검색에 노출되고(키워드·완성도), (2) 5~10초 스캔에서 클릭을 유발하며(헤드라인·About 첫 문장), (3) 신뢰를 증명하는(추천서·정량 성과·Featured)** 세 축으로 최적화하기 위한 플레이북과, **LLM 없이 셀 수 있는 자가검증 루브릭**이다. CareerMate에는 LLM이 없으므로, 연결된 외부 AI(Claude/GPT/Gemini)가 이 규칙으로 프로필 초안을 작성·진단하고, `validate_linkedin_profile`이 루브릭을 기계적으로(개수·존재·비율·정규식) 실행한다.
|
|
8
|
+
|
|
9
|
+
**책임 경계(매우 중요):** 키워드 기반 검사는 모두 **타깃 키워드 사전**을 전제한다. 이 사전(동의어·한영 매핑·약어 확장 포함)을 만드는 일은 **의미 판단이라 외부 AI의 몫**이다 — AI가 `get_application_context`(타깃 공고 JD)로 사전을 채워 넘기면, validate는 그 사전을 받아 **기계적 부분문자열 매칭**만 한다. 사전이 비었거나 부실하면 키워드 체크는 `INSUFFICIENT_INPUT`을 반환하고 통과/실패를 판정하지 않는다. 즉 "LLM 없이 측정"은 *사전이 주어진 뒤*의 매칭에 한정된다.
|
|
10
|
+
|
|
11
|
+
## 2. 플레이북
|
|
12
|
+
|
|
13
|
+
### 원칙
|
|
14
|
+
|
|
15
|
+
- **헤드라인 하드 상한은 220자다. '핵심 키워드·가치제안을 앞 120자 안에 front-load'는 *권장*이지 상한이 아니다.** — LinkedIn은 2020년부터 헤드라인 220자를 허용한다. 모바일·검색 미리보기는 앞부분을 잘라 보여주므로 가장 중요한 직무 키워드와 1개 가치제안을 앞쪽에 둔다. 120을 한도처럼 강제하면 220자까지의 키워드 공간 절반을 버린다. _(출처: LinkedIn 헤드라인 사양(220자) — 권장 임계와 하드 상한을 분리)_
|
|
16
|
+
- **헤드라인은 '직무 타이틀 + 핵심 스택/전문성 + 정량 결과 또는 도메인'을 담고, 가장 중요한 키워드를 맨 앞에 둔다. 단, 검색용 키워드와 *사람이 읽는 가치제안*을 모두 만족시키되 구분자(`|`·`·`) 남발로 가독성을 죽이지 않는다.** — 헤드라인은 검색·연결요청·댓글 등 모든 노출 지점에 따라붙고 키워드 가중치가 가장 크다. 그러나 키워드 떡칠은 검색엔 잡혀도 클릭을 잃는다. 구분자 3~4개 이내로 묶고 사람이 읽는 1개 핵심 메시지를 보장한다. _(출처: LinkedIn 공식 키워드 가이드 · 리크루터 검색의 키워드 관련성 신호[업계 SEO 분석, 추정])_
|
|
17
|
+
- **About 첫 2~3문장에 타깃 직무 키워드 + 정량 성과 1개 이상을 넣고, 1인칭 내러티브로 쓴다.** — About은 '더 보기' 펼침 전 앞부분만 기본 노출되며 검색 키워드 스캔 대상이다. *About은 서사형(narrative)이 잘 먹히는 매체*이므로 이력서식 불릿 규칙(XYZ 70%)을 그대로 이식하지 않는다 — 톤 우선, 키워드·수치는 자연스럽게. _(출처: LinkedIn 공식 키워드 가이드 · LinkedIn 프로필 최적화 가이드[블로그, 2차])_
|
|
18
|
+
- **Experience 불릿은 Google XYZ('무엇을 X / 얼마만큼 Y / 어떻게 Z')로 쓴다 — 단, 정량이 본질적으로 어려운 직군(디자인·PM 초기·연구·법무·공공·신입)은 *규모/범위*(사용자 수·팀 규모·처리량)로 대체하고, 그래도 불가하면 결과 동사 + 범위 서술로 충족한다.** — XYZ는 '담당했다'식 책임 나열 대신 측정 가능한 임팩트를 강제한다. 그러나 단일 '수치 70%' 바는 절반의 직군에 비현실적이므로 fallback을 둔다. _(출처: Bill Murphy Jr.(Inc.com)가 정리한 Google 리크루터 XYZ 공식 — Laszlo Bock 'Work Rules!'에 영감을 둔 2차 해석본; UT Austin Law 배포 PDF는 그 Inc 기사 재배포)_
|
|
19
|
+
- **프로필 강도를 위해 핵심 섹션을 폭넓게 채운다: 사진·위치·산업·학력·현재 직책·스킬·About(요약), 그리고 Featured(포트폴리오·글·링크).** — LinkedIn Help는 이 섹션 완성이 발견성·검색 노출을 높인다고 본다. 다만 LinkedIn은 2022년경부터 'All-Star/profile strength meter'를 공개 UI에서 상당히 약화·제거했으므로 "공식 7개 배지"로 단정하지 않는다 — *대략 이 섹션들을 채우면 강함* 수준으로 본다. Featured는 클릭·신뢰에 크다. _(출처: LinkedIn 공식 Help: Your Profile level meter(a594698) — 현행 UI 변동 가능성 라벨링)_
|
|
20
|
+
- **스킬은 타깃 직무 핵심 하드스킬로 채우고(최소 5개), 핵심 스킬을 상단 고정(pin)하며, 가능하면 각 스킬을 Experience/Education 항목에 *연결(skill associations)* 한다. 무관 스킬로 상한(50)까지 채우지 않는다 — 관련성 신호가 희석된다.** — 2026년 LinkedIn은 단순 나열보다 스킬-경력 연결을 검색·신뢰에 반영한다. 헤드라인·About·Experience의 키워드와 스킬을 일치시켜 관련성 신호를 중복 강화한다. _(출처: LinkedIn 공식 키워드 가이드 · 스킬 연결 기능[2026 현행])_
|
|
21
|
+
- **사회적 증거는 추천서(Recommendations) 중심이다. 다른 관계(상사/동료/고객)에서 1~2개 이상 받는다. 엔도스먼트는 *보조 신호*로 격하한다 — 가중치가 크게 줄었고 품앗이가 가능해 리크루터 다수가 거의 무시한다.** — 추천서는 자기서술을 제3자가 검증하는 신뢰 레이어이고 별도 섹션으로 노출된다. skill assessment 배지도 엔도스먼트보다 강하다. _(출처: 리크루터 대상 LinkedIn 최적화 가이드[블로그, 2025–2026, 2차] — 엔도스먼트 가중치 재조정 반영)_
|
|
22
|
+
- **네트워크와 활동성도 노출을 좌우한다(통제 가능한 부분만): 연결 200+/500+ 확보, 타깃 업계 종사자와 연결, 주기적 활동(주 1회 글/댓글).** — LinkedIn Recruiter 검색에서 네트워크 거리(1/2/3촌)·활동성은 키워드 매칭만큼, 종종 그 이상으로 노출을 좌우한다. 키워드만 완벽해도 네트워크가 빈약하면 검색 하단이다. *네트워크 '거리' 자체는 후보가 통제 불가(검증 제외)*, 연결 수·활동 존재는 통제 가능(검증 포함). _(출처: 리크루터 검색 신호 분석[업계 SEO, 추정] — '추정된 알고리즘'이며 LinkedIn 공식 확정 사실 아님)_
|
|
23
|
+
- **신선도(freshness)를 유지한다: 직책·About·스킬을 주기적으로 갱신하고, 채용 시즌엔 'Open to Work'를 켠다.** — 검색 알고리즘은 최근 갱신 정도를 신호에 포함한다(추정). 정체된 프로필은 강도가 높아도 내부 랭킹을 잃는다. _(출처: 리크루터 검색 신호 분석[추정] · LinkedIn SEO 분석[블로그])_
|
|
24
|
+
- **한국 사용자는 핵심 필드를 국문/영문 병기하거나 다국어 프로필을 쓰되, 글로벌·외국계 타깃이면 영문을 1차로 둔다. 회사명·고유명사·수치는 원문 그대로 보존한다.** — 외국계·헤드헌팅·스타트업은 영문 LinkedIn 검색을 쓴다. 병기는 양쪽 검색에 잡히게 하고, 고유명사·수치 보존은 할루시네이션을 막는다. *병기 시 글자수·키워드가 두 배로 잡히므로 density 상한 적용은 단일 언어 기준으로 분리한다.* _(출처: AGENTS.md 사실·수치·고유명사 보존 원칙 · LinkedIn 다국어 프로필 기능)_
|
|
25
|
+
|
|
26
|
+
### Do
|
|
27
|
+
|
|
28
|
+
- 헤드라인: 타깃 직무 + 핵심 스택/전문성 + 정량 결과/도메인을 앞 120자에 front-load(하드 상한 220자), 구분자 3~4개 이내.
|
|
29
|
+
- About 첫 2~3문장에 타깃 직무 키워드 + 정량 성과 1개 이상, 1인칭 서사로.
|
|
30
|
+
- About 전체에 직무 관련 키워드를 자연스럽게 분산(과밀·반복 금지).
|
|
31
|
+
- Experience 불릿을 XYZ로; 정량이 어려우면 규모/범위로 대체.
|
|
32
|
+
- 핵심 섹션(사진·위치·산업·학력·직책·스킬·About) + Featured 채우기.
|
|
33
|
+
- 스킬 ≥5개, 핵심 스킬 상단 고정 + Experience/Education에 연결, 키워드 일치.
|
|
34
|
+
- 추천서 1~2개를 *다른 관계*에서 확보(엔도스먼트는 보조).
|
|
35
|
+
- 연결 200+ 확보 + 주기적 활동(주 1회), 채용 시즌 Open to Work 활성화.
|
|
36
|
+
- 직책·About·스킬 주기적 갱신(신선도).
|
|
37
|
+
- 국문/영문 병기 또는 다국어 프로필; 회사명·날짜·수치·고유명사 원문 보존.
|
|
38
|
+
|
|
39
|
+
### Don't
|
|
40
|
+
|
|
41
|
+
- 'Experienced Professional', '열정적인 OO', '문제 해결사', 'results-driven' 같은 추상어만으로 헤드라인 채우기.
|
|
42
|
+
- 헤드라인을 '직책 @ 회사명'만으로 채워 키워드/결과 누락.
|
|
43
|
+
- 키워드 떡칠(같은 키워드 반복 나열, 구분자 범벅)로 검색·가독성 모두 손해.
|
|
44
|
+
- Experience를 '담당/책임/수행/진행/관리/지원/대응/처리/운영'(영문: Responsible for/Worked on/Helped/Assisted/Involved in)식 책임 나열로만 쓰고 수치/규모 누락.
|
|
45
|
+
- About을 3인칭 보도자료체·버즈워드(synergy, results-driven)·인사말/잡담으로 낭비.
|
|
46
|
+
- 무관 스킬을 상한까지 채워 관련성 희석; 스킬을 5개 미만 방치.
|
|
47
|
+
- 엔도스먼트를 추천서와 동급으로 과대평가.
|
|
48
|
+
- 검증되지 않은 수치·직함·성과 지어내기(사실 왜곡).
|
|
49
|
+
- 프로필을 한 번 만들고 수개월 방치(신선도 하락).
|
|
50
|
+
- Featured·다국어 병기를 빼서 클릭·국제 노출 기회를 버리기.
|
|
51
|
+
|
|
52
|
+
### 워크드 예시 (Before → After)
|
|
53
|
+
|
|
54
|
+
1. **Before:** 헤드라인 — `개발자 @ ABC테크 | 열정적인 문제 해결사`
|
|
55
|
+
**After:** 헤드라인 — `Backend Engineer · Java/Spring·MSA | 주문 트래픽 5배 처리 결제 시스템 구축 @ ABC테크`
|
|
56
|
+
**왜 더 나은가:** 타깃 직무(Backend Engineer)와 검색되는 하드스킬(Java/Spring·MSA)을 맨 앞에 front-load해 키워드 검색에 잡히고, '주문 트래픽 5배 처리'라는 정량 결과로 클릭을 유발한다. '열정적인 문제 해결사' 같은 검색 불가 추상어를 제거했고, 구분자는 3개로 가독성을 지켰다.
|
|
57
|
+
|
|
58
|
+
2. **Before:** Experience 불릿 — `백엔드 API 개발 및 운영 담당, 성능 개선 작업 수행`
|
|
59
|
+
**After:** Experience 불릿 — `p99 응답시간을 1,200ms→180ms로 85% 단축(X·Y) — N+1 쿼리 제거와 Redis 캐시 레이어 도입으로(Z), 동시접속 3만 트래픽 안정화`
|
|
60
|
+
**왜 더 나은가:** XYZ(무엇을/얼마만큼/어떻게)로 '담당·수행'식 책임 나열을 측정 가능한 임팩트로 바꿨다. 구체 수치(85%, 3만)와 방법(N+1, Redis)이 신뢰와 검색 키워드(Redis)를 동시에 준다.
|
|
61
|
+
|
|
62
|
+
3. **Before:** About 첫 문장 — `안녕하세요, 저는 다양한 경험을 가진 마케터입니다. 항상 새로운 것을 배우는 것을 좋아합니다.`
|
|
63
|
+
**After:** About 첫 문장 — `B2B SaaS 퍼포먼스 마케터 · 6년. 유료 전환율을 2.1%→4.8%로 끌어올린 풀퍼널 그로스 실험가입니다. 핵심: 퍼포먼스 광고(Google/Meta Ads), SEO, 마케팅 자동화(HubSpot).`
|
|
64
|
+
**왜 더 나은가:** 노출 앞영역에 타깃 키워드(B2B SaaS, 퍼포먼스 마케터, SEO, HubSpot)와 정량 성과(전환율 2.1%→4.8%)를 모두 넣고, 인사말·잡담을 제거해 핵심을 상단으로 끌어올렸다. About은 서사형이라 불릿이 아닌 1인칭 문장으로 유지했다.
|
|
65
|
+
|
|
66
|
+
## 3. 검증 루브릭 (연결된 AI가 산출물을 이 기준으로 자가검증)
|
|
67
|
+
|
|
68
|
+
> **공통 가드:** 키워드 의존 체크(R2, R4, R5, R6, R10, R15)는 외부 AI가 `get_application_context`로 채운 `target_keywords[]`를 입력으로 받는다. 사전이 비었거나 N개(예: 5) 미만이면 해당 체크는 pass/fail 대신 **`INSUFFICIENT_INPUT`** 을 반환한다. 길이·존재·정규식 체크(R1, R7, R8, R11, R12, R13, R14)는 사전 없이 진짜로 기계 측정 가능하다.
|
|
69
|
+
> **정량 정규식(quantRegex):** `\d+([.,]\d+)?\s*(%|배|원|명|ms|x|k|만|억|점|개|위|명|시간|일|주|개월|년)`
|
|
70
|
+
|
|
71
|
+
| ID | 검사 항목 | 합격 기준 | 측정 방법(LLM 없이 셀 수 있게) |
|
|
72
|
+
|----|-----------|-----------|--------------------------------|
|
|
73
|
+
| R1 | 헤드라인 하드 상한 + front-load 권장 | 길이 ≤ 220자(hard fail) **및** 앞 120자 내 타깃 키워드 ≥1(soft warn) | 헤드라인 길이 ≤220 → fail/pass; `헤드라인[0:120]`에 사전 키워드 매칭 = 0이면 warn(fail 아님) |
|
|
74
|
+
| R2 | 헤드라인 키워드 front-load | 사전 키워드가 앞 120자 내 ≥1 | `헤드라인[0:120]` ∩ target_keywords 매칭 ≥1 (사전 없으면 INSUFFICIENT_INPUT) |
|
|
75
|
+
| R3 | 헤드라인이 추상어만이 아님 | 금지어 제거 후 잔여 토큰 ≥3 | 금지어 사전(Experienced Professional/열정적인/문제 해결사/results-driven/synergy…) 제거 후 토큰 수 ≥3 |
|
|
76
|
+
| R3b | 헤드라인 구분자 남발 방지 | 구분자(`|`·`·`/`,`) 합 ≤4(soft) | 구분자 문자 카운트 ≤4 |
|
|
77
|
+
| R4 | About 앞부분 키워드 | 첫 2~3문장(언어별 분기) 내 사전 키워드 ≥1 | 문장 경계로 분할 후 앞 2~3문장 ∩ target_keywords ≥1. *char 절대 임계 대신 문장 단위*(한/영 글자수 차 보정) |
|
|
78
|
+
| R5 | About 키워드 커버리지 | 고유 사전 키워드 ≥ N(권장 하한, soft) | About ∩ target_keywords의 *고유* 매칭 수 ≥ 하한. 상한(8~12)은 **soft warn**으로만(근거가 블로그라 hard fail 금지; 병기 시 단일 언어 기준으로 카운트) |
|
|
79
|
+
| R6 | JD 커버리지(핵심 신규 항목) | (공고 JD 키워드 ∩ 프로필 키워드) / JD 키워드 ≥ 0.4 | get_application_context의 JD 키워드 집합과 프로필 전체 텍스트 매칭 비율 ≥0.4 (사전 없으면 INSUFFICIENT_INPUT) |
|
|
80
|
+
| R7 | 키워드 스터핑 방지 | 동일 키워드 반복 ≤3회 | 각 사전 키워드 등장 횟수 카운트, 최대 반복 ≤3 |
|
|
81
|
+
| R8 | About 앞부분 정량 성과 | 앞 2~3문장에 quantRegex ≥1 | 앞 2~3문장에 정량 정규식 매칭 ≥1 |
|
|
82
|
+
| R9 | Experience 정량/범위 비율 | 수치 또는 규모 표현 포함 불릿 ≥ 60%(직군 fallback 허용) | 각 불릿에 quantRegex **또는** 규모 토큰(사용자/팀/처리량/명/개) 매칭 여부 → 매칭 불릿/전체 ≥0.6. *About 제외, Experience만 적용* |
|
|
83
|
+
| R10 | Experience 책임-나열 회피(언어 분기) | 금지 서술어 불릿 ≤ 20% | **한국어**: 문말 서술어 패턴(담당/책임/수행/진행/관리/지원/대응/처리/운영 + 했/함/음) 스캔. **영문**: 불릿 첫 동사(Responsible for/Worked on/Helped/Assisted/Involved in) 스캔 → 비율 ≤0.2 |
|
|
84
|
+
| R11 | 핵심 섹션 충족 | 사진·위치·산업·학력·직책·스킬·About 7/7 non-empty + Featured ≥1(soft) | 각 필드 non-empty 카운트 = 7; Featured 0이면 warn |
|
|
85
|
+
| R12 | 스킬 최소 개수 | 5 ≤ 스킬 수 ≤ 50 | 스킬 배열 length ≥5 이고 ≤50(상한 초과 시 관련성 희석 warn) |
|
|
86
|
+
| R13 | 추천서 존재 + 관계 다양성 | Recommendations ≥1, 서로 다른 관계 ≥2(soft) | 추천서 카운트 ≥1; relationship 필드 고유값 ≥2이면 가산(없으면 warn, 엔도스먼트는 미집계) |
|
|
87
|
+
| R14 | 신선도 | last_updated ≤ 180일 **또는** open_to_work=true | 날짜 차 ≤180 또는 플래그 존재(둘 중 하나 충족) |
|
|
88
|
+
| R15 | 스킬-키워드 정렬 | 스킬 ≥3개가 헤드라인+About에도 등장 | 각 스킬을 (헤드라인+About) 텍스트와 부분문자열 매칭 → 일치 ≥3 |
|
|
89
|
+
| R16 | 길이 하드 상한 안전 체크 | 헤드라인 ≤220 **및** About ≤2,600자 | 두 필드 글자수 측정 → 초과 시 fail(키워드 손실/잘림 방지) |
|
|
90
|
+
| R17 | 국제화(병기) | 영문 1차 타깃이면 영문 필드 ASCII 비율 ≥ 0.6; 병기 타깃이면 한/영 둘 다 non-empty | 헤드라인/About의 ASCII 문자 비율 계산; 병기 모드면 두 언어 필드 존재 여부 |
|
|
91
|
+
| R18 | 사실 보존(보수적) | 산출물의 **숫자 토큰**이 입력 수치 집합 ∪ 파생수치(증감률) 화이트리스트에 포함; 고유명사는 화이트리스트 대조만 | 숫자만 정규화(3만↔30,000↔30k, 1,200ms 등) 후 차집합 검사. 85% 같은 파생 증감률은 입력 두 수에서 계산 가능하면 허용. **고유명사는 입력 화이트리스트(회사/제품 배열) 대조로 한정** — NER 불가하므로 미일치는 'AI 작성 시 보존'에 위임하고 validate는 *미검증(advisory)* 표시 |
|
|
92
|
+
|
|
93
|
+
**주요 실패 모드:**
|
|
94
|
+
- **사전 없는 키워드 체크의 거짓 통과/실패** — `target_keywords[]`가 비면 R2/R4/R5/R6/R10/R15가 무의미. → `INSUFFICIENT_INPUT` 가드로 차단(절대 임의 pass 금지).
|
|
95
|
+
- **fact-preservation 오탐** — 단위 표기 변형(3만/30,000/30k), 한영 회사명 차(ABC테크/ABC Tech), 파생 증감률(85%)을 '입력에 없는 토큰=할루시네이션'으로 오탐. → R18처럼 숫자만 정규화 검사 + 파생수치 화이트리스트 + 고유명사는 명시 화이트리스트로 한정(나머지는 advisory).
|
|
96
|
+
- **한국어 어순 무시** — '...를 담당' 식 문말 동사를 '첫 토큰' 검사로 놓침. → R10 언어 분기(한국어=문말 서술어, 영문=첫 동사).
|
|
97
|
+
- **정량 강제의 직군 차별** — 단일 70% 바가 디자인·PM·연구·신입을 일괄 탈락. → R9를 60% + 규모/범위 fallback으로 완화하고 Experience에만 적용(About 제외).
|
|
98
|
+
- **120자 한도 오인** — 220자 키워드 공간 절반 손실. → R1에서 상한(220, hard)과 front-load(120, soft)를 분리.
|
|
99
|
+
- **density 상한의 사전 종속** — 사전 크기가 곧 상한을 결정해 측정이 무의미. → R5 상한은 soft warn, 하한도 근거 약하므로 권장값으로만.
|
|
100
|
+
- **엔도스먼트 과신** — 약한 신호를 추천서와 동급 집계. → R13은 추천서만 집계, 엔도스먼트 미반영.
|
|
101
|
+
|
|
102
|
+
## 4. 출처 (Provenance)
|
|
103
|
+
|
|
104
|
+
> **신뢰등급 라벨:** [공식]=LinkedIn/1차 · [2차]=기자/대학 재배포 · [추정/블로그]=마케팅·SEO 분석(확정 사실 아님).
|
|
105
|
+
|
|
106
|
+
- **[공식] LinkedIn Help — Your Profile level meter** — 프로필 강도에 반영되는 핵심 섹션(사진·위치·산업·학력·직책·스킬·요약)과 발견성·검색 노출 효과. *단, 현행 UI는 'All-Star 배지'를 약화/제거했을 수 있어 '배지' 프레이밍은 advisory.* · https://www.linkedin.com/help/linkedin/answer/a594698
|
|
107
|
+
- **[공식] LinkedIn — How to Use Keywords on LinkedIn** — 키워드 배치 핵심 섹션(헤드라인·About·직무 타이틀·스킬)과 검색 관련성. · https://www.linkedin.com/top-content/recruitment-hr/maximizing-your-linkedin-presence/how-to-use-keywords-on-linkedin/
|
|
108
|
+
- **[2차] Bill Murphy Jr.(Inc.com) — Google XYZ 공식** — 'Accomplished X as measured by Y by doing Z' 정량 성과 공식. *Laszlo Bock 'Work Rules!'에 영감을 둔 기자의 재해석이며 Bock의 원문 문구가 아님.* · https://www.linkedin.com/pulse/google-recruiters-say-using-x-y-z-formula-your-resume-bill-murphy-jr-
|
|
109
|
+
- **[2차] UT Austin School of Law 배포 PDF** — 위 Inc 기사의 대학 커리어 재배포본(1차 아님). · https://law.utexas.edu/wp-content/uploads/sites/44/2020/09/Google-Recruiters-Say-Using-the-X-Y-Z-Formula-on-Your-Resume-Will-Improve-Your-Odds-of-Getting-Hired-at-Google-_-Inc.com_.pdf
|
|
110
|
+
- **[추정/블로그] LinkedIn 프로필 최적화 가이드 2026 (JobSprout/CareerBldr)** — 헤드라인 공식, About 앞부분·키워드 분산, 모바일 truncation front-load. *키워드 8~12 같은 구체 수치의 1차 근거 아님 → soft만.* · https://careerbldr.com/blog/linkedin-profile-optimization-guide/
|
|
111
|
+
- **[추정/블로그] 리크루터 대상 LinkedIn 최적화 (GDH/Bridgeview/mimusa)** — 추천 중심 사회적 증거, 완성도, 엔도스먼트 약화. · https://gdhinc.com/optimize-your-linkedin/
|
|
112
|
+
- **[추정/블로그] LinkedIn 검색 신호 분석 (W3era/powerin)** — 키워드 관련성·완성도·네트워크 근접성·신선도. *공식 문서가 아니라 추정된 알고리즘이므로 '4대 신호'를 확정 사실로 제시하지 않음.* · https://www.powerin.io/blog/how-linkedin-search-works-and-how-to-hack-it
|
|
113
|
+
- **[공식 내부] AGENTS.md** — 사실·수치·고유명사 보존 원칙(할루시네이션 방지).
|
|
114
|
+
|
|
115
|
+
## 5. Phase B 힌트 (아키텍처로 연결)
|
|
116
|
+
|
|
117
|
+
- **MCP 도구 아이디어:**
|
|
118
|
+
- `get_linkedin_playbook(section?: 'headline'|'about'|'experience'|'skills'|'completeness'|'network'|'social_proof'|'i18n'|'all')` — 해당 섹션의 원칙·do/dont·워크드 예시·금지어 사전·타깃 키워드 슬롯을 반환.
|
|
119
|
+
- `validate_linkedin_profile(profile_draft, target_keywords[], jd_keywords[]?, fact_whitelist?: {numbers[], proper_nouns[]}, lang: 'ko'|'en'|'bilingual')` — 위 루브릭을 LLM 없이 실행해 항목별 pass/fail/warn/INSUFFICIENT_INPUT + 측정값(개수·비율) + score를 반환. `target_keywords`가 임계 미만이면 키워드 체크를 INSUFFICIENT_INPUT으로 격리. 고유명사 검증은 `fact_whitelist.proper_nouns`가 있을 때만, 없으면 advisory.
|
|
120
|
+
- 데이터 소스 결합: 타깃 키워드/JD = `get_application_context`, 보존할 사실·수치 화이트리스트 = `get_profile`/`get_resumes`.
|
|
121
|
+
|
|
122
|
+
- **데이터 형태 힌트:**
|
|
123
|
+
```
|
|
124
|
+
{
|
|
125
|
+
principles: [{ id, rule, rationale, source, trust: 'official'|'secondary'|'estimated' }],
|
|
126
|
+
doList: string[], dontList: string[],
|
|
127
|
+
bannedTerms: {
|
|
128
|
+
headline: string[],
|
|
129
|
+
about: string[],
|
|
130
|
+
experienceLeadVerbsEn: string[], // Responsible for, Worked on, Helped...
|
|
131
|
+
experienceTailPredicatesKo: string[] // 담당/책임/수행/진행/관리/지원/대응/처리/운영 (+했/함/음)
|
|
132
|
+
},
|
|
133
|
+
allStarSections: ['photo','location','industry','education','position','skills','summary'],
|
|
134
|
+
optionalSections: ['featured'],
|
|
135
|
+
quantRegex: '\\d+([.,]\\d+)?\\s*(%|배|원|명|ms|x|k|만|억|점|개|위|시간|일|주|개월|년)',
|
|
136
|
+
limits: { headlineHard: 220, headlineFrontload: 120, aboutHard: 2600, skillsMin: 5, skillsMax: 50 },
|
|
137
|
+
rubricChecks: [{
|
|
138
|
+
id, check, passBar,
|
|
139
|
+
measure: { type: 'count'|'ratio'|'exists'|'regex'|'length'|'date', target, threshold,
|
|
140
|
+
regex?, lang?: 'ko'|'en'|'bilingual',
|
|
141
|
+
severity: 'hard'|'soft', requiresDictionary?: bool }
|
|
142
|
+
}],
|
|
143
|
+
workedExamples: [{ section, before, after, why }]
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// validate 반환:
|
|
147
|
+
{
|
|
148
|
+
checks: [{ id, status: 'pass'|'fail'|'warn'|'insufficient_input'|'advisory',
|
|
149
|
+
measured: number|bool, threshold }],
|
|
150
|
+
score: 0..1 // hard fail만 score에 강하게 반영, soft/advisory는 가중 약하게
|
|
151
|
+
}
|
|
152
|
+
```
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# 네트워킹 / 추천 / Networking & Referrals — CareerMate 지식 (Phase A)
|
|
2
|
+
|
|
3
|
+
> 이 문서는 CareerMate가 **연결된 AI에게 제공(serve)** 하는 지식이다. CareerMate 안에는 LLM이 없다 — 분석·작성·검증은 연결된 AI가 수행하고, 이 플레이북·루브릭은 그 AI가 **세계 최고 수준**으로 일하도록 안내한다.
|
|
4
|
+
|
|
5
|
+
## 1. 무엇을 하는가
|
|
6
|
+
|
|
7
|
+
연결된 AI를 **네트워킹 전략가**로 만들어, 사용자가 (1) 타깃 회사·직무로 향하는 **관계 경로**를 먼저 그리고, (2) **정보성 대화(informational interview)** 로 신뢰를 쌓고, (3) 그 위에서 **사내 추천(referral)** 으로 연결되도록 돕는 플레이북과, **LLM 없이(또는 최소한으로) 셀 수 있는 자가검증 루브릭**이다. 핵심 전략 방향은 "지원서 최적화보다 관계 라우팅을 먼저"다 — 추천 경로는 ATS 블랙홀을 우회하는 가장 큰 레버다.
|
|
8
|
+
|
|
9
|
+
**책임 경계(매우 중요):** CareerMate는 지식·연락처/상호작용 기록·루브릭을 **저장·제공**만 한다. 메시지 작성, 의도 판정("이게 조기 job-ask인가"), 톤 평가는 모두 **외부 AI의 몫**이다. 루브릭은 두 계층으로 나뉜다 — **(A) 지금 텍스트만으로 기계 측정 가능**(단어수·패턴매치·정규식)과 **(B) 미구현 데이터 레이어가 필요**(타임스탬프·tie_strength 태그에 의존하는 cadence/latency/coverage). 현재 코드베이스에는 `save_contact`/`log_interaction`/`get_networking_status`·`tie_strength` 필드가 **존재하지 않으므로**, (B) 항목은 Phase B 구현 전까지 **외부 AI의 자기보고에 의존(검증 불가, advisory)** 이다. 이 구분을 정직하게 표기한다.
|
|
10
|
+
|
|
11
|
+
**증거 신뢰도 경계(매우 중요):** 이 도메인의 수치는 **출처 신뢰도가 균일하지 않다.** NBER·Granovetter 같은 **1차 연구**와 Apollo/Salesforge/Expandi/Prospeo 같은 **마케팅 벤더 블로그**를 같은 가중치로 쓰지 않는다. 특히 LinkedIn 응답률 수치(개인화 9.4% vs 5.4% 등)는 대부분 **B2B 세일즈(SDR) 데이터**라 "동문에게 20분 청하기" 같은 구직 네트워킹에 그대로 외삽되지 않는다 — **세일즈 대용 지표(sales proxy)** 로 라벨링하고 신뢰도를 낮춘다. 또한 **한국 노동시장 단서**를 반드시 적용한다: 공채 비중이 크고, 사내추천 보상제가 없는 기업이 많으며, LinkedIn 침투율이 낮은 도메인(공기업·제조 대기업·국내 SI·신입 공채)이 광범위하다. 미국식 LinkedIn/이메일 warm-intro를 보편 규범으로 단정하지 않는다.
|
|
12
|
+
|
|
13
|
+
## 2. 플레이북
|
|
14
|
+
|
|
15
|
+
### 원칙
|
|
16
|
+
|
|
17
|
+
- **(지원서가 아니라 관계로 라우팅하라)** 타깃 회사/직무가 정해지면, 지원서를 다듬기 *전에* 먼저 연락처 매핑 단계(동문·약한 연결·2촌)를 생성하라. — 추천은 미국 데이터 기준 채용의 상당 부분을 차지하고 추천 지원자의 전환이 높다(단, 분모가 다른 수치를 단일 배수로 곱하지 말 것). 가장 전환이 높은 채널을 안 쓰는 것이 가장 큰 손실이다. _(출처: NBER w25920[1차], Apollo Technical[벤더/2차] — 수치는 §4 단서와 함께)_
|
|
18
|
+
- **(목적에 따라 연결 강도를 맞춰라)** 새 리드 탐색은 약한 연결/2촌으로 폭넓게, 실제 추천 *요청*은 타깃 내 가장 강한 연결로. — Granovetter는 약한 연결이 **새 정보**를 더 많이 가져온다 했고, 후속 연구(2016 MBA 연구)는 **단일 강한 연결**의 전환이 높다고 본다(부분적으로 Granovetter에 *도전*). 둘은 노동시장 구간·시니어리티에 따라 갈리는 **미해결 긴장**이며, 화해시킨 척하지 않는다. _(출처: Granovetter(1973) AJS[1차]; Sociological Science v3 2016[1차, 별개 논문])_
|
|
19
|
+
- **(직업이 아니라 정보성 대화를 청하라)** 그 사람의 경로/역할을 배우는 데 명시적으로 20-30분을 청하고, 그 첫 대화에서는 추천도 일자리도 요구하지 마라. — 대학 커리어센터들이 일관되게 정보성 인터뷰를 "일자리 제안이 기대가 아닌" 학습 대화로 규정한다. 먼저 일자리를 청하면 반발(reactance)을 부르고 연락처를 태운다. _(출처: USC·UCLA·Iowa Pomerantz Career Center[1차/대학])_
|
|
20
|
+
- **(모든 콜드 아웃리치를 검증 가능한 훅으로 개인화하라)** 같은 학교·공통 지인·특정 글/프로젝트 등 **확인 가능한** 구체 훅을 넣고, 가능하면 먼저 좋아요/댓글로 데워라. — 개인화가 응답률을 올린다는 신호가 있으나 그 수치는 **세일즈 대용 지표**다(§4). 검증 불가한 "big fan" 같은 거짓 개인화는 무(無)보다 나쁘다. _(출처: Salesforge/Expandi[벤더, sales proxy])_
|
|
21
|
+
- **(warm intro는 double opt-in을 지켜라)** 연결자에게 콜드 소개를 시키지 마라. 1문장 자기소개 + 왜 중요한지 + 구체 요청을 담은 **포워딩 가능한 blurb**(자족적, ≤100단어)와 양쪽을 위한 우아한 거절 여지를 제공하라. — double opt-in(연결자가 먼저 타깃에게 확인)은 연결자의 사회적 자본을 보호한다. *단, ≤100단어 forwardable blurb는 실리콘밸리 스타트업 관습에 가깝고, 한국 직장 문화의 비공식 소개(지인·카톡 단톡)와 형식이 다르다 — 보편 규범으로 단정하지 말고 채널에 맞춰 조정하라.* _(출처: Ben Lachman(Medium)[2차/블로그] — 형식은 advisory)_
|
|
22
|
+
- **(짧게, 단일 요청으로)** 약 50-90단어, 정확히 하나의 저마찰 CTA(질문 하나 또는 일정 요청 하나). — 간결성이 응답률을 올린다는 일화가 있으나 출처는 세일즈 벤더다. CareerMate 사용자는 기본적으로 과하게 길게 쓴다. _(출처: Prospeo/Nutshell[벤더, sales proxy])_
|
|
23
|
+
- **(상호성 루프를 닫고 감사를 개인화하라)** 대화 후 **24-72시간** 내(시니어/바쁜 상대는 48-72h가 더 나을 수 있음), 구체적으로 논의한 것을 짚고 무언가를 돌려주는 감사를 보내라. — 빠른 후속은 진지함을 신호하지만, **얕은 당일 "감사!"** 는 형식적으로 읽혀 오히려 해롭다. 속도보다 **구체성**이 본질이다. _(출처: Northwestern Career Advancement[대학]; 후속은 벤더 가이드)_
|
|
24
|
+
- **(팔로업은 2회로 제한하고 매번 새 가치를 더하라)** 침묵 4-5일 후 1차, 그 뒤 우아한 마무리("break-up") 1차 — 절대 맨 "그냥 확인차"는 금지. *4-5일은 벤더 합의치(세일즈 케이던스)이며 시니어 상대는 2주+ 걸릴 수 있으니 하드 룰이 아니라 기본값으로 본다.* — 두 통이 네트워킹 상한이고, 각 후속은 요청 반복이 아니라 새 가치를 실어야 한다. _(출처: Cruit/CareerVillage/Skylead[벤더, sales proxy])_
|
|
25
|
+
- **(좋은 대화 뒤에는 1-2개의 추가 소개를 청하라 — 단, 양보다 질)** 정보 제공자에게 "또 이야기할 만한 사람"을 청하는 것이 규범에 맞는 합법적 "요청"이다. **단, 추천의 신호 가치는 추천인의 신뢰도(함께 일한 적·역량 보증 가능성)에서 나온다.** 20분 통화 한 번에 기댄 약한 추천은 신호가 거의 없거나 면접에서 마이너스가 되며, 일부 ATS는 저신뢰 추천을 표시한다. 따라서 "기하급수적 확장"은 **질을 전제로** 추구한다. _(출처: USC·Iowa Pomerantz[대학]; 추천 품질 단서는 채용 현업 관점)_
|
|
26
|
+
- **(콜드 스타트를 1급 경로로 다뤄라)** 타깃에 동문·약한 연결·2촌이 **하나도 없는** 사용자(전직자·신입·외국인)가 가장 흔하고 가장 도움이 필요하다. 네트워크가 없으면 루브릭으로 벌하지 말고, **비(非)연결 대상 콜드 아웃리치 + 커뮤니티 라우팅**(아래 한국 채널)으로 분기하라. — 네트워크 보유를 전제하는 플레이북은 가장 절박한 사용자를 배제한다. _(출처: 채용 현업 관점 + graceful-degradation 원칙)_
|
|
27
|
+
- **(한국 채널로 분기하고, 추천 제도 자체가 없는 회사를 식별하라)** LinkedIn이 안 통하는 도메인에서는: 현직자 커피챗, **사내추천 보상제 있는 기업 식별**, 대학 학과 선배/교수 라인, 오픈채팅·디스콰이엇·직장인 커뮤니티·블라인드. 채널 우선순위는 차단 시 폴백 순서를 가진다(이메일 > 상호 소개 > LinkedIn > X > 커뮤니티). 공채/블라인드 채용 기업은 추천 레버가 약하므로 그때는 정보성 대화·역량 증명으로 목표를 바꾼다. — 미국식 단일 채널 전제는 한국 구직자 다수에 부적합. _(출처: 한국 노동시장 단서 + 채널 현실 점검)_
|
|
28
|
+
- **(타이밍·퍼널과 연동하라)** 네트워킹 효과는 시점에 의존한다: **공고 게시 전 pre-referral > 게시 후 > 이미 ATS에 지원한 뒤**(지원 후 추천은 효과 급감). CareerMate 8단계 지원 상태(draft~final)와 연동해, `applied` 이전에 추천을 확보하도록 안내한다. — 시점 의존성을 무시한 추천은 레버를 잃는다. _(출처: 채용 현업 관점 + AGENTS.md 상태 게이팅)_
|
|
29
|
+
- **(결과를 측정하라 — 메시지 위생만이 아니라)** 보낸 N건 대비 응답 M건, 정보성 대화 성사율, 추천 전환율, 소개 수락률을 연락처별로 추적하라(데이터 레이어 구현 후 순수 카운트로). — 가장 가치 있는 건 단어수가 아니라 퍼널 카운트다. _(출처: CareerMate 저장소 아키텍처 활용)_
|
|
30
|
+
- **(제3자 PII 최소수집·보존·파기)** 연락처(이름·회사·역할·tie·대화요약)는 **동의 없이 수집한 제3자 개인정보**다. 무엇을 기록할지 최소화하고, 외부로 내보내거나 공유하지 말며(연락처 dossier 금지), 보존기간·삭제 규칙을 둔다. — AGENTS.md의 "외부 업로드 금지"는 *사용자* 보호이고, *연락처* 보호는 별도로 명시해야 한다. _(출처: AGENTS.md 로컬 전용 원칙의 제3자 확장)_
|
|
31
|
+
|
|
32
|
+
### Do
|
|
33
|
+
|
|
34
|
+
- 아웃리치 작성 전 `get_application_context`/`get_profile`을 호출해 사용자의 실제 배경·타깃 역할·공통 학교/직장을 메시지에 인용한다.
|
|
35
|
+
- 타깃 회사당 3-5명을 tie 유형(동문·전직장동료·2촌·약한연결)으로 매핑하고 경로를 고른다(새 리드=약한연결, 실제 추천요청=가장 강한 연결).
|
|
36
|
+
- 콜드 메시지 첫 문장에 하나의 **검증 가능한** 훅(그들의 글·공통 모교·실명 공통 지인)을 둔다.
|
|
37
|
+
- 작고 구체적인 commitment을 청한다: "20-30분 경로 듣기" 또는 "X 직무 적합도에 대한 짧은 반응" — 요청 하나만.
|
|
38
|
+
- warm intro는 ≤100단어 forwardable blurb를 fresh thread로 작성하고 "타이밍이 안 맞으면 괜찮다"는 거절 여지를 준다(한국 비공식 소개면 형식 조정).
|
|
39
|
+
- 감사는 24-72h 내(시니어는 48-72h 허용) 구체 포인트를 짚고 호혜 제스처(링크·소개·업데이트)를 담는다.
|
|
40
|
+
- 연락처별 상호작용 로그(마지막 접촉일·채널·논의·다음 단계·**거절/do-not-contact 플래그**)를 기록한다.
|
|
41
|
+
- 팔로업 간격: 1차 4-5일, 마지막 가치-부가 "break-up", 그 뒤 정지. 상대가 답하면 카운터 리셋, "거절"이면 케이던스 영구 정지.
|
|
42
|
+
- 정보성 대화 끝에 1-2개의 **질 좋은** 추가 소개와 진척 공유 허락을 청한다.
|
|
43
|
+
- 네트워크가 없으면 콜드/커뮤니티 경로로 분기하고, 한국 채널(커피챗·학과 선배·오픈채팅·블라인드)을 제시한다.
|
|
44
|
+
- 저장(연락처·노트·아웃리치 초안) 후 대시보드 링크(http://127.0.0.1:4319)를 보여주고 각 단계를 쉬운 한국어로 설명한다.
|
|
45
|
+
|
|
46
|
+
### Don't
|
|
47
|
+
|
|
48
|
+
- 첫 정보성 대화에서 일자리/추천 요구 — 규범 위반이자 반발 유발. (한국 소프트 표현 포함: "TO 있나요", "자리 나면", "좋게 봐주시면", "넣어주실 수 있나요")
|
|
49
|
+
- 같은 generic 템플릿을 여러 명에게 발송 — 비개인화는 응답률을 깎는다(수치는 sales proxy).
|
|
50
|
+
- double opt-in 없이 연결자에게 콜드 소개 요구; 부탁받지 않은 기존 스레드에 타깃을 CC.
|
|
51
|
+
- 길고 다중요청 메시지(약 120단어 초과 또는 CTA 2개+).
|
|
52
|
+
- 2회 초과 팔로업, 또는 새 가치 없는 맨 "그냥 확인차".
|
|
53
|
+
- 공통 지인·"big fan"·근거 없는 훅 날조 — 거짓 개인화는 무보다 나쁘다.
|
|
54
|
+
- 전날 메일하고 다음날 만나자 하기 — 충분한 리드타임(며칠+)을 준다.
|
|
55
|
+
- 아무것도 짚지 않는 당일 얕은 "감사!" — 형식적 신호.
|
|
56
|
+
- **양만 좇아 약한 추천을 남발하기** — 추천인 신뢰도 없는 추천은 면접에서 마이너스.
|
|
57
|
+
- **거절한 상대에게 케이던스 지속** — do-not-contact 플래그 없이 계속 찌르기.
|
|
58
|
+
- 하루에 대량(예: 50건) 개인화 발송으로 spammer처럼 행동 — 메시지 위생을 통과해도 계정이 플래그된다.
|
|
59
|
+
- 연락처/사용자 데이터 외부 전송·공유; 연락처 dossier 내보내기.
|
|
60
|
+
- 기술 용어(MCP, job_id) 노출·첫 온보딩 후 자동 브라우저 열기.
|
|
61
|
+
|
|
62
|
+
### 워크드 예시 (Before → After)
|
|
63
|
+
|
|
64
|
+
1. **Before:** "Hi, I came across your profile and I'm really impressed by your career. I'm looking for new opportunities and would love to connect. I think I'd be a great fit at your company. Could you refer me or let me know if there are any openings on your team? Thanks!"
|
|
65
|
+
**After:** "Hi Jiyoung — fellow Yonsei grad here. I read your KakaoBank post on scaling onboarding flows; the part about cutting drop-off with progressive disclosure really resonated with my work on a fintech signup funnel. I'm exploring product roles in fintech and would value 20 minutes to hear how you moved from design into PM. No agenda beyond learning from your path — totally understand if you're heads-down right now."
|
|
66
|
+
**왜 더 나은가:** 검증 가능한 훅(공통 학교 + 실제 글)으로 시작하고, 하나의 저마찰 요청(20분 학습)만 하며, 반발을 부르는 job/referral 요청을 명시적으로 제거했다. 일반 요청 대(對) 개인화+사전 engagement 밴드로 이동하면서, 나중의 추천 요청을 위해 관계를 보존한다(응답률 수치는 sales proxy라 단정하지 않음).
|
|
67
|
+
|
|
68
|
+
2. **Before:** "Hey Minsoo, can you introduce me to Sarah at Toss? I really want to work there. Thanks!"
|
|
69
|
+
**After:** "Hi Minsoo — would you be open to introducing me to Sarah at Toss? Only if you think it's a fit and the timing's good for her. To make it effortless, here's a short blurb you can forward as-is: 'Daniel is a backend engineer (4 yrs, payments at Naver) exploring infra roles at Toss. He admired Sarah's talk on idempotent payment APIs and would love 20 min to learn how her team thinks about reliability. Easy no if now's not right.' Happy to tweak anything — and no worries at all if it's not a good moment."
|
|
70
|
+
**왜 더 나은가:** double opt-in을 지키고(연결자에게 먼저 묻고, 양쪽에 우아한 거절 여지), 연결자가 아무것도 쓰지 않아도 되게 ≤100단어 blurb를 제공하며, 일자리 요구가 아닌 학습 요청으로 프레이밍한다 — 연결자의 사회적 자본을 보호하는 것이 곧 연결자가 돕게 만드는 핵심이다. (한국 카톡 소개라면 같은 내용을 더 짧고 구어체로 조정.)
|
|
71
|
+
|
|
72
|
+
3. **Before:** "Thanks for the call today, really helpful! Let me know if you hear of any openings."
|
|
73
|
+
**After:** "Hi Eunji — thank you for the 30 minutes today. Your point about choosing teams by the quality of the eng manager over the company logo genuinely changed how I'm filtering roles. I followed your suggestion and read the SRE postmortem you mentioned — sending it here in case it's useful to your new hires too. I'll keep you posted as I narrow things down; and if anyone in your network is worth a similar conversation, I'd be grateful for an intro."
|
|
74
|
+
**왜 더 나은가:** 48-72h 창 안에 보내고, 구체적 takeaway를 짚어(폼 노트가 아닌 진짜 engagement 증명) 호혜로 가치를 돌려주며, 조기 "any openings?" 대신 규범에 맞는 추가 소개 요청을 한다 — 일회성 대화를 지속적·복리적 관계로 전환한다.
|
|
75
|
+
|
|
76
|
+
## 3. 검증 루브릭 (연결된 AI가 산출물을 이 기준으로 자가검증)
|
|
77
|
+
|
|
78
|
+
> **계층 가드(매우 중요):**
|
|
79
|
+
> - **계층 A — 지금 텍스트만으로 기계 측정 가능:** NR-01(단어수), NR-03(단일 CTA, 단 아래 재정의), NR-04(패턴매치, 단 1차 필터로 격하), NR-05(정규식), NR-06(blurb 단어수/opt-out 패턴), NR-12(볼륨 카운트).
|
|
80
|
+
> - **계층 B — 미구현 데이터 레이어 필요(현재 advisory/검증 불가):** NR-08(감사 latency), NR-09(케이던스), NR-10(연락처 커버리지), NR-11(퍼널 결과), NR-13(거절/DNC). 이들은 `log_interaction`/`save_contact`/타임스탬프·`tie_strength` 태그를 전제하며, 코드베이스에 **아직 없다.** 구현 전까지는 외부 AI의 자기보고에 의존하고 `NOT_IMPLEMENTED`/advisory로 표기하며 절대 "결정론적 통과"로 주장하지 않는다.
|
|
81
|
+
> - **의도 판정 가드:** NR-03·NR-04의 "진짜 CTA 개수"·"조기 job-ask 의도"는 궁극적으로 **LLM 판단**이다. 패턴매치는 *명백한 위반만 차단하는 1차 필터*이지 최종 판정이 아니다.
|
|
82
|
+
> **날짜 산술 주의:** NR-08/09는 **영업일 vs 달력일·주말·상대 타임존**을 정규화해야 한다(금 17시 vs 월 9시는 다르다). 데이터는 ISO8601 저장, 측정은 영업일 보정.
|
|
83
|
+
|
|
84
|
+
| ID | 검사 항목 | 합격 기준 | 측정 방법(LLM 없이 셀 수 있게) | 계층 |
|
|
85
|
+
|----|-----------|-----------|--------------------------------|------|
|
|
86
|
+
| NR-01 | 아웃리치 길이 간결 | 본문 35-120단어 | 메시지 본문 단어수, 35 ≤ count ≤ 120 | A |
|
|
87
|
+
| NR-02 | 개인화 훅 존재 | 첫 2문장 내 구체·검증가능 참조(실명 학교/직장/공통지인, 또는 인용된 글/프로젝트) ≥1 | 오프닝에 수신자 결부된 고유명사/인용 존재 여부. generic 문구("impressed by your career","came across your profile","프로필을 보고")만 있으면 fail. *고유명사 매칭은 가능하나 "검증 가능성"(실재 여부)은 화이트리스트 대조 없으면 advisory* | A(부분)/advisory |
|
|
88
|
+
| NR-03 | 단일 CTA | 요청(request) 문장 정확히 1개 | **"?" 개수로 판정 금지**(정중한 요청은 평서문이라 ?=0; 다중요청은 ?=0 가능). 1차 필터로 요청 동사/명령·청유 절을 카운트하되, 최종 단일성 판정은 LLM에 이관 | A(1차)/LLM |
|
|
89
|
+
| NR-04 | 첫 대화에 조기 job/referral 요청 없음 | first-contact·informational 메시지에 job-ask 패턴 없음 | **확장 패턴매치(KR+EN, 단어경계+문맥창)** — hard ask: 'refer me','any openings','job opening','hire me','position available','추천해 주','채용','지원 가능'. soft ask(referral-fishing): 'keep me in mind','자리 있을까요','자리 나면','TO 있','좋게 봐주시','넣어주실','혹시 자리가','알려주시면 감사','지원해도 될'. **오탐 방지:** 'apply'/'position'/'apply'의 비요청 용법('applied your advice','your position on X','어떻게 적용')은 문맥창으로 제외. **명백 위반만 차단하는 1차 필터**, 최종 의도판정은 LLM | A(1차)/LLM |
|
|
90
|
+
| NR-05 | 정보성 미팅 요청이 짧고 시간 한정 | 15-30분 명시 | 정규식 `(1[5-9]|2[0-9]|30)\s*(min|minutes|분)` (하한 15로 통일 — 본문·원칙 모두 15-30으로 일치) | A |
|
|
91
|
+
| NR-06 | warm-intro가 double opt-in + forwardable blurb | (a) 거절-여지 문구 + (b) 자족 blurb ≤100단어 | opt-out 문구('if the timing','no worries','easy no','totally fine','괜찮','부담 없') AND 구분된 blurb 존재 → blurb 단어수 ≤100. 둘 중 하나 없으면 fail | A |
|
|
92
|
+
| NR-07 | 감사가 구체적 대화 포인트 참조 | 미팅의 구체 토픽/인용 ≥1(generic "thanks for your time" 아님) | 로그된 논의 토픽과 echo되는 명사구 존재 여부. **로그가 없으면(데이터 레이어 미구현)** generic 감사 토큰만인지 텍스트 검사만 가능 → 토픽 대조는 advisory | A(부분)/advisory |
|
|
93
|
+
| NR-08 | 감사 latency 창 | 미팅 후 24-72h(시니어 48-72h 허용; 당일 얕은 감사 경고) | 미팅 타임스탬프와 감사 타임스탬프 차(영업일 보정) ≤72h. **데이터 레이어 미구현 → NOT_IMPLEMENTED/자기보고** | B |
|
|
94
|
+
| NR-09 | 팔로업 케이던스 한정·간격 | 스레드당 ≤2 팔로업, 연속 접촉 ≥4일, **거절 시 0** | 로그에서 마지막 응답 이후 팔로업 ≤2 AND 연속 접촉일 차 ≥4(영업일). **응답=카운터 리셋, DNC 플래그=영구 정지.** 데이터 레이어 미구현 → NOT_IMPLEMENTED | B |
|
|
95
|
+
| NR-10 | 연락처 맵 tie 다양성 (네트워크 분기) | **네트워크 보유 시:** 타깃당 ≥3 연락처, ≥2 tie 유형. **콜드 스타트(연락처=0):** fail이 아니라 `COLD_START` → 콜드/커뮤니티 경로 안내 | 타깃별 연락처 그룹핑·고유 tie 태그 카운트. 0이면 COLD_START 분기(벌점 금지). 데이터 레이어 미구현 → NOT_IMPLEMENTED | B |
|
|
96
|
+
| NR-11 | 결과(outcome) 추적 | 연락처별 보낸/응답/미팅성사/추천획득 카운트 존재 | 로그에서 sent·replied·info_booked·referral_obtained 카운트와 비율 산출(순수 카운트). 데이터 레이어 미구현 → NOT_IMPLEMENTED | B |
|
|
97
|
+
| NR-12 | 아웃리치 볼륨 거버넌스(반-스팸) | 사용자당 1일 신규 콜드 ≤ 임계(예: 15) | 상호작용 로그에서 일자별 `type=cold` 카운트 ≤ 임계. (로그 있으면 결정론적; 미구현 시 자기보고) | A/B |
|
|
98
|
+
| NR-13 | do-not-contact 존중 | 거절 로그된 연락처는 후속 0 | 연락처 DNC 플래그 set 후 신규 outreach 카운트 = 0. 데이터 레이어 미구현 → NOT_IMPLEMENTED | B |
|
|
99
|
+
|
|
100
|
+
**주요 실패 모드:**
|
|
101
|
+
- **"결정론적" 거짓 주장** — NR-08/09/10/11/13은 데이터 레이어가 없어 *지금은 셀 수 없다.* → 계층 B로 격리하고 `NOT_IMPLEMENTED`/advisory로 정직하게 표기(임의 pass 금지).
|
|
102
|
+
- **NR-04 우회·오탐** — 영문 'apply/position'은 비요청 용법을 오탐하고, 한국어 소프트 표현('TO 있나요','자리 나면','좋게 봐주시면')은 못 잡는다. → KR+EN 다단어 구절 + 단어경계/문맥창 + hard/soft 분리, 그리고 **1차 필터일 뿐 최종 의도판정은 LLM**임을 명시.
|
|
103
|
+
- **NR-03 "? 개수" 깨짐** — 정중한 요청은 ?=0(평서문), 다중요청도 ?=0 가능 → ? 카운트는 문장부호를 잴 뿐 요청 수가 아니다. 워크드 예시 after도 ? 없이 요청한다(자기 모범답안이 자기 루브릭 통과 못 하던 버그). → ? 카운트 폐기, 요청 절 카운트 1차 필터 + LLM 판정.
|
|
104
|
+
- **콜드 스타트 처벌** — NR-10이 네트워크 0인 전직자·신입·외국인을 일괄 fail시켜 가장 도움이 필요한 이를 벌함. → `COLD_START` 분기로 콜드/커뮤니티 경로 제공.
|
|
105
|
+
- **세일즈 수치 오인** — LinkedIn 응답률(9.4/5.4, 8→14%, 141→56단어)은 SDR 데이터라 구직 네트워킹에 직접 외삽 불가. → sales proxy 라벨·신뢰도 강등(§4).
|
|
106
|
+
- **날짜 산술 단순화** — 달력일/영업일·주말·타임존 무시. → ISO8601 저장 + 영업일 보정.
|
|
107
|
+
- **추천 품질 무시** — 약한 추천을 양으로 셈. → 추천인 신뢰도(함께 일한 적·역량 보증)를 질로 가중, NR-11은 획득 카운트만 보고 품질은 LLM 판단.
|
|
108
|
+
- **제3자 PII 무단 축적** — 비동의 연락처 dossier. → 최소 수집·보존·파기·비공유(NR 외 정책 가드).
|
|
109
|
+
|
|
110
|
+
## 4. 출처 (Provenance)
|
|
111
|
+
|
|
112
|
+
> **신뢰등급 라벨:** [1차]=동료심사/working paper/대학 1차 · [2차]=대학 재배포/기자 · [벤더/sales proxy]=마케팅 블로그·세일즈(SDR) 데이터(구직 외삽 주의, 방법론·표본·연도 미공개 많음).
|
|
113
|
+
> **수치 메타데이터 원칙:** 모든 % 옆에 표본·연도·지역·분모를 명시하고, 분모가 다른 수치를 단일 배수로 곱하지 않는다(예: 추천 ~34%[firm funnel 내] vs 잡보드 ~2-5%[전체 지원→채용]는 분모가 달라 7-15배 같은 단일 배수는 과장).
|
|
114
|
+
|
|
115
|
+
- **[1차] Granovetter, "The Strength of Weak Ties" (1973)** — 약한 연결이 **새 직업 정보**를 더 surface한다는 기초 메커니즘; tie-strength 라우팅의 근거. *원논문은 American Journal of Sociology(1973)이며 sociologicalscience.com이 아님(원 플레이북의 출처 매핑 오류 정정).* · (AJS 78:6, 1973)
|
|
116
|
+
- **[1차/별개] "Strength of Weak Ties in MBA Job Search," Sociological Science v3 (2016)** — 단일 강한 연결의 전환을 다룬 **별개의 2016 복제·확장 연구**로, Granovetter를 부분적으로 **도전**한다(보강 아님). · https://sociologicalscience.com/download/vol-3/may/SocSci_v3_296to316.pdf
|
|
117
|
+
- **[1차] NBER Working Paper w25920 — "What Do Employee Referral Programs Do?"** — 추천 효과·매치 품질의 1차 근거; 단 수치는 firm funnel 내 분모임에 유의. · https://www.nber.org/system/files/working_papers/w25920/w25920.pdf
|
|
118
|
+
- **[벤더/2차] Apollo Technical — Employee Referral Statistics** — "추천 ~30-50% 채용", "~34% vs ~2-5%" 헤드라인 수치. *콘텐츠 마케팅 집계(2차 출처 재인용)이며 NBER과 동급 신뢰도로 쓰지 않음. 미국·특정 프로그램·시점 의존, 한국(공채·블라인드 중심)엔 외삽 불가.* · https://www.apollotechnical.com/employee-referral-statistics/
|
|
119
|
+
- **[1차/대학] USC Career Center — "Conduct Informational Interviews"** — "일자리 제안이 기대가 아님" 규범, 감사·추가소개 요청, 초기 접촉 프레이밍. · https://careers.usc.edu/resources/conduct-informational-interviews/
|
|
120
|
+
- **[1차/대학] UCLA · University of Iowa Pomerantz · ASU informational-interview guides** — 20-30분 요청 길이, 리드타임 예절, 추가 연락처 요청, 노트 작성. · https://career.ucla.edu/resources/informational-interviewing-guide/
|
|
121
|
+
- **[벤더/sales proxy] Salesforge(2025) · Expandi "State of LinkedIn Outreach H1 2026"** — 개인화 vs 비개인화 응답률(~9.4% vs ~5.4%), prior-engagement 리프트(~8%→~14%). *B2B 세일즈/SDR 데이터, 방법론 미공개, 소수점(9.36%)은 정밀도 과장. 구직 네트워킹 base rate와 다른 모집단 — sales proxy로만.* · https://expandi.io/blog/state-of-li-outreach-h1-2026/
|
|
122
|
+
- **[2차/블로그] Ben Lachman — "An intro to double opt-in intros and forwardable emails" (Medium)** — double opt-in 규범과 forwardable-blurb 형식. *실리콘밸리 스타트업/VC 관습이며 한국 비공식 소개 관행과 형식이 다름 — "보편 기대 규범"으로 과일반화하지 않음.* · https://medium.com/@blach/an-intro-to-double-opt-ins-and-forwardable-emails-cad0d0d6b1ca
|
|
123
|
+
- **[2차/대학+벤더] Northwestern Career Advancement(감사) · Cruit/CareerVillage/Skylead(후속)** — 감사 창과 구체성 요구; 2-통 후속 상한. *후속 케이던스(4-5일)는 세일즈 벤더 합의치이지 구직 네트워킹 측정값이 아님 — 기본값으로만.* · https://www.northwestern.edu/careers/jobs-internships/thank-you-notes.html
|
|
124
|
+
- **[벤더/sales proxy] Prospeo / Nutshell — warm-introduction & LinkedIn cold-outreach 템플릿** — 간결성 효과(141→56단어로 응답 배증), 단일 CTA·≤100단어 blurb 규범. *세일즈 템플릿 출처, 일화 수준.* · https://prospeo.io/s/warm-introduction-email-template
|
|
125
|
+
- **[1차/내부] AGENTS.md** — 로컬 전용·외부 업로드 금지 원칙. 본 도메인은 이를 **제3자 연락처 PII**로 확장(최소수집·보존·파기·비공유).
|
|
126
|
+
- **[현업 관점/미측정] 채용 현업(리크루터·hiring manager) 단서** — 추천 품질(추천인 신뢰도)>양, 약한 추천의 마이너스 신호, 타이밍 의존(applied 이후 효과 급감), ATS 저신뢰 추천 표시, 한국 채널/공채 현실. *동료심사 출처가 아닌 현업 휴리스틱으로 advisory.*
|
|
127
|
+
|
|
128
|
+
## 5. Phase B 힌트 (아키텍처로 연결)
|
|
129
|
+
|
|
130
|
+
- **MCP 도구 아이디어:**
|
|
131
|
+
- `get_networking_playbook(stage?: 'cold_outreach'|'informational_interview'|'warm_intro'|'referral_ask'|'follow_up'|'cold_start'|'all')` — 해당 단계의 원칙·do/dont·플레이스홀더 템플릿·루브릭 부분집합·한국 채널 분기·금지/소프트-ask 패턴 사전을 반환.
|
|
132
|
+
- `save_contact(name, company, role, tie_strength, source, target_job_id, consent_note?, retention_until?)` — 연락처 저장. **PII 최소화·보존기간** 필드 포함.
|
|
133
|
+
- `log_interaction(contact_id, channel, type, sent_at, summary, next_step_due, replied?, outcome?, do_not_contact?)` — 상호작용 로그. `replied`로 케이던스 리셋, `do_not_contact`로 영구 정지, `outcome`으로 퍼널 결과.
|
|
134
|
+
- `get_networking_status(target_job_id)` — 타깃별: 연락처 수·tie 유형 커버리지(COLD_START 여부)·overdue 팔로업·감사 미발송·**퍼널 카운트(sent/replied/info_booked/referral_obtained)**·1일 콜드 볼륨·DNC 위반 — 모두 순수 날짜 산술/카운트(영업일 보정), LLM 불필요.
|
|
135
|
+
- 데이터 소스 결합: 사용자 배경/타깃 = `get_application_context`/`get_profile`; 상태 게이팅 = 8단계 지원 상태(`applied` 이전 추천 권장).
|
|
136
|
+
|
|
137
|
+
- **데이터 형태 힌트:**
|
|
138
|
+
```
|
|
139
|
+
playbook: {
|
|
140
|
+
stage,
|
|
141
|
+
principles: [{ rule, rationale, source, trust: 'primary'|'secondary'|'vendor_sales_proxy'|'practitioner' }],
|
|
142
|
+
templates: [{ name, body_with_placeholders, max_words }],
|
|
143
|
+
channelFallback: ['email','mutual_intro','linkedin','x','community'], // 차단 시 순서
|
|
144
|
+
koChannels: ['coffee_chat','dept_senior','professor','openchat','disquiet','blind'],
|
|
145
|
+
jobAskPatterns: { hardKo:[], hardEn:[], softKo:[], softEn:[], benignExclusions:[] }, // NR-04
|
|
146
|
+
rubricChecks: [{ id, check, passBar, tier: 'A'|'B', severity:'hard'|'soft',
|
|
147
|
+
measure:{ type:'count'|'ratio'|'wordcount'|'regex'|'pattern'|'date', threshold, regex?, lang? },
|
|
148
|
+
requiresDataLayer?: bool }] // true면 미구현 시 NOT_IMPLEMENTED
|
|
149
|
+
}
|
|
150
|
+
contact: { contact_id, name, company, role,
|
|
151
|
+
tie_strength: 'strong'|'weak'|'2nd_degree'|'alumni'|'former_colleague',
|
|
152
|
+
source, target_job_id, consent_note?, retention_until? } // PII 최소·보존
|
|
153
|
+
interaction: { contact_id, channel:'linkedin'|'email'|'call'|'in_person'|'community',
|
|
154
|
+
type:'cold'|'info_interview'|'thank_you'|'follow_up',
|
|
155
|
+
sent_at: ISO8601, summary, next_step_due: ISO8601,
|
|
156
|
+
replied?: bool, replied_at?: ISO8601,
|
|
157
|
+
outcome?: 'info_booked'|'referral_obtained'|'declined'|'no_response',
|
|
158
|
+
do_not_contact?: bool }
|
|
159
|
+
status: per target_job_id -> {
|
|
160
|
+
contact_count, distinct_tie_types, cold_start: bool,
|
|
161
|
+
thank_yous_owed:[contact_id], overdue_followups:[{contact_id, business_days_since_last}],
|
|
162
|
+
funnel: { sent, replied, info_booked, referral_obtained, reply_rate, conversion_rate },
|
|
163
|
+
daily_cold_volume:{ date: count }, dnc_violations:[contact_id]
|
|
164
|
+
}
|
|
165
|
+
// 모든 cadence/latency/funnel = ISO8601 + 영업일 보정 산술 → LLM 불필요(계층 B는 이 레이어 구현 후 결정론적)
|
|
166
|
+
```
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# 오퍼 평가·결정 / Offer Evaluation & Decision — CareerMate 지식 (Phase A)
|
|
2
|
+
|
|
3
|
+
> 이 문서는 CareerMate가 **연결된 AI에게 제공(serve)** 하는 지식이다. CareerMate 안에는 LLM이 없다 — 분석·작성·검증은 연결된 AI가 수행하고, 이 플레이북·루브릭은 그 AI가 **세계 최고 수준**으로 일하도록 안내한다.
|
|
4
|
+
|
|
5
|
+
## 1. 무엇을 하는가
|
|
6
|
+
|
|
7
|
+
이 도메인은 지원자 여정의 **끝단**, 즉 오퍼가 나온 뒤부터 입사 정착·탈락 환류까지의 **"결정"** 영역이다. 인접한 salary-negotiation은 "어떻게 더 받아낼 것인가(전술·앵커링)"이고, 이 도메인은 그 결과로 손에 쥔 오퍼들을 두고 **"어느 것을 택할까 / 거절을 어떻게 통보할까 / 카운터오퍼를 받을까 / 수락 후 번복 비용은 / 첫 90일을 어떻게 설계할까 / 떨어진 이유를 어떻게 진단할까"** 를 결정하는 것이다. 따라서 리크루터 스크린의 보상 질문 응답·범위 앵커링 같은 **협상 전술은 salary-negotiation 도메인으로 위임**하고, 여기서는 **이미 받은 복수 오퍼의 비교·결정**에 집중한다. 핵심 원리: 결정은 직관이 아니라 **가중 비교 매트릭스 + 명시적 결정 임계값**으로 내리고(인간은 미래 효용을 체계적으로 오예측한다), total comp은 명목 합이 아니라 **세후·다년 현가**로 비교하며(한국은 RSU가 아니라 퇴직금·포괄임금·비상장 스톡옵션 세제가 진짜 함정), 수락 후 번복은 **법적 위험이 아니라 평판 비용**으로(단 한국 채용내정 법리는 별도) 다룬다.
|
|
8
|
+
|
|
9
|
+
## 2. 플레이북
|
|
10
|
+
|
|
11
|
+
### 원칙
|
|
12
|
+
|
|
13
|
+
- **(즉답 금지 → 가중 비교 매트릭스로 결정)** 오퍼를 받으면 그 자리에서 수락·거절하지 말고, 결정 축(total comp / 성장·학습 / 팀·제품 / 직속 매니저 / 안정성·리스크 / 번아웃·워라밸 / 출퇴근·원격)에 **사용자 본인이 부여한 가중치**(예: 매니저 30, 성장 25…)를 먼저 정의하고, 각 오퍼와 BATNA를 점수화해 (점수×가중치) 합으로 비교한다. — 인간은 무엇을 진짜로 가치 있게 여길지를 체계적으로 오예측한다(impact bias). _(출처: Harvard PON — 이슈별 점수 시스템, 1차)_
|
|
14
|
+
- **(결정 임계값과 타이브레이커를 미리 정한다)** 매트릭스 점수만 합산하고 "그래서 몇 점 차면 옮기나"를 비우면 사용자는 직관으로 회귀한다 — 이 도메인이 비판한 바로 그 실패다. 따라서 **"BATNA(또는 차선 오퍼) 대비 가중합이 N% 이상 우위일 때만 전환"** 같은 임계값과, 동률/근소차(예: ±5% 이내)일 때의 타이브레이커(매니저 품질 → 성장 → 리스크 순)를 결정 **전에** 명시한다. _(출처: Harvard PON 점수 시스템의 결정 규칙 확장, 1차)_
|
|
15
|
+
- **(BATNA는 현직/무직/타 프로세스로 분기한다)** 매트릭스에 BATNA 열을 반드시 포함하되, 사용자가 **현직자면** "현 직장 유지"를, **무직이면** "다른 진행 중 프로세스" 또는 "무오퍼로 더 기다림"을 BATNA로 둔다. 무직인데 진행 중 프로세스가 없으면 BATNA는 약하므로 그 사실을 명시하고(빈 열로 통과시키지 말 것), 협상·결정 강도를 그에 맞게 낮춘다. _(출처: Harvard PON — BATNA, 1차)_
|
|
16
|
+
- **(복수 오퍼는 만료일을 한 시점으로 정렬한다)** BATNA는 동시에 비교 가능한 살아있는 대안이 있을 때만 협상력으로 작동한다. 빠른 오퍼에는 "진행 중인 다른 최종 단계를 마치기 위해 X일 필요"를 구체 날짜로 요청하고, 느린 곳에는 "이미 오퍼를 받아 일정을 앞당겨달라"고 신호한다. 한 오퍼를 잡아두려면(on_hold) 정중한 관심 재확인 + 구체 사유를 묶는다. _(출처: Harvard PON(BATNA) + MIT Sloan CDO, 1차/2차)_
|
|
17
|
+
- **(total comp은 명목 합이 아니라 세후·다년 현가로 비교한다)** base+stock+bonus 명목 합이 아니라 (1) **세후 실수령**(한국 4대보험·소득세 공제, 비과세 식대·차량유지비 차이), (2) stock의 **연환산·베스팅·cliff**, (3) **다년 임금인상률·승진 속도**(한국 대기업 호봉 자동상승 vs 스타트업 협상제는 4년 누적에서 결과가 뒤집힐 수 있다), (4) **퇴직금·퇴직연금(DC/DB)**이 연봉에 포함인지 별도인지로 비교한다. 명목 단일 숫자는 cliff 후 급감과 세후 격차를 숨긴다. _(출처: levels.fyi(연환산), 벤더 / 한국 세제·퇴직금 분기)_
|
|
18
|
+
- **(stock 분해는 한국 오퍼 유형에 맞춰 적용한다)** "연환산·cliff·refresh" RSU 모델은 미국 빅테크 모델이다. 한국은 **상장 대기업=주식 거의 없음(현금·퇴직금 위주), 비상장 스타트업=스톡옵션(주식매수선택권)·4년 베스팅이 표준이 아닐 수 있음, 중견=현금 위주**다. 비상장 스톡옵션은 행사가·희석·청산우선권으로 기대가치를 할인하고, **행사이익이 근로소득으로 과세되나 벤처기업법 과세특례(연 한도 내 비과세·분할납부)**가 있는지 확인한다. stock이 없는 오퍼에는 stock 행을 비우고 현금·퇴직금·성장으로 비교한다(빈 stock을 가짜로 통과시키지 말 것). _(출처: levels.fyi(연환산) / 벤처기업법 스톡옵션 과세특례, 벤더/한국 1차)_
|
|
19
|
+
- **(현직 카운터오퍼는 "근본 원인 진단"으로 결정한다 — 기본값 고정 아님)** 카운터오퍼를 받으면 먼저 **"왜 떠나려 했는가"(매니저·성장 정체·번아웃·저평가 연봉)** 를 적고, 그 원인이 돈으로 해결되는지 검증한다. 원인이 **순수 저평가 연봉**이고 카운터가 그것을 시장가로 맞춘다면 수락이 합리적일 수 있다(정답은 "depends"다 — 한쪽으로 못박지 말 것). 원인이 비보상 요인이면 돈은 고치지 못한다. 사용자에게 설명할 때 **"카운터오퍼 수락자 80%가 6개월 내 퇴사" 류 수치는 출처 추적이 거의 불가능한 도시전설(존재 불명 기관 인용)이므로 "통계"가 아니라 "근본 원인 논리"로 설득**한다. _(출처: LHH/Progressive(일화적·출처 검증 불가, 벤더) — 비판적 인용)_
|
|
20
|
+
- **(수락 후 번복은 평판 비용으로, 한국은 채용내정 법리도 본다)** 미국 맥락에서 reneging은 소송보다 **리크루터·추천인·해당 회사 네트워크의 신뢰 상실**이 진짜 비용이다(업계 전체 블랙리스트는 실재하지 않으나 개별 리크루터의 기억은 실재). 다만 **한국은 비대칭**이다: 근로계약서 체결 전 오퍼 단계에서는 지원자 번복의 법적 위험이 낮지만, **회사가 "채용내정"을 일방 취소하면 판례상 근로계약 성립으로 보아 손해배상 다툼 여지**가 있다(at-will 전제의 미국 가이드를 한국에 그대로 적용하지 말 것). 불가피한 번복은 최대한 빨리·사과와 함께·짧은 사유·다리를 태우지 않는 톤으로 통보한다. _(출처: MIT Sloan CDO + CU Boulder(평판 비용, 1차/2차) / 한국 채용내정 법리, 한국 판례)_
|
|
21
|
+
- **(입사 전 30-60-90일 정착 계획을 초안한다)** 수락이 정해지면 입사 첫날 전에 0~30일=흡수·학습(기여 아님), 31~60일=초기 성과(early win)·동맹 구축, 61~90일=손익분기 계획을 초안하고, **90일 시점의 "성공 정의"를 매니저와 입사 전/직후 합의**한다. 단 한국에서는 90일 이전에 **전직 통보기간(보통 1개월)·인수인계 의무·경업금지(non-compete) 조항**이 입사일 협상의 제약이므로 함께 점검한다. _(출처: Michael Watkins, The First 90 Days, 1차 / 한국 전직 실무)_
|
|
22
|
+
- **(한국 오퍼레터는 "최종 확정"이 아니라 "처우 조율 단계"로 다루되 구속력은 사안별)** 오퍼레터는 근로계약서와 달리 구속력이 약한 경우가 많아 직급(호봉)·입사일·부서/직무 배치·사이닝 등 **비-연봉 레버**로 협상할 여지가 있다. 단 "구속력 약함"을 단정하지 말고 **"구속력은 사안별이며 채용내정 성립 시 달라진다"** 로 약화한다. **포괄임금제 여부를 확인**해 명목연봉끼리 단순 비교하지 않는다(같은 명목연봉도 실질 시급이 다르다). _(출처: 리멤버 채용 인사이트/잡코리아(2차) + 채용내정 법리(한국 판례))_
|
|
23
|
+
- **(직군별 오퍼 구조 차이를 반영한다)** 백엔드/SRE는 **온콜 수당**, ML·리서치 사이언티스트는 **equity 비중·연구 자율성**, 프론트/PM은 base·성장 경로가 더 무겁고, **신입 vs 시니어 sign-on 관행**도 다르다. 모든 직군에 같은 매트릭스 가중치를 기계적으로 들이대지 말고 직군에 맞춰 축·가중치를 조정한다. _(출처: 직군별 보상 구조 실무 — 보조)_
|
|
24
|
+
- **(탈락은 "환류 루프"로 처리한다)** 탈락 통보를 받으면 (1) 정중한 1회 한정 피드백 요청, (2) 단계별(서류/코딩/1차/최종/처우) 막힌 지점 기록·패턴화, (3) 다음 액션 1~2개로 환원한다. 면접까지 자주 가는데 최종에서 떨어지면 적합도/마무리 문제, 서류에서 막히면 포지셔닝 문제로 진단이 갈린다. 거절을 관계 종료가 아니라 미래 파이프라인(재오픈 포지션 추천 경로)으로 처리한다. _(출처: 대학 커리어센터(UW, CU Boulder), 2차)_
|
|
25
|
+
|
|
26
|
+
### Do
|
|
27
|
+
|
|
28
|
+
- 오퍼를 받으면 결정 전에 가중 비교 매트릭스를 채운다(축 ≥5, 가중치는 사용자가 직접 부여, 가중치 합 = 100).
|
|
29
|
+
- BATNA 열을 반드시 포함하되 현직/무직/타 프로세스로 분기하고, BATNA가 약하면 그 사실을 명시한다.
|
|
30
|
+
- 결정 임계값(예: "BATNA 대비 +N% 이상이면 전환")과 동률 시 타이브레이커 순서를 결정 전에 못박는다.
|
|
31
|
+
- total comp은 세후 실수령·연환산·다년 인상률·퇴직금 포함여부까지 분해해 비교한다.
|
|
32
|
+
- stock은 한국 오퍼 유형(상장 대기업/비상장 스타트업/중견)에 맞춰 적용하고, 비상장 스톡옵션은 과세특례·행사 요건을 확인한다.
|
|
33
|
+
- 복수 오퍼 만료일을 한 시점으로 정렬하고, 짧은 마감(exploding)에는 **통상 3~5영업일**(진행 중 최종단계가 있으면 그 일정까지)을 **단 한 번 구체 날짜로** 요청한다.
|
|
34
|
+
- 수락/거절 통보는 결정 후 24~48시간 내, (감사 + 결정 + 비방 없는 사유 + 관계 유지) 4요소 스크립트로 보낸다.
|
|
35
|
+
- 현직 카운터오퍼는 "왜 떠나려 했는가"를 먼저 적고 그 원인이 보상으로 해결되는지 검증한다(저평가 연봉이면 수락도 합리적 — depends).
|
|
36
|
+
- 수락 확정 시 30-60-90일 계획 초안과 "90일 성공 정의"를 매니저와 합의하고, 한국이면 전직 통보기간·인수인계·경업금지를 입사일 협상에 반영한다.
|
|
37
|
+
- 탈락 시 단계(서류/면접/최종/처우)별 막힌 지점을 기록·진단하고 정중한 1회 피드백 요청과 관계 유지를 시도한다.
|
|
38
|
+
- 한국: 연봉 여지가 좁으면 직급·입사일·부서배치·사이닝으로 협상하고, 포괄임금제·퇴직금 포함여부를 확인한다.
|
|
39
|
+
- "80% 퇴사" 류 수치를 쓸 때는 일화적이고 출처 검증 불가임을 함께 밝힌다(과신 금지).
|
|
40
|
+
|
|
41
|
+
### Don't
|
|
42
|
+
|
|
43
|
+
- 오퍼를 받자마자 그 자리에서 수락·거절하지 않는다(특히 압박 속에서).
|
|
44
|
+
- total comp을 base+stock+bonus 명목 합으로만 비교하지 않는다(세후·베스팅·cliff·퇴직금·다년 인상률 무시).
|
|
45
|
+
- 미국 RSU 모델("연환산·refresh")을 stock 없는 한국 오퍼에 기계적으로 들이대지 않는다.
|
|
46
|
+
- 오퍼를 순차로 하나씩 처리해 비교 가능한 대안을 스스로 없애지 않는다(BATNA 소멸).
|
|
47
|
+
- 무직인데 진행 중 프로세스가 없는 빈 BATNA 열을 "현 상태보다 낫다"의 비교 기준으로 가장하지 않는다.
|
|
48
|
+
- exploding offer 연장을 "며칠만, 또 며칠만" 식으로 찔끔찔끔 늘리거나, 약한 관심으로 읽힐 과한 연장(2주+)을 요청하지 않는다.
|
|
49
|
+
- 거절 통보를 미루거나 무응답(ghosting)으로 처리하지 않는다.
|
|
50
|
+
- 이미 서명한 오퍼를 가볍게 번복하지 않는다 — 평판 비용이 진짜 비용(한국은 채용내정 법리 추가 확인).
|
|
51
|
+
- 현직 카운터오퍼를 "돈이 올랐으니 OK"로 자동 수락하지도, "무조건 거절"로 자동 기각하지도 않는다(근본 원인으로 판단).
|
|
52
|
+
- 리크루터 스크린의 보상 질문 응답·범위 앵커링을 이 도메인에서 다루지 않는다(salary-negotiation으로 위임).
|
|
53
|
+
- 한국 오퍼레터를 근로계약서와 동일한 최종 확정으로 오해하거나, 반대로 "구속력 무조건 약함"으로 단정하지 않는다.
|
|
54
|
+
- 포괄임금 연봉과 비-포괄 연봉을 같은 명목값으로 동일 취급하지 않는다.
|
|
55
|
+
- 탈락을 관계 종료로 처리해 환류·재지원 경로를 닫지 않는다.
|
|
56
|
+
- "매니저=가장 강한 잔류 예측 변수" 같은 단정을 출처 없이 사용자에게 사실로 제시하지 않는다.
|
|
57
|
+
|
|
58
|
+
### 워크드 예시 (Before → After)
|
|
59
|
+
|
|
60
|
+
1. **Before:** 두 오퍼 비교 — "A사 6,500만, B사 6,200만 → A가 300만 더 많으니 A." (명목 base만 단순 비교)
|
|
61
|
+
**After:** 가중 매트릭스로 환산 — A사 = base 6,500 + stock 0 + 포괄임금(주 52h 추정 → 실질 시급·세후 낮음) + 퇴직금 연봉 포함(실수령 추가 감소) + 매니저 면담 회피적(가중 30 축에서 저점) + 출퇴근 90분. B사 = base 6,200 + 비상장 스톡옵션(행사가·희석 반영 기대가치 할인, 과세특례 한도 확인) + 비포괄(초과근무 별도) + 퇴직금 별도 + 매니저 정기 1:1·성장 코칭 명시 + 원격 3일. **결정 임계값 "BATNA(현직) 대비 +10% 이상이면 전환"**, 동률 시 타이브레이커=매니저 품질. 가중합 결과 B 우위. 사용자에게 "명목은 A가 +300만이지만 **세후 실질 시급·퇴직금·매니저 가중**을 반영하면 B가 앞섭니다"로 설명.
|
|
62
|
+
**왜 더 나은가:** 명목 단일 숫자가 숨긴 세후 실수령·포괄임금 함정·퇴직금 포함여부·비상장 equity 할인·매니저 품질을 매트릭스로 드러내고, 결정 임계값·타이브레이커를 명시해 직관 회귀를 막았다. RSU 대신 한국 비상장 스톡옵션 세제로 환산했다.
|
|
63
|
+
|
|
64
|
+
2. **Before:** 현직 카운터오퍼 — "지금 회사가 1천만 올려준대요. 그럼 남는 게 낫겠죠?" → (즉시 수락) 또는 "카운터는 무조건 거절이래요." → (즉시 거절)
|
|
65
|
+
**After:** "먼저 **왜 떠나려 했는지**부터 적어볼게요. (1) 매니저와의 갈등, (2) 성장 정체, (3) 연봉 저평가 중 무엇이었나요? 만약 떠나려던 핵심이 **연봉 저평가 하나뿐이고** 카운터가 시장가(동일 직무·레벨)를 맞춘다면 잔류가 합리적일 수 있습니다. 하지만 매니저·성장 정체가 진짜 이유였다면 1천만 원은 그 원인을 고치지 못합니다 — 6개월 뒤 같은 이유로 다시 떠나게 됩니다. 참고로 '카운터 수락자 80%가 곧 퇴사' 같은 수치가 돌지만 **출처 추적이 안 되는 일화**이니 통계가 아니라 본인 사유로 판단하시죠."
|
|
66
|
+
**왜 더 나은가:** 기본값을 한쪽으로 못박지 않고("depends") 근본 원인 진단으로 분기했다. 저평가가 원인이면 수락도 인정해 자기모순(통계 불신+결론 채택)을 피했고, 일화적 수치를 출처 검증 불가로 정직히 라벨했다.
|
|
67
|
+
|
|
68
|
+
3. **Before:** 거절 통보(이메일) — "죄송하지만 다른 회사로 가게 되었습니다. 그동안 감사했습니다." (짧고 사무적, 사유·관계 유지 없음)
|
|
69
|
+
**After:** "팀장님, 먼저 좋은 기회를 주셔서 진심으로 감사드립니다. **(감사)** 오래 고민한 끝에, 이번에는 제 다음 단계 성장 방향과 더 맞는 다른 제안을 수락하기로 결정했습니다. **(결정)** 면접 과정에서 보여주신 팀 문화와 제품 방향에 큰 인상을 받았습니다. **(비방 없는 사유)** 인연이 여기서 끝이 아니길 바라며, 앞으로 좋은 성과 이어가시길 응원하겠습니다. **(관계 유지)**" — 통보는 결정 후 24~48시간 내 발송.
|
|
70
|
+
**왜 더 나은가:** 감사 → 결정 사실 → 긍정적 사유(상대 비방 없음) → 관계 유지의 4요소 구조로, 좁은 리크루터·추천인 네트워크에서 평판을 보존하고 재오픈 포지션·추천 경로를 닫지 않는다.
|
|
71
|
+
|
|
72
|
+
## 3. 검증 루브릭 (연결된 AI가 산출물을 이 기준으로 자가검증)
|
|
73
|
+
|
|
74
|
+
루브릭은 가능한 한 **순수 카운트·존재·패턴**으로 닫히게 설계하되, **키워드 존재만으로 게이밍되는 항목은 정직하게 [ai]/H(의미 판단 필요)로 표시**했다. 라벨 의미: **[det]** = LLM 없이 셀 수 있음(개수·존재·패턴·수치 비교), **[ai]/H** = 의미 판단이 필요해 외부 AI의 판정이 있어야 함(CareerMate 단독 불가). **치명(critical)** 은 하나라도 실패 시 반려, **권고(advisory)** 는 점수 차감.
|
|
75
|
+
|
|
76
|
+
| ID | 검사 항목 | 합격 기준 | 측정 방법(LLM 없이 셀 수 있게; 의미판단 필요시 [ai]/H 표기) | 가중 |
|
|
77
|
+
|----|-----------|-----------|--------------------------------|------|
|
|
78
|
+
| R1 | matrix_axes_present — 가중 비교 매트릭스가 있고 의사결정 축·가중치·BATNA가 갖춰졌는가 | 축 ≥5 AND 가중치 합 = 100(±2) AND BATNA 열에 점수 존재 | **[det 부분]** `axes_count >= 5`, `weights_sum`이 98~102, `batna_column_scored:boolean`(BATNA 열 셀에 빈칸 아닌 점수)로 카운트. **[ai/H]** "그 축이 진짜 의사결정 축인지"(예: 색깔 같은 무의미 축 배제)는 외부 AI 판정 | critical |
|
|
79
|
+
| R2 | decision_threshold_present — 결정 임계값과 타이브레이커가 명시됐는가 | 임계값 문장 ≥1 AND 타이브레이커 ≥1 | **[det]** 패턴 {임계값, % 이상, N% 우위, 전환 기준, 타이브레이커, 동률, 근소차} 존재 카운트 ≥2(서로 다른 군) | critical |
|
|
80
|
+
| R3 | totalcomp_after_tax_multiyear — 보상이 세후·다년·구성요소로 분해됐는가 | base 외 구성요소 ≥2 distinct AND (세후 OR 퇴직금 OR 연환산 OR 다년) 토큰 ≥1 | **[det 부분]** 구성 토큰 {base/기본급, bonus/성과급, stock/스톡옵션/RSU, sign-on/사이닝, 퇴직금/퇴직연금} distinct ≥2 + {세후/실수령/4대보험, 퇴직금, 연환산/베스팅, 다년/인상률} ≥1. **[ai/H]** "연환산·세후 계산이 산수적으로 맞는지"는 외부 AI가 검산(LLM도 단순 카운트론 못 셈) | critical |
|
|
81
|
+
| R4 | stock_locale_fit — stock 처리가 한국 오퍼 유형에 맞는가(부적합 적용 방지) | stock 있으면 과세/베스팅 분해, stock 없으면 stock 행 빈 채로 현금·퇴직금 비교 | **[ai/H]** "이 오퍼에 RSU 모델이 맞는지 / 비상장 스톡옵션 세제를 적용했는지"는 오퍼 유형 식별이 필요 → ai. 보조 [det]: {스톡옵션, 과세특례, 행사가, 비상장, 베스팅} 중 ≥1 또는 "stock 없음" 명시 존재 | advisory |
|
|
82
|
+
| R5 | deadline_extension_bounded — 만료일이 명시되고 연장 요청이 정량 범위 내인가 | 만료일 필드 존재 AND (마감≤72h이면 연장 요청 존재 AND 요청 일수 ≤ 약 5영업일) | **[det]** 날짜/기한 필드 존재 + 연장 문장의 구체 날짜·일수 패턴 카운트 + `requested_days <= 5`(영업일 기준 상한 검사). 2주+ 요청은 경고 | advisory |
|
|
83
|
+
| R6 | decline_script_4elements — 거절/번복 통보가 4요소를 갖췄는가 | (감사 + 결정 + 비방 없는 사유 + 관계 유지) 존재 AND 시점(24~48h) 언급 | **[det 부분]** 시점 토큰 {24시간, 48시간, 24~48} ≥1, 비방어휘 부재(블랙리스트 욕설·비난어 == 0). **[ai/H]** "감사·관계유지·비방 없는 사유" 3요소의 진위는 의미 판단 → ai | critical |
|
|
84
|
+
| R7 | counteroffer_root_cause — 카운터오퍼 시 근본 원인 진단이 있고 기본값을 한쪽으로 못박지 않는가 | 근본 원인 진단 단계 존재 AND "depends/원인별 분기" 표현 존재 AND ('80%' 류 통계 등장 시에만 '일화적/출처 검증 불가' 동반) | **[det 부분]** {왜 떠나려, 근본 원인, 이직 동기, 떠나려던 이유} ≥1 + {depends, 경우에 따라, 저평가면 수락, 원인이 보상} ≥1. **안티패턴 0건 조건:** `'80%'|'80퍼'|'대부분 퇴사'` 등장 횟수 == 0 **이거나**, 등장 시 같은 30토큰 내 `일화적|anecdotal|출처 검증 불가|도시전설` 동반. **[ai/H]** "진단이 실제로 보상해결성을 검증했는지"는 의미 판단 | critical |
|
|
85
|
+
| R8 | reneging_reputation_kr_law — 번복을 평판 비용으로 프레이밍하되 한국 채용내정 비대칭을 다루는가 | 평판 비용 키워드 존재 AND 소송 위험 과장 부재 AND (locale=KR이면 채용내정/회사 측 취소 언급) | **[det 부분]** {평판, 리크루터, 추천인, 네트워크} ≥1 + {소송/형사처벌 단정 표현} == 0. **[ai/H]** locale=KR일 때 "채용내정 법리·회사 측 일방취소 비대칭"을 정확히 다뤘는지는 의미 판단 → ai (보조: {채용내정, 채용 내정, 회사가 취소} ≥1) | critical |
|
|
86
|
+
| R9 | onboarding_30_60_90 — 30-60-90 계획과 매니저 성공정의가 있는가 | 3개 구간(0-30/31-60/61-90) 모두 존재 AND 각 구간 목표 ≥1 AND 한국이면 전직 통보기간/경업금지 언급 | **[det]** 구간 마커 {0-30·31-60·61-90 또는 30/60/90} 3개 + 각 구간 bullet ≥1 카운트 + (locale=KR이면 {통보기간, 인수인계, 경업금지} ≥1) | advisory |
|
|
87
|
+
| R10 | rejection_diagnosis_loop — 탈락 처리에 단계별 진단과 환원 액션이 있는가 | 탈락 단계 분류 존재 AND 다음 액션 ≥1 | **[det]** 단계 라벨 {서류, 코딩, 1차, 최종, 처우} ≥2 distinct + {다음 액션, next action, 액션} 항목 ≥1 카운트 | advisory |
|
|
88
|
+
| R11 | korea_locale_lever — 한국 맥락이면 비-연봉 레버·함정이 반영됐는가 | locale=KR일 때 한국 특화 항목 ≥2 distinct | **[det 부분]** {오퍼레터, 포괄임금, 처우표/연봉등급, 호봉, 입사일, 부서배치, 사이닝, 퇴직금} distinct ≥2. **[ai/H]** "단어 나열이 아니라 실제 레버로 작동하는지"는 의미 판단 | advisory |
|
|
89
|
+
| R12 | evidence_grounding — 권고에 명명된 출처가 매핑되고 일화적 수치가 표시됐는가 | 출처 토큰 수 ≥ 핵심 권고 수와 같은 규모 AND 일화적 수치에 단서 부착 | **[det 부분]** 출처 토큰 {PON, levels.fyi, First 90 Days, Watkins, MIT Sloan, LHH} 개수가 0 초과이고 핵심 권고 블록 수에 비해 결손 아님(`sources_count`와 권고 수 비교). **[ai/H]** "어느 출처가 어느 권고를 실제로 근거하는지"의 매핑 정확성은 의미 판단 → ai | advisory |
|
|
90
|
+
|
|
91
|
+
**종합 판정 규칙:** critical(R1·R2·R3·R6·R7·R8) 6개가 **전부** 통과해야 "승인". 단, [ai/H] 부분이 포함된 critical(R1·R3·R6·R7·R8)은 외부 AI의 의미 판정까지 통과해야 진짜 통과로 본다(det 카운트만으로 승인 처리 금지). 하나라도 실패면 "반려". advisory(R4·R5·R9·R10·R11·R12) 6개는 통과 개수를 점수로 환산(N/6)해 품질 등급(상 ≥5 / 중 3~4 / 하 ≤2)을 매긴다.
|
|
92
|
+
|
|
93
|
+
**주요 실패 모드:**
|
|
94
|
+
- **가짜 det(키워드=통과) 게이밍:** "축 5개 단어"만 박고 무의미 축이거나 BATNA 열이 빈칸 → R1을 `weights_sum=100`·`batna_column_scored:boolean` 카운트 + 축 유의미성 [ai/H]로 이중 방어. det 카운트만으로 승인하지 말 것.
|
|
95
|
+
- **직관 회귀:** 매트릭스만 그리고 결정 임계값을 비움 → R2(임계값+타이브레이커)를 critical로 강제.
|
|
96
|
+
- **명목 합·RSU 편향:** 세후·퇴직금·다년 누락 또는 stock 없는 한국 오퍼에 RSU 모델 적용 → R3(세후/퇴직금/다년 토큰)+R4(locale fit, ai)로 방어.
|
|
97
|
+
- **카운터오퍼 자기모순:** 통계 불신을 표하면서 결론을 한쪽으로 못박음 → R7에 "depends 분기" 강제 + 통계 안티패턴을 **명시적 0건 조건**(미인용도 통과, 인용 시 한정어 동반)으로 설계해 vacuous pass 차단.
|
|
98
|
+
- **미국 reneging 가이드 한국 오적용:** at-will 전제를 그대로 적용 → R8에 locale=KR 채용내정 비대칭 [ai/H] 가드.
|
|
99
|
+
- **출처 게이밍:** 출처 이름만 나열하고 권고와 무관 → R12를 카운트 비교 [det]로 환원하되 매핑 정확성은 [ai/H]로 정직 표시(det 과대표시 금지).
|
|
100
|
+
- **체크리스트 채우기:** 키워드만 흩뿌림 → critical 다수에 부재 확인(R6 비방어휘 0, R7 안티패턴 0)과 의미 판정([ai/H])을 배치해 단순 키워드 통과를 막음.
|
|
101
|
+
|
|
102
|
+
## 4. 출처 (Provenance)
|
|
103
|
+
|
|
104
|
+
- **Harvard Program on Negotiation (PON) — Evaluating/Negotiating Job Offers, BATNA** — 가중 점수 비교 시스템(이슈별 점수화), 결정 임계값·타이브레이커의 기반, BATNA를 통한 복수 오퍼 협상력 (1차 학술 앵커) · https://www.pon.harvard.edu/daily/salary-negotiations/
|
|
105
|
+
- **levels.fyi — Total Compensation 계산법 / Evaluate Startup Offers / RSU 가이드** — RSU 연환산·베스팅·cliff·comp drop-off, 비상장 equity 기대가치 (벤더 표준; 단 한국 데이터 커버리지 거의 없음 → stock 분해 모델만 차용, 한국 수치는 블라인드/잡플래닛/잡코리아로) · https://www.levels.fyi/blog/what-is-total-compensation.html
|
|
106
|
+
- **Michael Watkins, The First 90 Days (HBS/IMD)** — 30-60-90 정착 계획(학습 가속·조기 성과·동맹·손익분기점), 첫 30일=흡수 (1차 프레임워크) · https://hbr.org/books/the-first-90-days
|
|
107
|
+
- **MIT Sloan CDO / CU Boulder Career / University of Washington Careers — Reneging & Multiple Offers** — reneging의 평판 비용(리크루터·추천인·학교 단위 차단), 업계 블랙리스트 부재, 복수 오퍼·탈락 환류 처리 (1차/2차 커리어센터; **미국 at-will 전제 — 한국 적용 시 채용내정 법리로 보정 필요**) · https://cdo.mit.edu/blog/2025/08/29/how-to-avoid-reneging-on-an-offer/
|
|
108
|
+
- **LHH / Progressive Recruitment — Counteroffer 통계(일화적·출처 검증 불가, 벤더, 비판적 인용)** — 현직 카운터오퍼 결정의 근본 원인 논리. '80% 6개월 내 퇴사'는 존재 불명 기관 인용의 도시전설로, "통계"가 아닌 "근본 원인 논리"로만 사용 · https://www.lhh.com/en-us/insights/why-you-should-decline-a-counter-offer-from-your-current-employer
|
|
109
|
+
- **한국 맥락 — 채용내정 법리(판례)·근로기준법 포괄임금 판례·벤처기업법 스톡옵션 과세특례·퇴직급여보장법** — 오퍼레터 구속력 사안별·채용내정 취소의 손해배상 여지, 포괄임금 실질 시급, 비상장 스톡옵션 과세·과세특례, 퇴직금/퇴직연금(DC/DB), 전직 통보기간·경업금지 (한국 1차/2차) · 리멤버 채용 인사이트/잡코리아/잡플래닛
|
|
110
|
+
- **블라인드 / 잡플래닛 / 잡코리아 — 한국 기업평점·연봉 데이터** — 한국 오퍼 비교의 시장 앵커(levels.fyi가 한국 미커버이므로 대체) (2차/커뮤니티) · https://www.teamblind.com / https://www.jobplanet.co.kr
|
|
111
|
+
|
|
112
|
+
## 5. Phase B 힌트 (아키텍처로 연결)
|
|
113
|
+
|
|
114
|
+
- **MCP 도구 아이디어:**
|
|
115
|
+
- `serve_offer_decision_kit(application_ids[], locale)` — 8단계 상태에서 'applied' 이상(특히 복수 application 동시 진행) 시 호출. CareerMate가 외부 AI에게 (1) 빈 가중 비교 매트릭스 템플릿(축·가중치 슬롯·결정 임계값·타이브레이커 슬롯), (2) total comp 분해 스키마(base/stock_연환산/bonus/sign-on/cliff/**after_tax/retirement/multiyear_raise**), (3) 거절·수락·연장요청·카운터오퍼대응 스크립트 골격, (4) 30-60-90 템플릿(+KR 전직 통보·경업금지 필드), (5) 탈락 단계 진단 체크리스트, (6) 이 도메인의 rubricChecks를 **제공**한다. 외부 AI가 `get_application_context`의 보상·매니저 메모를 채워 분석. 결과는 `save_offer_decision`·`save_onboarding_plan`으로 저장. 상태 전이: 수락→'final_passed'/입사 트랙, 자발 거절→'rejected', 탈락 통보 수신→'rejected'+진단 메모.
|
|
116
|
+
- **신선도/정합성 검사(LLM 없이 규칙):** 벤치마크의 `captured_at`이 6개월 초과면 "stale", 오퍼 통화·지역과 벤치마크 불일치면 "mismatch", `locale=KR`인데 stock 모델이 RSU로 채워졌으면 "rsu_locale_mismatch" 플래그를 함께 반환.
|
|
117
|
+
- **데이터 형태 힌트:**
|
|
118
|
+
- `offer_decision = { application_id, deadline(ISO date), total_comp:{ base, stock:{ grant, vest_years, annualized, cliff_note, is_kr_stock_option:bool, tax_special_treatment:bool }, bonus, sign_on, after_tax_estimate, retirement_in_base:bool, multiyear_raise_pct }, comp_is_inclusive_wage:bool(KR), weighted_matrix:[{ axis, weight:int, score_per_offer{} }], weights_sum:int, batna_column:{ type:'current_job'|'other_process'|'no_offer', scored:bool }, decision_threshold_pct:int, tiebreaker_order:[str], decision:'accept'|'decline'|'counter'|'pending', rationale, scripts:{ decline, accept, extend_request, counteroffer_response } }`
|
|
119
|
+
- `onboarding_plan = { application_id, phases:[{ window:'0-30'|'31-60'|'61-90', goals:[], success_definition_agreed:bool }], kr_constraints:{ notice_period_weeks:int, non_compete:bool, handover_note } }`
|
|
120
|
+
- `rejection_diagnosis = { application_id, stage:'screen'|'document'|'coding'|'interview'|'final'|'comp', pattern_note, next_actions:[] }`
|
|
121
|
+
- 루브릭은 LLM 없이 셀 수 있게 평탄화: `axes_count:int`, `weights_sum:int`, `batna_column_scored:bool`, `decision_threshold_present:bool`, `comp_components:[enum]`, `has_after_tax:bool`, `is_kr_stock_option:bool`, `decline_elements:[enum]`, `anecdotal_stat_present:bool`, `anecdotal_caveat_present:bool`, `kr_renege_law_present:bool`, `phases_count:int`, `rejection_stages:[enum]`, `sources_count:int`, `check_weight:'critical'|'advisory'`, `check_grade:'det'|'ai'`. **`check_grade='ai'` 필드는 외부 AI 판정 결과를 받아 저장**(CareerMate는 det 필드만 자동 카운트).
|