careermate 0.0.1

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.
Files changed (137) hide show
  1. package/AGENTS.md +33 -0
  2. package/INSTALL.md +230 -0
  3. package/LICENSE +21 -0
  4. package/README.md +532 -0
  5. package/THIRD_PARTY_NOTICES.md +57 -0
  6. package/bin/careermate.mjs +77 -0
  7. package/dist/career-os/README.md +78 -0
  8. package/dist/career-os/eop/cover-letter.md +46 -0
  9. package/dist/career-os/eop/fit-analysis.md +48 -0
  10. package/dist/career-os/eop/interview-prep.md +39 -0
  11. package/dist/career-os/eop/job-analysis.md +42 -0
  12. package/dist/career-os/eop/profile-extraction.md +37 -0
  13. package/dist/career-os/knowledge/ats.md +131 -0
  14. package/dist/career-os/knowledge/company-research.md +137 -0
  15. package/dist/career-os/knowledge/cover-letter.md +135 -0
  16. package/dist/career-os/knowledge/fit-matching.md +121 -0
  17. package/dist/career-os/knowledge/human-writing.md +118 -0
  18. package/dist/career-os/knowledge/interview-behavioral.md +132 -0
  19. package/dist/career-os/knowledge/interview-technical.md +126 -0
  20. package/dist/career-os/knowledge/linkedin-profile.md +152 -0
  21. package/dist/career-os/knowledge/networking-referrals.md +166 -0
  22. package/dist/career-os/knowledge/offer-evaluation-decision.md +121 -0
  23. package/dist/career-os/knowledge/onboarding-first-90-days.md +126 -0
  24. package/dist/career-os/knowledge/portfolio.md +121 -0
  25. package/dist/career-os/knowledge/recruiter-screen.md +105 -0
  26. package/dist/career-os/knowledge/rejection-triage-iteration.md +115 -0
  27. package/dist/career-os/knowledge/resume.md +123 -0
  28. package/dist/career-os/knowledge/salary-negotiation.md +123 -0
  29. package/dist/career-os/knowledge/verifiers/ats-compat.md +64 -0
  30. package/dist/career-os/knowledge/verifiers/consistency.md +61 -0
  31. package/dist/career-os/knowledge/verifiers/human-voice.md +82 -0
  32. package/dist/career-os/knowledge/verifiers/recency-staleness.md +72 -0
  33. package/dist/career-os/knowledge/verifiers/responsiveness-on-target.md +82 -0
  34. package/dist/career-os/knowledge/verifiers/truthfulness.md +67 -0
  35. package/dist/doctor.mjs +79094 -0
  36. package/dist/mcp.mjs +96108 -0
  37. package/dist/migrate.mjs +4735 -0
  38. package/dist/pdf.worker.min.mjs +28 -0
  39. package/dist/public/app.js +150 -0
  40. package/dist/public/fonts/PretendardVariable.woff2 +0 -0
  41. package/dist/public/icon-180.png +0 -0
  42. package/dist/public/index.html +52 -0
  43. package/dist/public/lib.js +394 -0
  44. package/dist/public/pages/applications.js +107 -0
  45. package/dist/public/pages/documents.js +467 -0
  46. package/dist/public/pages/home.js +261 -0
  47. package/dist/public/pages/interview.js +227 -0
  48. package/dist/public/pages/jobs.js +493 -0
  49. package/dist/public/pages/profile.js +556 -0
  50. package/dist/public/pages/settings.js +240 -0
  51. package/dist/public/styles.css +498 -0
  52. package/dist/site/analytics.js +97 -0
  53. package/dist/site/favicon.svg +1 -0
  54. package/dist/site/fonts/PretendardVariable.woff2 +0 -0
  55. package/dist/site/icon-180.png +0 -0
  56. package/dist/site/icon-512.png +0 -0
  57. package/dist/site/index.html +598 -0
  58. package/dist/site/landing.js +54 -0
  59. package/dist/site/llms-install.txt +217 -0
  60. package/dist/site/robots.txt +4 -0
  61. package/dist/site/sitemap.xml +21 -0
  62. package/dist/site/start.html +326 -0
  63. package/dist/site/style.css +550 -0
  64. package/dist/site/vercel.json +20 -0
  65. package/dist/web.mjs +46852 -0
  66. package/docs/FAQ.md +101 -0
  67. package/docs/MCP_TOOLS.md +311 -0
  68. package/docs/README.md +28 -0
  69. package/docs/START_WORKFLOW.md +137 -0
  70. package/docs/SUPPORTED_AI_APPS.md +112 -0
  71. package/docs/WORKFLOWS.md +202 -0
  72. package/docs/career-os/README.md +78 -0
  73. package/docs/career-os/eop/cover-letter.md +46 -0
  74. package/docs/career-os/eop/fit-analysis.md +48 -0
  75. package/docs/career-os/eop/interview-prep.md +39 -0
  76. package/docs/career-os/eop/job-analysis.md +42 -0
  77. package/docs/career-os/eop/profile-extraction.md +37 -0
  78. package/docs/career-os/knowledge/ats.md +131 -0
  79. package/docs/career-os/knowledge/company-research.md +137 -0
  80. package/docs/career-os/knowledge/cover-letter.md +135 -0
  81. package/docs/career-os/knowledge/fit-matching.md +121 -0
  82. package/docs/career-os/knowledge/human-writing.md +118 -0
  83. package/docs/career-os/knowledge/interview-behavioral.md +132 -0
  84. package/docs/career-os/knowledge/interview-technical.md +126 -0
  85. package/docs/career-os/knowledge/linkedin-profile.md +152 -0
  86. package/docs/career-os/knowledge/networking-referrals.md +166 -0
  87. package/docs/career-os/knowledge/offer-evaluation-decision.md +121 -0
  88. package/docs/career-os/knowledge/onboarding-first-90-days.md +126 -0
  89. package/docs/career-os/knowledge/portfolio.md +121 -0
  90. package/docs/career-os/knowledge/recruiter-screen.md +105 -0
  91. package/docs/career-os/knowledge/rejection-triage-iteration.md +115 -0
  92. package/docs/career-os/knowledge/resume.md +123 -0
  93. package/docs/career-os/knowledge/salary-negotiation.md +123 -0
  94. package/docs/career-os/knowledge/verifiers/ats-compat.md +64 -0
  95. package/docs/career-os/knowledge/verifiers/consistency.md +61 -0
  96. package/docs/career-os/knowledge/verifiers/human-voice.md +82 -0
  97. package/docs/career-os/knowledge/verifiers/recency-staleness.md +72 -0
  98. package/docs/career-os/knowledge/verifiers/responsiveness-on-target.md +82 -0
  99. package/docs/career-os/knowledge/verifiers/truthfulness.md +67 -0
  100. package/package.json +89 -0
  101. package/packages/core/src/context.ts +74 -0
  102. package/packages/core/src/index.ts +8 -0
  103. package/packages/core/src/onboarding.ts +81 -0
  104. package/packages/core/src/services.ts +187 -0
  105. package/packages/core/src/summary.ts +104 -0
  106. package/packages/db/src/connection.ts +76 -0
  107. package/packages/db/src/index.ts +23 -0
  108. package/packages/db/src/paths.ts +52 -0
  109. package/packages/db/src/repositories.ts +891 -0
  110. package/packages/db/src/runtime.ts +58 -0
  111. package/packages/db/src/schema.ts +307 -0
  112. package/packages/exporters/src/html.ts +110 -0
  113. package/packages/exporters/src/index.ts +364 -0
  114. package/packages/exporters/src/markdown.ts +178 -0
  115. package/packages/knowledge/src/index.ts +168 -0
  116. package/packages/mcp-tools/src/bridge.ts +106 -0
  117. package/packages/mcp-tools/src/index.ts +17 -0
  118. package/packages/mcp-tools/src/result.ts +49 -0
  119. package/packages/mcp-tools/src/tools.ts +747 -0
  120. package/packages/mcp-tools/src/update.ts +330 -0
  121. package/packages/parsers/src/documents.ts +533 -0
  122. package/packages/parsers/src/html.ts +86 -0
  123. package/packages/parsers/src/index.ts +231 -0
  124. package/packages/parsers/src/keywords.ts +151 -0
  125. package/packages/prompts/src/humanize.ts +59 -0
  126. package/packages/prompts/src/index.ts +82 -0
  127. package/packages/prompts/src/install.ts +43 -0
  128. package/packages/prompts/src/onboarding.ts +35 -0
  129. package/packages/prompts/src/system.ts +57 -0
  130. package/packages/shared/src/build-info.ts +22 -0
  131. package/packages/shared/src/enums.ts +142 -0
  132. package/packages/shared/src/index.ts +19 -0
  133. package/packages/shared/src/schemas.ts +453 -0
  134. package/packages/workflows/src/definitions.ts +109 -0
  135. package/packages/workflows/src/index.ts +39 -0
  136. package/scripts/init.ts +371 -0
  137. package/tsconfig.json +32 -0
@@ -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 필드만 자동 카운트).
@@ -0,0 +1,126 @@
1
+ # 온보딩·첫 90일 / Onboarding & First 90 Days — CareerMate 지식 (Phase A)
2
+
3
+ > 이 문서는 CareerMate가 **연결된 AI에게 제공(serve)** 하는 지식이다. CareerMate 안에는 LLM이 없다 — 분석·작성·검증은 연결된 AI가 수행하고, 이 플레이북·루브릭은 그 AI가 **세계 최고 수준**으로 일하도록 안내한다.
4
+
5
+ ## 1. 무엇을 하는가
6
+
7
+ 이 도메인은 기존 12개 도메인이 비워 둔 후기 candidate journey를 덮는다: **여러 오퍼 중 결정(숫자 확정 직전 의사결정), 입사 직전 게이트(레퍼런스 체크·오퍼 철회·입사일 충돌), 입사 후 온보딩·수습 적응, 그리고 거절 후 피드백/자가진단 루프**다. 앵커 프레임워크는 Michael Watkins의 *The First 90 Days*(STARS 상황진단·다섯 대화·early wins·30-60-90)이되, 이 책은 명시적으로 **신임 리더(new leaders/managers)** 용이므로 **IC(비관리자) 트랙과 관리자 트랙을 분기**해 적용한다. **경계: 연봉 협상(salary-negotiation)이 "숫자의 전술"을 소유하므로, 레인지 역질문·포괄임금 정규화·서면 확인·24~48h 검토 같은 협상 표면은 이 도메인이 소유하지 않고 그 도메인을 참조한다.** 이 도메인은 *숫자 확정 전 의사결정, 통과 게이트, 착지(landing), 실패 후 피드백*을 소유한다. 한국 맥락(처우협의·수습=시용 게이트와 그 법적 보호·평판조회·공채 vs 경력·위계 조직에서의 기대 대화 리스크)을 분기로 짠다.
8
+
9
+ ## 2. 플레이북
10
+
11
+ ### 원칙
12
+
13
+ - **(오퍼는 base만이 아니라 가중 스코어카드로 결정한다)** 수락/거절 전, 고정 차원 위에 가중치를 두고 각 오퍼를 점수화한다 — **총보상(변동급·equity·포괄임금 정규화 포함), 직무 범위/일상 업무, 매니저 품질, 성장 경로, 문화·가치 적합, 워라밸/지속가능성**에 더해 **재무 안정성/런웨이(스타트업 도산 리스크), 리모트·통근, 온콜·당직 강도, 브랜드/시장가치(다음 점프 발판)**를 포함한다. base는 측정이 가장 쉬워 과대 지배하는 알려진 결정 버그다. _(출처: eCornell #IMPACT 오퍼평가 툴 — 2차/대학)_
14
+ - **(레인지 역질문·포괄임금 정규화는 salary-negotiation 도메인을 참조한다)** 리크루터 스크린에서 레인지를 먼저 끌어내는 전술, 포괄임금(고정OT) 정규화, 서면 확인은 **연봉 협상 도메인이 소유**한다. 그 도메인의 교정된 조건부 규칙(Galinsky & Mussweiler 2001: 정보가 충분하면 먼저 데이터 앵커, 비대칭이 크면 역질문)을 그대로 따른다 — "먼저 말하면 진다"는 과일반화를 이 도메인에서 되살리지 않는다. _(출처: salary-negotiation.md R9/원칙 line 16; 중복 제거·경계 준수)_
15
+ - **(90일 계획 전에 STARS 상황유형을 진단하되 하이브리드를 허용한다)** 역할을 Start-up / Turnaround / Accelerated-growth / Realignment / Sustaining-success로 분류한다. 현실은 혼합형(예: Realignment + Accelerated-growth)이 흔하므로 **주(主) 유형 1개를 명시하고 보조 유형을 허용**한다. 학습 속도·quick-win·리스크 자세가 유형마다 다르다. _(출처: Michael D. Watkins, The First 90 Days — 1차; 단 신임 리더 전제)_
16
+ - **(다섯 대화·코얼리션은 IC/관리자 트랙으로 분기한다)** Watkins의 다섯 대화(상황진단·기대치·업무/소통 스타일·자원·개인개발)와 5-8명 stakeholder 1:1, 코얼리션 빌딩은 **신임 리더용 권한·범위를 전제**한다. **IC·주니어 트랙**에서는 (1) 기대치·성공 정의·우선순위 정렬을 매니저와 **1:1 기대치 합의** 형태로 가볍게 하고, (2) stakeholder는 "직접 협업·지원 기능 3~5명 인사 1:1"로 축소하며, (3) "코얼리션 빌딩을 deliverable로"는 적용하지 않는다 — IC가 입사 90일에 전사 코얼리션을 짜는 것은 월권으로 비친다. **관리자 트랙**에서만 다섯 대화 전체·5-8명·코얼리션을 풀로 적용한다. _(출처: Watkins(1차, 리더 한정) + 대상 적합성 교정)_
17
+ - **(기대치 미정렬·관계 실패가 조기 실패의 큰 축이지만, 인용은 출처·연도·원 카테고리를 정확히 한다)** Leadership IQ의 **2006년** 연구(5,247명 관리자 자기보고)는 신규 채용 실패의 원인을 **피드백 수용불가 26% / 감정관리 23% / 동기 17% / 기질 15% / 스킬 11%**로 본다 — 즉 "스킬이 아니라 태도·적응"이 핵심이지, "46%가 매니저 관계 때문"이 아니다. "18개월 내 ~46% 실패"는 이 2006년 수치이며 포스트-COVID·리모트 온보딩을 반영하지 못하므로 **연도와 표본을 명시**한다. 그래서 기대치를 **문서화**하는 것이 위험을 줄인다. _(출처: Leadership IQ 2006 via HRmango — 1차 연구/2차 인용; 연도·카테고리 정정)_
18
+ - **(30-60-90을 의도된 시퀀스로 짜되 분산팀 보정을 둔다)** Days 1-30 학습·신뢰 구축, 31-60 quick win 1-2개, 61-90 우선순위 deliver. 각 블록에 마일스톤·이해관계자·자원·boss 체크인을 둔다. 단 "1주 내 top 5-8 대면 1:1" "릴리스 2사이클 섀도잉" 같은 고밀도 대면 전제는 **원격/하이브리드·비동기 팀에 맞게 비동기 1:1·문서 흡수로 치환**한다. _(출처: Watkins(1차) + Gallup 2017(체계적 온보딩 ~50% 빠른 적응, ~12%만 온보딩 잘됐다고 응답) — 2차; 원격 보정)_
19
+ - **(quick win은 4필터로 고르고 boss 우선순위에 매핑한다)** 저위험·높은 학습가치·명확한 스코프·팀에 보이는 결과 — 그리고 boss가 말한 A-우선순위에 연결한다. day 90 이후에야 성과 나는 "big bang"은 피한다. _(출처: Watkins, secure early wins — 1차)_
20
+ - **(레퍼런스 체크/평판조회를 입사 직전 게이트로 능동 관리한다)** 한국 경력 채용은 입사 직전 평판조회가 빈번하다. (1) reference로 누구를 세울지 사전 선정·동의, (2) 전 직장 연락 타이밍, (3) 부정 평판 리스크(갈등 이력) 사전 맥락화. 이는 salary도 onboarding도 안 다루는 실제 late-stage 게이트다. _(출처: KR 경력 채용 평판조회 관행 — 2차)_
21
+ - **(거절 후 피드백은 1회·짧게·단일질문·비논쟁으로, 단 무응답이 정상임을 전제한다)** 거절 1-3일 후 감사+한 개의 열린 질문("다음에 더 강한 후보가 되려면 한 가지만 꼽아주실 수 있을까요?")+"짧아도 됩니다" 허용+결정 반박 금지. **그러나 콜드 거절 피드백 응답률은 낮다(법무 리스크로 무응답이 디폴트)** — 응답은 보너스로 기대치를 보정하고, **무응답일 때는 인터뷰 로그·역질문 답변 자기복기**를 진짜 재사용 진단으로 삼는다. _(출처: Arcadia/CareerSidekick/4 Corner — 2차/대학 + 무응답 베이스레이트 보정)_
22
+ - **([KR] 처우협의·서면 확정은 연봉 협상 도메인을 따르되, 입사일을 협상 레버로 쓴다)** 연봉/직위/연차/입사일을 **서면 확정한 뒤** 퇴사 통보한다(처우협의 문서팩·포괄임금 정규화는 salary-negotiation 소유). 추가로 이 도메인은 **입사일을 역제안 카드**로 다룬다 — 현 직장 인수인계·연차 소진·경쟁사 전직금지/겸업금지 조항과 충돌을 점검하고, 입사일 유연성을 협상 레버로 활용한다. _(출처: 리멤버 HR/잡코리아 — 2차/KR; 입사일 레버는 본 도메인 고유)_
23
+ - **([KR] 수습=시용 게이트이되, 근로자의 법적 보호를 반드시 병기한다)** 수습/시용은 사용자가 업무능력·조직적합성을 평가하는 게이트이지만, **대법원 판례상 본채용 거부에는 (a)사전에 구체적 평가기준·방법 마련, (b)근로자에 고지, (c)객관적 능력 부족 입증이 필요하고 입증책임은 사용자에게 있다.** 막연한 "근무태도/적응" 인상 평가만으로 거부하면 부당해고가 된다. 따라서 지원자는 **(1) 정규직 전환 기준이 근로계약서에 서면화됐는지 확인·요구할 권리**, **(2) 부당 거부 시 노동위 구제** 권리를 안다. 동시에 첫 90일에 조직문화 적응·OJT 흡수·성실성 신호를 챙기는 것은 실무적으로 유효하다. **수습 디테일: 통상 임금 90% 지급 가능, 다만 수습 3개월 초과 시 최저임금 100% 적용, 5인 미만 사업장은 해고 보호 차등.** _(출처: 대법원 수습 판례/geolabor 노무 — 2차/KR; 권리 측면 병기)_
24
+ - **([KR] 위계·집단주의 조직에서 "기대치 협상 대화"의 적절성을 분기한다)** Watkins의 다섯 대화는 서구 매니저-부하 1:1 문화 전제다. 한국 위계 조직에서 신입이 매니저에게 "기대치를 협상하자"고 먼저 요청하면 건방지게 비칠 수 있다. **KR에서는 "협상"이 아니라 "우선순위를 여쭙고 정리해 확인받는" 겸손한 프레이밍**으로 치환하고, OJT·사수 관계를 통해 간접적으로 기대치를 합의한다. _(출처: KR 조직문화 분기 — 본 도메인 고유)_
25
+
26
+ ### Do
27
+
28
+ - 오퍼 스코어카드를 고정 차원(총보상·범위·매니저·성장·문화·워라밸 + 재무안정성·리모트/통근·온콜·브랜드)으로 만들고 각 오퍼에 차원별 숫자를 강제 입력해 의사결정을 auditable하게 한다. 가중치 합=1, totalScore=Σ(가중치×점수)로 산술 검산한다.
29
+ - STARS **주 유형 1개를 명시**(보조 허용)하고, 관리자 트랙이면 future/new 매니저와 합의한다. IC 트랙이면 우선순위를 매니저에게 여쭤 정리·확인받는다.
30
+ - 트랙을 먼저 판정한다: 관리자면 다섯 대화 풀 + 5-8명 stakeholder + 코얼리션; IC면 기대치 1:1 + 협업/지원기능 3-5명 1:1로 축소.
31
+ - 30-60-90을 마일스톤+이해관계자+자원으로 짜고 day 30/60/90 boss 체크인을 예약한다. 원격팀이면 대면 전제를 비동기로 치환한다.
32
+ - quick win 1-2개를 저위험/높은학습/명확스코프/가시결과 필터로 고르고 boss A-우선순위에 매핑한다.
33
+ - 레퍼런스(평판조회) 대상자를 사전 선정·동의받고 연락 타이밍·부정 평판 리스크를 관리한다.
34
+ - 거절 후 1-3일 내 감사+단일 열린질문 피드백을 보내되, **무응답을 정상으로 전제**하고 인터뷰 로그·역질문 자기복기를 진단으로 저장한다.
35
+ - **결과 지표를 캡처한다**: quick win이 boss 지표를 실제로 움직였는가, 수습 전환 통보를 받았는가, 90일 체크인에서 기대치 문서 대비 충족률은 — 이를 저장해 다음 온보딩에 학습 피드백을 건다.
36
+ - [KR] 연봉/직위/연차/입사일을 서면 확정한 **뒤** 퇴사 통보하고(처우협의는 salary 도메인), 입사일을 역제안 레버로 점검한다.
37
+ - [KR] 정규직 전환 기준이 근로계약서에 서면화됐는지 확인·요구하고, 막연한 기준이면 무엇으로 판단하는지 묻는다(이는 권리다).
38
+
39
+ ### Don't
40
+
41
+ - base만으로 오퍼를 비교하거나, 측정 쉬운 한 숫자가 다차원 결정을 지배하게 두지 않는다. 스코어카드 모든 차원에 같은 점수를 박아 "분산 0"인 가짜 점수표를 만들지 않는다.
42
+ - 레인지 역질문·포괄임금 전술을 **이 도메인에서 새로 정의하지 않는다** — salary-negotiation의 조건부 규칙을 참조한다("먼저 말하면 진다" 과일반화 금지).
43
+ - 학습 단계를 건너뛰고 1주차에 큰 변화를 밀어붙이지 않는다.
44
+ - day 90 이후에야 성과 나는 "big bang"을 quick win으로 고르지 않는다.
45
+ - boss A-우선순위를 무시하고 자기 관심사 위주 quick win을 고르지 않는다(자기 PR로 읽힌다).
46
+ - **IC인데 관리자용 코얼리션·5-8명 전사 1:1을 그대로 수행하지 않는다**(권한·범위 밖, 월권).
47
+ - 다섯 대화를 막연한 "한번 sync하죠" 한 번으로 뭉개거나 기대치를 미문서화로 두지 않는다.
48
+ - 거절 결정을 반박/번복 시도하거나 다질문 심문을 보내지 않는다. **무응답을 자기 실패로 오인하지 않는다**(무응답이 디폴트).
49
+ - 동료만 네트워킹하고 의사결정자·지원기능을 방치하지 않는다(관계 실패 패턴).
50
+ - [KR] 처우/입사일을 서면 확정 전에 퇴사 통보하지 않는다. **수습을 "태도 신호가 전부"라며 자기 권리(전환기준 서면화·부당거부 구제)를 못 보지 않는다.**
51
+
52
+ ### 워크드 예시 (Before → After)
53
+
54
+ 1. **Before:** 신규 입사 90일 플랜 — "1개월: 사람들 파악. 2개월: 개선 시작. 3개월: 임팩트." (상황진단·quick-win 기준·이해관계자·체크인·트랙 구분 없음.)
55
+ **After:** 트랙=IC(시니어 엔지니어, 비관리자). 상황=Realignment(주) + Accelerated-growth(보조). Days 1-30(학습): 매니저와 기대치·성공정의·우선순위 1:1로 정리·확인(다섯 대화 풀이 아니라 IC 축소판), 협업·지원기능 4명 비동기 1:1, 릴리스 2사이클 문서/녹화 흡수. Day-30 체크인. Days 31-60(quick win): PR 리뷰 지연을 트리아지 로테이션으로 단축 — 저위험·가시·boss의 'velocity' 우선순위 매핑. Day-60 체크인. Days 61-90(deliver): Q3 안정성 마일스톤. Day-90 리뷰. **결과 지표: PR 리뷰 중앙 지연 -X%(boss 지표), 수습 전환 통보 여부 캡처.**
56
+ **왜 더 나은가:** STARS 주/보조를 분기하고, IC 권한 안의 축소 트랙을 적용하며(코얼리션 월권 회피), 학습→신뢰→deliver를 시퀀싱하고, quick win을 4필터+boss 우선순위로 고르고, **행위가 아니라 결과 지표**까지 캡처해 다음 온보딩에 학습 루프를 건다. Before는 모호한 동사뿐.
57
+
58
+ 2. **Before:** 거절 후 — "정말 의외네요, 제가 가장 강한 후보였다고 생각합니다. 재고해 주실 수 있나요? 한 라운드 더 해서 증명하겠습니다." (결정 반박·다질문·압박.)
59
+ **After:** "업데이트와 팀이 들인 시간에 진심으로 감사드립니다. 비록 선발되지 못했지만, 다음에 더 강한 후보가 되기 위해 한 가지만 보완점을 꼽아주실 수 있을까요? 한 줄이어도 큰 도움이 되고, 어려우시면 괜찮습니다." (거절 2일 후 발송.) **무응답 시:** 인터뷰 로그를 열어 약했던 역질문·답변을 자기복기해 진단 태그로 저장한다.
60
+ **왜 더 나은가:** 1-3일 타이밍·단일 열린질문·노력비용 낮춤·결정 비논쟁으로 응답 확률을 최대화하되, **응답률이 낮음을 전제**해 무응답 시 자가진단으로 폴백한다. Before는 다리를 태우고 재지원 경로를 닫는다.
61
+
62
+ 3. **Before:** [KR] 수습 중 — "전환되려면 그냥 눈치 잘 보고 태도 좋으면 되겠지. 기준 같은 건 물어보면 건방져 보일 테니 그냥 열심히 하자." (자기 권리 인식 없음, 기준 미확인.)
63
+ **After:** [KR] 입사 시 근로계약서에 **정규직 전환 기준이 서면 명시됐는지 확인**한다. 막연하면 사수/매니저에게 "전환은 어떤 기준으로 평가되는지 정리해 두고 싶어 여쭙는다"고 **겸손한 프레이밍**으로 묻는다(협상이 아니라 확인). 첫 90일엔 OJT 흡수·성실성 신호를 챙기되, **막연한 인상평가만으로 본채용 거부는 부당해고이고 입증책임은 회사에 있음**을 알고, 부당 거부 시 노동위 구제 경로를 인지한다.
64
+ **왜 더 나은가:** 수습=시용 게이트라는 현실과 **근로자의 법적 보호**를 함께 보여준다. Before는 "태도가 전부"라는 잘못된 인상으로 자기 권리(전환기준 서면화 요구·구제)를 못 본다. KR 위계 맥락에 맞는 겸손한 프레이밍으로 기대치를 확인한다.
65
+
66
+ ## 3. 검증 루브릭 (연결된 AI가 산출물을 이 기준으로 자가검증)
67
+
68
+ 루브릭은 가능한 한 **카운트·존재·패턴·산술**로 닫히게 설계했다. 자유서술에서 의미 분류가 필요한 항목은 정직하게 **[ai]/H**로 태깅한다. **치명(critical)** 항목은 하나라도 실패 시 반려, **권고(advisory)** 는 점수 차감. **로케일 판정**: `locale`은 (1) 대상 회사 위치, (2) 통화기호(₩/만원/억), (3) 사용자 프로필 설정 순으로 결정하고 둘 이상이 KR을 가리키면 KR 체크를 활성화한다.
69
+
70
+ | ID | 검사 항목 | 합격 기준 | 측정 방법(LLM 없이 셀 수 있게; 의미판단 필요시 [ai]/H 표기) | 가중 |
71
+ |----|-----------|-----------|--------------------------------|------|
72
+ | R1 | offer_scorecard_dimensions — 모든 오퍼를 ≥6 차원으로 점수화 | 6개 차원 라벨 각 오퍼마다 존재, ≥2 오퍼 비교 또는 단일오퍼 6차원 사유 | {총보상/comp, 범위/scope, 매니저/manager, 성장/growth, 문화/culture, 워라밸/workload} distinct 라벨 ≥6 카운트 [det] | critical |
73
+ | R2 | scorecard_auditable — 점수표가 vibes가 아니라 산술적으로 일관 | 가중치 합=1(±0.01), totalScore=Σ(w·d), 차원 점수 분산>0 | 가중치 숫자 합산 검산 + Σ 검산 + 점수들이 전부 동일값이 아님(분산>0) 확인 [det — 산술] | critical |
74
+ | R3 | offer_not_base_only — 결정 근거가 base만이 아님 | 비-base 차원 ≥3 이름 언급 + 그 차원에 실제 점수 부여 | 키워드 ≥3 매칭 **그리고** R1의 차원별 점수 셀이 채워졌는지 교차확인(단순 언급≠근거 방지) [det 구조 / 실제 비중은 ai] | advisory |
75
+ | R4 | stars_named — STARS 주 유형 1개 명시(보조 허용) | 주 유형 정확히 1개 + 보조 0~1개 | STARS 어휘 {Start-up·Turnaround·Accelerated-growth·Realignment·Sustaining-success / 스타트업·턴어라운드·성장·리얼라인먼트·성공유지}에서 "주"로 표시된 것 ==1 [det] | advisory |
76
+ | R5 | track_branched — IC/관리자 트랙이 명시되고 그에 맞는 범위 | 트랙 라벨 ≥1, 그리고 IC면 코얼리션/5-8명 전사 1:1 부재 | {IC, 비관리자, 관리자, 리더, 신임 리더} ≥1; IC 표시 시 {코얼리션, 5-8명, 전사 1:1} 등장==0 (월권 방지) [det 구조 / 적절성은 ai/H] | critical |
77
+ | R6 | five_conversations_scoped — 다섯 대화가 트랙에 맞게 커버 | 관리자: 5/5 라벨; IC: 기대치·우선순위·소통스타일 ≥3 + 자원/개발은 선택 | 트랙별 분기 카운트(관리자 5/5, IC ≥3 핵심) [det 구조 / 트랙 적합성은 ai/H] | advisory |
78
+ | R7 | three_block_structure — 3블록 각 마일스톤·이해관계자·자원·체크인 | 3블록, 블록별 4필드 존재 | **enum 환원**: 각 블록을 `{milestones:[], stakeholders:[], resources:[], checkin:day30/60/90}` 구조 필드로 받아 존재 검사(자유서술 의미분류 불가하므로 구조화 입력 전제) [det if structured / 자유서술이면 ai/H] | advisory |
79
+ | R8 | quickwin_filtered — quick win이 4필터 통과 + boss 우선순위 매핑 | 저위험+가시/명확스코프 키워드 + boss 우선순위 참조 | 결정 부분: 필터 키워드 존재. 판단 부분: win이 boss A-우선순위에 실제 정렬되는가 [ai/H — 의미 매핑] | advisory |
80
+ | R9 | stakeholder_map_sized — 트랙별 적정 규모 이해관계자 맵 | 관리자: ≥5명+역할태그 ≥2; IC: 3-5명 | 이해관계자 엔트리 수 카운트(트랙별 임계) + 역할태그 {decision-maker, influencer, collaborator, support} distinct ≥2 [det] | advisory |
81
+ | R10 | rejection_feedback_form — 거절 피드백이 감사·단일질문·비논쟁 | thanks 토큰 + '?' ==1 + 반박어 0 | '?' 카운트==1, 감사 토큰 존재, 반박 패턴 {reconsider, 다시 검토, 재고, reverse} ==0 [det 구조 / 톤은 ai/H] | critical |
82
+ | R11 | no_response_fallback — 무응답 시 자가진단 폴백이 있는가 | 무응답 정상 전제 + 자기복기 진단 ≥1 | 패턴 {무응답, 응답이 없, 정상, 보너스} ≥1 **그리고** {자기복기, 인터뷰 로그, 역질문 복기, 자가진단} ≥1 [det] | advisory |
83
+ | R12 | outcome_metric_present — 결과 지표 캡처 필드가 있는가 | 행위가 아닌 종속변수 ≥1 | 패턴 {전환 통보, 수습 전환, boss 지표, 충족률, KPI, 우선순위 지표 변화} ≥1 (bossCheckinDone:bool만으론 불충분) [det] | advisory |
84
+ | R13 | kr_offer_writeproof — [KR] 연봉/직위/연차/입사일 서면 확정 후 퇴사 통보 + 입사일 레버 | 4개 서면항목 + 퇴사통보 순서 + 입사일 협상 언급 | 키워드 {연봉, 직위, 연차, 입사일} 4/4 + {서면, 확정, 퇴사 통보} + {입사일 협상/역제안/조율} (포괄임금 정규화는 salary 도메인 참조) [det] · KR 로케일 게이트 | advisory |
85
+ | R14 | kr_probation_rights — [KR] 수습 전환기준 서면화 확인 + 근로자 법적 보호 병기 | 전환기준 확인 + 법적 보호(입증책임/부당해고/구제) 언급 | {전환 기준, 근로계약서} ≥1 **그리고** {입증책임, 부당해고, 노동위, 구제, 판례} ≥1 (한쪽만이면 실패 — 권리 병기 강제) [det] · KR 로케일 게이트 | critical(KR) |
86
+ | R15 | boundary_no_duplication — salary-negotiation과 중복 전술을 재정의하지 않는가 | 레인지 역질문·포괄임금 정규화를 새로 정의하지 않고 참조 | 패턴 {salary-negotiation, 연봉 협상 도메인, 참조} 존재가 {레인지 역질문 스크립트, 포괄임금 정규화 공식}을 자체 정의하는 본문과 공존 [det 구조 / 실제 비중복은 ai/H] | advisory |
87
+
88
+ **종합 판정 규칙:** critical(R1·R2·R5·R10, KR 로케일이면 +R14) 전부 통과해야 "승인". 하나라도 실패면 "반려". advisory는 통과 개수를 점수로 환산(N/총 advisory)해 등급(상/중/하)을 매긴다.
89
+
90
+ **주요 실패 모드:**
91
+ - **빈 껍데기 통과(체크리스트 채우기):** STARS 단어 1개·대화 5라벨·차원 6라벨만 박아 승인 → R2(산술 일관·분산>0)+R3(점수 셀 교차확인)+R8(boss 매핑 ai/H)으로 다층 방어. 단순 presence만으로 critical 통과 불가.
92
+ - **대상-적합성 위반(월권):** IC가 관리자용 코얼리션/전사 1:1을 그대로 수행 → R5에서 IC 표시 시 코얼리션·5-8명 등장==0 강제.
93
+ - **det 과대주장:** 자유서술에서 milestone/stakeholder를 의미분류로 세려는 시도 → R7을 enum 구조 입력으로 환원하거나 정직하게 ai/H로 표기.
94
+ - **무응답 오인:** 거절 무응답을 자기 실패로 → R11에서 무응답 정상 전제+자가진단 폴백 강제.
95
+ - **KR 법리 한쪽 기울기:** 수습을 "태도가 전부"로 겁주고 권리 누락 → R14에서 전환기준 확인과 법적 보호를 **둘 다** 요구(한쪽만이면 실패).
96
+ - **경계 붕괴:** salary-negotiation 전술을 재정의하거나 그 도메인의 교정 규칙과 모순 → R15로 참조 여부 확인, 과일반화 앵커 규칙 부재 점검.
97
+ - **로케일 게이팅 미정의:** KR 체크가 언제 켜지는지 불명 → 종합 규칙에 회사위치+통화+프로필 3신호 합의 명시.
98
+
99
+ ## 4. 출처 (Provenance)
100
+
101
+ - **Michael D. Watkins — *The First 90 Days* (HBR Press, 2003 원전 / 2013 확장판)** — STARS 상황진단·다섯 대화·secure early wins·30-60-90·코얼리션. **1차이나 명시적으로 신임 리더용**이므로 IC 트랙은 교정 적용. 단일 저자 의존·원격 온보딩 미반영 한계 표기. · https://www.amazon.com/First-90-Days-Strategies-Expanded/dp/1422188612
102
+ - **Leadership IQ — "Why New Hires Fail" (2006, 5,247 관리자 자기보고)** — 실패 원인 카테고리(피드백 26%/감정 23%/동기 17%/기질 15%/스킬 11%). **2006년 데이터·자기보고 한계 명시**, "46% 매니저 관계" 환원은 오인용으로 정정. (1차 연구, HRmango 2차 인용) · https://hrmango.com/why-46-of-new-hires-fail/
103
+ - **Gallup — Onboarding & Retention (2017)** — ~12%만 자사 온보딩이 잘됐다고 응답, 체계적 온보딩 ~50% 빠른 적응. (1차 연구기관, 2017 표본) · https://www.gallup.com/workplace/235121/why-onboarding-experience-key-retention.aspx
104
+ - **eCornell #IMPACT — Which Job Offer Should You Choose? (Cornell 오퍼평가 툴)** — 가중 다차원 스코어카드, 총보상/경로/매니저가 5% base 델타를 압도, base 지배 편향. (2차/대학 제휴) · https://ecornell-impact.cornell.edu/which-job-offer-should-you-choose-heres-a-great-tool-to-evaluate-compensation-packages/
105
+ - **Arcadia University Career Launchpad / CareerSidekick / 4 Corner Resources — 거절 후 피드백** — 1-3일 타이밍, 단일 열린질문, "짧아도 됨" 허용, 결정 비논쟁. **응답률 낮음(무응답 디폴트) 베이스레이트 보정 추가.** (2차/대학 커리어센터) · https://careerlaunchpad.arcadia.edu/blog/2024/10/30/how-to-ask-for-feedback-after-job-rejection-with-examples/
106
+ - **monday.com / Indeed / GetGuru — 30-60-90 & stakeholder-map 템플릿** — 블록별 마일스톤/이해관계자/자원, quick-win 기준, 역할 카테고리. (벤더/2차) · https://www.indeed.com/career-advice/starting-new-job/30-60-90-day-plan
107
+ - **리멤버 HR / 잡코리아 Q&A / 커리어케어 — 처우협의·오퍼·입사일 (KR)** — 처우협의 문서팩, 연봉테이블 산정, 서면 확정 후 퇴사 통보. **처우협의·포괄임금 정규화 자체는 salary-negotiation 도메인 소유, 여기선 입사일 레버·서면 순서만.** (2차/KR) · https://hr.rememberapp.co.kr/blog/insights/
108
+ - **geolabor 노무 / 대법원 수습·시용 판례 / a-ha 노무 Q&A (KR)** — 수습=시용 평가 게이트이되 **본채용 거부에 구체적 기준·고지·객관적 입증 필요, 입증책임 사용자, 막연한 거부는 부당해고**. 수습 임금 90%·3개월 초과 최저임금 100%·5인 미만 차등. (2차/KR 노무 실무) · https://www.geolabor.kr/
109
+ - **salary-negotiation.md (동일 저장소 인접 도메인)** — 레인지 역질문·포괄임금 정규화·24~48h 검토·서면 확인·선제 앵커 vs 디플렉션 조건부 규칙(Galinsky & Mussweiler 2001). **이 도메인은 그 전술을 재정의하지 않고 참조**(경계 준수). · docs/career-os/knowledge/salary-negotiation.md
110
+ - **(미검증 수치 제거 기록)** — 원본의 "직접 물으면 ~80% 레인지 공유"(벤더 단일출처, 통제집단 없음)와 "~30% leave within 90 days"(sources에 대응 출처 없는 dangling)는 1차 근거 부재로 **정량 주장에서 제거/정성 강등**.
111
+
112
+ ## 5. Phase B 힌트 (아키텍처로 연결)
113
+
114
+ - **MCP 도구 아이디어:**
115
+ - `get_offer_decision_scorecard(market?)` / `save_offer_decision(...)` — `final_passed` 직전(pre-accept)에서 활성. 가중 다차원 템플릿을 `get_application_context`의 comp 데이터로 채워 반환하고, **가중치 합·Σ·분산을 규칙으로 검산**(R2를 LLM 없이).
116
+ - `get_onboarding_playbook(track:'ic'|'manager', locale:'kr'|'global')` — **트랙 분기**된 STARS 30-60-90 스캐폴드+다섯대화(트랙별)·quick-win 필터·이해관계자 맵 템플릿을 반환. IC 트랙은 코얼리션 제외.
117
+ - `save_onboarding_plan(...)` — 날짜 박힌 플랜을 블록별 마일스톤/이해관계자/자원/체크인 + **결과 지표 필드**로 영속화(R7을 enum 구조로, R12를 캡처).
118
+ - `save_rejection_feedback(applicationId, ...)` — `rejected` 신청에 close-the-loop 진단 부착. **무응답 시 자가진단(인터뷰 로그 자기복기) 경로 포함**, 이후 `analyze_job`에 학습 피드.
119
+ - `get_workflow_guide`에 `onboard_first_90` 워크플로우 등록(`final_passed`에서 해금).
120
+ - **데이터 형태 힌트:**
121
+ - 8-state 게이트 결속: 오퍼 스코어카드는 `final_passed`(pre-accept), 온보딩은 accepted/started 후 해금, 거절 피드백은 `rejected` 부착.
122
+ - `plan: { applicationId, track:'ic'|'manager', starsType:{primary, secondary?}, blocks:[{day:30|60|90, milestones:[], stakeholders:[{name,role}], resources:[], bossCheckinDone:bool, outcomeMetric:{name, baseline, day90}}], fiveConversations:{...:{done:bool, noteId}}, quickWins:[{desc, lowRisk:bool, visible:bool, bossPriorityRef}], locale, kr:{probationConversionCriteriaInContract:bool, 처우확정written:bool, rightsAcknowledged:bool} }`
123
+ - `offerScorecard: { offers:[{id, dims:{totalComp, scope, manager, growth, culture, workload, financialStability, remote, oncall, brand}, weights, totalScore, 포괄임금Flag}], weightsSum, variance }` — R2 산술 검산 필드 평탄화.
124
+ - `rejectionFeedback: { applicationId, askedAt, question, response?, noResponseSelfDiagnosis:[tags], diagnosisTags[] }` — 무응답 폴백 필드 포함.
125
+ - `locale` 결정 신호: `{ companyLocation, currencySymbol, userProfileLocale }` 3신호로 KR 게이트 판정(R13·R14).
126
+ - 루브릭은 카운트/존재/패턴/산술 필드로 평탄화하고, 의미판단 항목은 `judgment:'ai', difficulty:'H'`로 표기해 연결 AI가 결정론 체크는 프로그램으로·[ai] 체크는 자기 판단으로 분리 실행.