careermate 0.0.4 → 0.0.6

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 (124) hide show
  1. package/AGENTS.md +11 -7
  2. package/INSTALL.md +18 -16
  3. package/README.md +28 -26
  4. package/THIRD_PARTY_NOTICES.md +2 -3
  5. package/bin/careermate.mjs +8 -1
  6. package/dist/career-os/README.md +8 -3
  7. package/dist/career-os/eop/career-description.md +136 -0
  8. package/dist/career-os/eop/cover-letter.md +7 -5
  9. package/dist/career-os/eop/fit-analysis.md +15 -5
  10. package/dist/career-os/eop/interview-prep.md +209 -21
  11. package/dist/career-os/eop/job-analysis.md +5 -3
  12. package/dist/career-os/eop/profile-extraction.md +5 -4
  13. package/dist/career-os/knowledge/cover-letter.md +4 -4
  14. package/dist/career-os/knowledge/fit-matching.md +8 -8
  15. package/dist/career-os/knowledge/interview-behavioral.md +76 -8
  16. package/dist/career-os/knowledge/interview-technical.md +106 -4
  17. package/dist/career-os/knowledge/linkedin-profile.md +1 -1
  18. package/dist/career-os/knowledge/networking-referrals.md +1 -1
  19. package/dist/career-os/knowledge/offer-evaluation-decision.md +10 -10
  20. package/dist/career-os/knowledge/portfolio.md +3 -3
  21. package/dist/career-os/knowledge/verifiers/ats-compat.md +8 -4
  22. package/dist/career-os/knowledge/verifiers/human-voice.md +2 -2
  23. package/dist/career-os/knowledge/verifiers/recency-staleness.md +1 -1
  24. package/dist/career-os/knowledge/verifiers/responsiveness-on-target.md +2 -2
  25. package/dist/career-os/knowledge/verifiers/truthfulness.md +1 -1
  26. package/dist/doctor.mjs +1019 -127
  27. package/dist/mcp.mjs +1036 -126
  28. package/dist/migrate.mjs +52 -1
  29. package/dist/public/app.js +42 -16
  30. package/dist/public/i18n/en/applications.js +23 -0
  31. package/dist/public/i18n/en/common.js +22 -0
  32. package/dist/public/i18n/en/documents.js +133 -0
  33. package/dist/public/i18n/en/home.js +75 -0
  34. package/dist/public/i18n/en/interview.js +69 -0
  35. package/dist/public/i18n/en/jobs.js +152 -0
  36. package/dist/public/i18n/en/nav.js +18 -0
  37. package/dist/public/i18n/en/profile.js +201 -0
  38. package/dist/public/i18n/en/settings.js +127 -0
  39. package/dist/public/i18n/en/status.js +22 -0
  40. package/dist/public/i18n/en.js +17 -0
  41. package/dist/public/i18n/ko/applications.js +23 -0
  42. package/dist/public/i18n/ko/common.js +22 -0
  43. package/dist/public/i18n/ko/documents.js +133 -0
  44. package/dist/public/i18n/ko/home.js +63 -0
  45. package/dist/public/i18n/ko/interview.js +69 -0
  46. package/dist/public/i18n/ko/jobs.js +152 -0
  47. package/dist/public/i18n/ko/nav.js +18 -0
  48. package/dist/public/i18n/ko/profile.js +201 -0
  49. package/dist/public/i18n/ko/settings.js +127 -0
  50. package/dist/public/i18n/ko/status.js +23 -0
  51. package/dist/public/i18n/ko.js +18 -0
  52. package/dist/public/i18n.js +55 -0
  53. package/dist/public/index.html +1 -0
  54. package/dist/public/lib.js +25 -17
  55. package/dist/public/pages/applications.js +17 -21
  56. package/dist/public/pages/documents.js +153 -107
  57. package/dist/public/pages/home.js +88 -53
  58. package/dist/public/pages/interview.js +105 -51
  59. package/dist/public/pages/jobs.js +330 -106
  60. package/dist/public/pages/profile.js +157 -152
  61. package/dist/public/pages/settings.js +270 -72
  62. package/dist/public/styles.css +38 -3
  63. package/dist/web.mjs +859 -103
  64. package/docs/FAQ.md +26 -5
  65. package/docs/MCP_TOOLS.md +26 -12
  66. package/docs/START_WORKFLOW.md +2 -2
  67. package/docs/SUPPORTED_AI_APPS.md +13 -0
  68. package/docs/WORKFLOWS.md +80 -23
  69. package/docs/career-os/README.md +8 -3
  70. package/docs/career-os/eop/career-description.md +136 -0
  71. package/docs/career-os/eop/cover-letter.md +7 -5
  72. package/docs/career-os/eop/fit-analysis.md +15 -5
  73. package/docs/career-os/eop/interview-prep.md +209 -21
  74. package/docs/career-os/eop/job-analysis.md +5 -3
  75. package/docs/career-os/eop/profile-extraction.md +5 -4
  76. package/docs/career-os/knowledge/cover-letter.md +4 -4
  77. package/docs/career-os/knowledge/fit-matching.md +8 -8
  78. package/docs/career-os/knowledge/interview-behavioral.md +76 -8
  79. package/docs/career-os/knowledge/interview-technical.md +106 -4
  80. package/docs/career-os/knowledge/linkedin-profile.md +1 -1
  81. package/docs/career-os/knowledge/networking-referrals.md +1 -1
  82. package/docs/career-os/knowledge/offer-evaluation-decision.md +10 -10
  83. package/docs/career-os/knowledge/portfolio.md +3 -3
  84. package/docs/career-os/knowledge/verifiers/ats-compat.md +8 -4
  85. package/docs/career-os/knowledge/verifiers/human-voice.md +2 -2
  86. package/docs/career-os/knowledge/verifiers/recency-staleness.md +1 -1
  87. package/docs/career-os/knowledge/verifiers/responsiveness-on-target.md +2 -2
  88. package/docs/career-os/knowledge/verifiers/truthfulness.md +1 -1
  89. package/package.json +2 -2
  90. package/packages/core/src/onboarding.ts +2 -1
  91. package/packages/core/src/services.ts +138 -21
  92. package/packages/core/src/summary.ts +59 -1
  93. package/packages/core/src/verify/lint.ts +4 -0
  94. package/packages/db/src/index.ts +1 -0
  95. package/packages/db/src/repositories.ts +0 -0
  96. package/packages/db/src/schema.ts +17 -0
  97. package/packages/exporters/src/index.ts +28 -17
  98. package/packages/knowledge/src/index.ts +46 -7
  99. package/packages/mcp-tools/src/bridge.ts +194 -13
  100. package/packages/mcp-tools/src/tools.ts +390 -38
  101. package/packages/mcp-tools/src/update.ts +31 -16
  102. package/packages/parsers/src/documents.ts +12 -1
  103. package/packages/prompts/src/humanize.ts +46 -0
  104. package/packages/prompts/src/index.ts +5 -1
  105. package/packages/prompts/src/install.ts +4 -4
  106. package/packages/prompts/src/onboarding.ts +4 -4
  107. package/packages/prompts/src/system.ts +17 -8
  108. package/packages/shared/src/enums.ts +14 -4
  109. package/packages/shared/src/schemas.ts +41 -0
  110. package/packages/workflows/src/definitions.ts +47 -10
  111. package/scripts/init.ts +284 -13
  112. package/dist/site/analytics.js +0 -97
  113. package/dist/site/favicon.svg +0 -1
  114. package/dist/site/fonts/PretendardVariable.woff2 +0 -0
  115. package/dist/site/icon-180.png +0 -0
  116. package/dist/site/icon-512.png +0 -0
  117. package/dist/site/index.html +0 -565
  118. package/dist/site/landing.js +0 -54
  119. package/dist/site/llms-install.txt +0 -218
  120. package/dist/site/robots.txt +0 -4
  121. package/dist/site/sitemap.xml +0 -21
  122. package/dist/site/start.html +0 -353
  123. package/dist/site/style.css +0 -559
  124. package/dist/site/vercel.json +0 -20
@@ -13,6 +13,15 @@
13
13
  - 전역 직감 점수 금지 — **요건별로 증거를 인용하고 강도 등급**을 매긴다(구조화 채점이 인상 채점을 이긴다).
14
14
  - 높은 키워드 커버리지를 높은 적합으로 등치하지 않는다(>75~80%는 스터핑 신호).
15
15
 
16
+ ## 0a. 발명 차단 — 사실 span 앵커 (판정영향 주장만)
17
+ <!-- applied: r12-fit-contract-invention / 2026-06-21 (consensus R3 전원 agree; 결함-발생률 게이트) -->
18
+
19
+ - **판정영향** = MUST 녹아웃 게이트 또는 최종 밴드를 바꾸는 주장. 판정영향 사실주장·수치·레벨·운영속성·연차 환산은 **공고+이력의 사실 span 또는 명시 기준일**에 앵커해야 한다(두 출처 밖이면 계약 위반). 판정에 무관한 단순 서술은 자유.
20
+ - **라벨 필요(`[추정 — 출처에 없음]` + 불확실성):** 밴드/녹아웃에 영향 주는 추론 — 레벨 단정('시니어급/미드급'), 부재 단정('온보딩 없음'·'무중단 운영'), 성격 프레임('법적 자격 성격'). 동사 레지스터 레벨 추론(§3)도 단정이 아니라 이 라벨로 표기.
21
+ - **라벨 불요(과잉 라벨 금지):** 동의어 연결('Spring=Spring Framework'), 공고에 명시된 NCS 능력단위 매핑, 강도 등급(Strong/Moderate/Weak), 단순 요약.
22
+ - **연차/기준일:** MUST 녹아웃이 연차('N년 이상')에 의존할 때만 판정영향 → 평가 기준일이 출처에 없으면 `[기준일 미제공 — 환산 불가]`로 두고 저장 연차 vs 요건 연차를 **정성 비교만**(숫자 환산 금지). 기준일이 주어질 때만 명시 산술. 연차가 녹아웃에 무관하면 정성 맥락으로만.
23
+ - 없는 운영속성(무중단·고가용성·대규모 등) 단정 금지 — 출처의 수치·도구만 인용(예: 'p99 800→320ms' 인용 가능 / '무중단' 금지). 라벨 경계는 [job-analysis](job-analysis.md) §0 부재 규칙과 동기화(fit는 공고+이력 2출처라 '추정 — 출처에 없음'이 '공고에 언급 없음'보다 정확 — 의도적 차이).
24
+
16
25
  ## 1. 입력 수집
17
26
  `get_application_context`를 먼저 호출 → profile·대표 resume·경력/스킬·대상 job(requirements/keywords/직무내용). 공고가 파일/URL이면 사용자가 준 경로를 `read_document`로 읽거나 본문을 받는다. 부족한 정보는 지어내지 말고 사용자에게 확인.
18
27
 
@@ -20,18 +29,19 @@
20
29
  1. **JD 원자 분해** → 3버킷: 필수/MUST(녹아웃) · 우대/PREFERRED(가점) · 맥락/CONTEXT(직무·환경, 관련성 판단용). 각 요건은 단일 검증가능 주장.
21
30
  2. **녹아웃 먼저 게이트.** 각 MUST = 충족/미충족/확인필요. 하드 MUST 하나라도 미충족(법적 자격·필수 자격증·진짜 시니어의 "N년 이상") → 나머지와 무관하게 최종 **낮음/FAIL**, 어떤 녹아웃인지 명시. 녹아웃이 확인필요 → 통과 불가, blocking missing-info.
22
31
  3. **요건별 증거 매핑(핵심).** 각 요건 ← 정확한 resume 증거(프로젝트·역할·지표·맥락 내 도구) → 강도: **Strong**(했음+성과/지표) / **Moderate**(인접·전이) / **Weak**(언급, 증거無) / **None**. 키워드만 있고 행동 증거 없으면 **Weak**(매치 아님).
23
- 4. **가중 채점(평균 아님).** MUST는 게이트. 충족분 중 관련경험 > 맥락 내 하드스킬 > 자격 > 우대 순 가중. 우대는 상방만 더하고 부재는 무감점. 밴드(높음/중간/낮음 또는 0–100)를 추론과 함께 제시.
32
+ 4. **가중 채점(평균 아님).** MUST는 게이트. 충족분 중 관련경험 > 맥락 내 하드스킬 > 자격 > 우대 순 가중. 우대는 상방만 더하고 부재는 무감점. **종합 점수(0~100 정수)와 밴드(높음/중간/낮음)를 함께** 추론과 함께 제시한다(둘 중 하나만 제시는 계약 위반; 점수↔밴드↔근거 일관 — 녹아웃 미충족이면 낮음 밴드).
24
33
  5. **리스크/레드플래그를 점수와 분리.** 과적합·미설명 공백기·짧은 근속·스코프 미스매치(IC가 리드 지원, 리드 증거無)·도메인 미스매치 → **면접 확인 항목**(감점 아님, 진짜 녹아웃 제외).
25
34
  6. **미싱인포 정직 선언.** resume가 침묵하는 요건 = "확인 필요"(가정된 통과/탈락 금지). 녹아웃급 미상은 verdict 보류, 우대급 미상은 신뢰도만 하향.
26
35
 
27
- ## 3. 한국 시장 특수
36
+ ## 3. 한국 시장 특수 (ko 로케일·한국 공고 지원 시에만 — 비한국 공고는 해당 시장 기준)
28
37
  - 자격요건 우산 안의 **필수**(자격증·어학·법적 요건)가 진짜 녹아웃. **우대**=가점이나 반복·강조·시니어 역할이면 *사실상 필수*로 격상해 취급.
29
38
  - **신입 공고에 경력연수 녹아웃 적용 금지** — 잠재력·기초·직무관련 교육/경험으로 평가. 경력은 도구+지표 기반 즉시전력으로 평가.
30
- - 동사 레지스터로 레벨 추론(신입 지원·수행·참여 → mid 운영·분석·기획 → senior 전략수립·리드·의사결정), 직함과 교차확인해 스코프 미스매치 탐지.
39
+ - 동사 레지스터로 레벨 추론(신입 지원·수행·참여 → mid 운영·분석·기획 → senior 전략수립·리드·의사결정), 직함과 교차확인해 스코프 미스매치 탐지. (레벨은 단정이 아니라 §0a 라벨로 표기)
31
40
  - **공채/NCS·블라인드 맥락:** 직무기술서의 능력단위(지식·기술·태도·경험)에 증거 매핑. **학력·출신·나이·외모·가족 신호 사용 금지**(채용절차법 제4조의3 / 공정채용). JD가 그런 직무무관 정보를 요구하면 사용자에게 플래그.
32
41
 
33
42
  ## 4. 출력 계약 (사용자 대면 — 전부 포함)
34
- 1. **종합 점수 + 밴드** (한 줄 근거, MUST+가중 증거 기반; 키워드% 아님)
43
+ 출력 언어 = 사용자의 대화 언어. §3(한국 시장 특수)은 한국 공고 지원 시에만 적용한다.
44
+ 1. **종합 점수 + 밴드 (필수 형식)** — `종합 점수: NN/100 (높음/중간/낮음)` 로 정수 점수와 밴드를 **함께** 제시(한 줄 근거, MUST+가중 증거 기반; 키워드% 아님). 점수만/밴드만은 출력계약 위반.
35
45
  2. **녹아웃 패널** — 각 MUST: 충족/미충족/확인필요 (실패·미상 명시)
36
46
  3. **요건별 증거 표** — 요건 → resume 증거 인용/위치 → 강도 → 전이 크레딧 주석
37
47
  4. **갭** — 필수-부재/약한 항목, 임팩트순
@@ -43,6 +53,6 @@
43
53
  내부 도구명·이 EOP·점수 계산 내부는 노출하지 않는다.
44
54
 
45
55
  ## 5. 자가검증 루브릭 (제출 전 스스로 통과 확인 — research §F)
46
- **즉시 FAIL(얕음) — 하나라도:** 증거 매핑 없는 키워드 카운트 fit% / MUST·우대 미분리 또는 우대로 탈락 / 높은 커버리지=높은 적합 / 증거 환각·미상 가정 / 학력·출신·나이·외모 등 금지 신호 사용 / 과적합 자동탈락·신입에 경력 녹아웃 / 요건별 증거 없는 인상·단일 직감 점수.
56
+ **즉시 FAIL(얕음) — 하나라도:** 증거 매핑 없는 키워드 카운트 fit% / MUST·우대 미분리 또는 우대로 탈락 / 높은 커버리지=높은 적합 / 증거 환각·미상 가정 / 학력·출신·나이·외모 등 금지 신호 사용 / 과적합 자동탈락·신입에 경력 녹아웃 / 요건별 증거 없는 인상·단일 직감 점수 / **종합 점수(정수) 누락(밴드만) 또는 점수↔밴드↔근거 불일치 / 판정영향 주장이 출처 span 미앵커(레벨·부재·운영속성 발명) 또는 기준일 없이 연차 산술(§0a 위반).**
47
57
  **PASS(전문가) — 전부:** JD 원자분해+버킷 / 녹아웃 선게이트+명시 / 요건별 증거 강도+전이 근거(행동 증거) / 관련경험 가중·우대 상방만 / 리스크 분리 / 미싱인포 정직+신뢰도 조정 / 한국 관행(필수·우대·신입/경력·NCS·금지 신호) 준수.
48
58
  **탁월(가점):** ATS가 놓치는 동의어/도구 등가 포착 / 사실상 필수 우대 식별 / 갭·리스크별 구체 next action.
@@ -5,35 +5,223 @@
5
5
  > 근거(보강 리서치): [`../validation/research/interview-prep.md`](../validation/research/interview-prep.md). 검증 대상(L2). 먼저 [README](../README.md) §0·§3 적용.
6
6
 
7
7
  ## 0. 전문가 프레임
8
- - **구조화가 카리스마를 이긴다(Google):** 모든 예상질문을 정의된 역량 + 빈약/경계/양호/탁월 기준에 매핑한다.
8
+
9
+ ### 0.1 핵심 규율 — 이 작업 최악의 실패는 '발명'이다 (이하 모든 절의 단일 원본)
10
+ > **유창하게 들리려고 없는 행동·수치·상황·이유를 채우는 것이 이 작업 최악의 실패다. 매끄러운 거짓 답변보다, 빈칸이 보이는 정직한 골격이 낫다.**
11
+
12
+ 면접 답변은 '유창한 완성 서사'가 아니라 **저장 사실로 만든 골격 + 빈칸**이다. 측정된 잔여 결함은 전부 발명이었다 — 모델이 매끄러운 가짜 1인칭 답을 쓰고 면피 주석(심지어 '100% 앵커' 거짓 도장)만 단다. 그래서 답변을 *쓰는 방식 자체*를 아래 규칙 + §0.1.1 3블록 골격 템플릿(§0.1.2 GOOD/BAD 대조)에 묶는다. **이 절이 발명차단의 단일 원본이다 — 이후 절(§0.2·§1·§2·§3.2·§4)은 같은 규율을 재설명하지 말고 "§0.1 형식대로" / "§0.1.2 GOOD처럼"으로 참조만 한다.**
13
+
14
+ - **(앵커) 모든 1인칭 과거 진술('제가 ~했습니다')은 저장 데이터의 특정 사실에 매핑되어야 한다. 매핑할 사실이 없으면 그 문장을 쓰지 마라** — 그럴듯하게 다듬어 채우지 말고 슬롯으로 비운다. 통계·예측타당도·측정 환경·내부 지표·상황 묘사(온콜·성수기 현장)·실패 일화는 **출처에 없으면 발명 절대 금지**(README §0 사실 3분류).
15
+ - **(슬롯) 모르는/미앵커 디테일은 본문에 명시 슬롯으로 남긴다**(유창한 산문으로 지어내지 마라):
16
+ - `[확인 필요: …]` — 저장 데이터에 있을 법하나 지금 맥락엔 없는 값(예: `[확인 필요: 그 프로젝트의 실제 응답시간 개선 수치]`).
17
+ - `[저장 데이터에 없음 — 면접 전 본인 경험으로 채우기: …]` — 후보 본인만 아는 사실(예: 구체 실패 일화·당시 팀 규모·반대 의견).
18
+ - **(도메인 원칙은 꼬리, 척추 아님) '왜/어떻게/순서'(의사결정 근거)가 저장 데이터에 없으면** 후보의 실제 판단으로 단정하지 말고 둘 중 하나로 제시: (a) **'면접 전 확인' 질문**으로 분리, (b) **도메인 원칙**으로('일반적으로는 ~ 원칙으로 판단합니다'). 단 도메인 원칙은 *미앵커 칸을 정직하게 받는 fallback*이지 답의 본체가 아니다 — **답의 척추는 항상 ① 후보의 저장 사실 + ② 못 채우는 칸의 명시 슬롯이고, 원칙은 그 뒤 짧은 꼬리 한 문장**이다. 일반 원칙이 문단 절반을 넘거나 사실·슬롯보다 먼저 나오거나 "DB 먼저 캐시 나중"류 교과서 문장으로 답을 대체하면(발명이 아니어도) R1 미달. 원칙엔 "일반적으로는 ~" 표지를 달고, 가능하면 후보의 저장 사실(p99·일 1,000만 건 등)을 원칙의 *적용 대상*으로 끌어와 비제너릭하게 만든다. <!-- applied: R1 principle-is-tail-not-spine / 2026-06-20 -->
19
+ - **(질문 텍스트도 발명 금지) 발명 금지는 '답변'만이 아니라 네가 직접 *작성하는 질문 텍스트'(꼬리·역·예상질문)에도 똑같이 적용된다(측정된 C4 직격).** 측정에서 모델은 답을 슬롯으로 잘 비워 놓고도 *질문 문장 자체*에 저장에 없는 고유명사·기술명·수치를 끌어와 발명으로 채점됐다(예: "**읽기 복제본(Read Replica)**으로는?", "더 가벼운 큐(**SQS** 등)는?", "트래픽이 **10배**면?", "입사 후 **첫 3~6개월** 성공 기준은?"). **규칙:** 네가 쓰는 질문 문구는 (a) 저장 데이터의 고유명사·기술명·수치, (b) 대상 공고/JD 명시 항목, (c) 후보의 기술 스택 범위(예: 저장이 Java·Spring·MySQL·AWS면 그 안)만 쓴다. 특정 제품명(SQS·Read Replica·Redis)·임의 배수(10배)·임의 기간(3~6개월)을 *예시로라도* 박지 말고 **일반 범주어**로: "다른 읽기 부하 분산 방식이나 더 가벼운 비동기 처리 수단은?", "트래픽이 크게 늘면(배수는 면접관이 제시)", "입사 초기 기대되는 성공 기준은?". <!-- applied: R3 question-text-no-invention / 2026-06-20 -->
20
+ - **(자가검증 거짓 도장 금지) 본문에 미앵커 디테일을 채워 놓고 끝에 '100% 저장 데이터 앵커' 같은 자체 검증 도장을 찍는 것은 가장 나쁜 결합 실패다** — 검증 문구가 본문과 반대면 그 자체로 FAIL(§5 R10). 괄호 면피 주석으로 가짜 본문을 정당화하지 마라. 자체 검증은 본문을 줄이는 근거이지 정당화 알리바이가 아니다.
21
+
22
+ ### 0.1.1 답변 1개 = 3블록 골격 템플릿 (이 형식대로만 *구성*한다 — 다듬어 메우지 마라)
23
+ 기본 실패 모드는 '유창한 STAR 산문으로 직행'이다. 그래서 산문을 쓰기 **전에** 아래 3블록을 *먼저* 채운다. 블록 1이 비면 산문도 쓰지 않는다(회복 스크립트 §2 step1 또는 슬롯으로 간다). 산문은 블록 1·2를 사람 말로 옮긴 것일 뿐, 블록에 없는 사실을 새로 추가하지 않는다.
24
+
25
+ ```
26
+ [블록 1] 앵커 사실 (저장 데이터에서 그대로 인용 — 이 목록에 없는 1인칭 과거 사실은 본문에 쓸 수 없다)
27
+ - 예: p99 800ms→320ms / 일 1,000만 건 / 30분 내 복구 / Kafka 보류 / 팀 4명·리드 없음 / Java·Spring·MySQL·AWS
28
+ [블록 2] 이 사실로 만들 수 있는 골조 (S·T는 짧게, A=1인칭·본인 기여, R=블록1의 정량값만)
29
+ [블록 3] 슬롯 (블록1로 못 채우는 칸은 전부 여기 — 산문으로 메우지 말 것)
30
+ - [확인 필요: …] (저장에 있을 법하나 지금 맥락에 없는 값)
31
+ - [저장 데이터에 없음 — 면접 전 본인 경험으로 채우기: …] (후보만 아는 사실: 구체 원인·순서·반대의견·실패 일화)
32
+ ```
33
+
34
+ **불변 규칙:** 블록 3에 있어야 할 칸을 블록 2의 산문으로 끌어올리는 순간 발명이다. '느린 구간을 측정하고 병목을 좁혔다' 같은 *행동 서사*도, 그 행동이 블록 1에 없으면 블록 3 슬롯이다.
35
+
36
+ ### 0.1.2 같은 답변, GOOD(정직한 골격) vs BAD(유창한 가짜) — 한 줄씩 비교
37
+ 저장 사실이 「p99 800ms→320ms, 인덱스·쿼리 튜닝·캐시, 일 1,000만 건」**뿐**일 때(병목 원인·측정도구·기술 디테일은 저장에 없음):
38
+
39
+ - ❌ **BAD(발명):** "프로덕션 로그를 분석해 응답시간의 90% 이상이 DB 조회 대기에서 발생함을 식별했고, JPA의 N+1을 제거하고 Redis 캐시로 40% 더 개선해 타임아웃을 거의 0으로 만들었습니다." → '90%', 'DB 조회 대기', 'JPA N+1', 'Redis 40%', '타임아웃 0'은 전부 저장에 없는 발명. 매끄럽지만 꼬리질문 한 번에 무너진다.
40
+ - ⚠️ **ALSO-BAD(과압축 — 측정된 R3 결함):** "(행동) 인덱스·쿼리 튜닝과 캐시 도입을 적용했습니다." → 발명은 안 했지만 한 줄로 뭉개 본인 기여·실행 순서·판단·검증이 통째로 사라졌다. **'발명 금지'가 '한 줄 압축'을 뜻하는 게 아니다.** 면접관은 이 한 줄에 "그래서 *네가* 뭘 했나, 어떤 순서로, 왜, 어떻게 확인했나"를 곧장 묻는다 — 답이 비면 방어력 0.
41
+ - ✅ **GOOD(골격+슬롯 — Action을 단계로 펼치되 각 칸을 사실/슬롯/원칙으로 태깅):**
42
+ - "결제 API p99 응답시간을 800ms에서 320ms로 개선했고, 일 1,000만 건 규모에서 동작했습니다." ← 저장 사실(S·R)
43
+ - "조치는 ① 인덱스·쿼리 튜닝과 ② 캐시 도입, 둘이었습니다." ← 저장 사실(조치 *목록*)
44
+ - "[확인 필요: ①②를 *어떤 순서로* 적용했고 각각 효과를 무엇으로 측정했는지 — 측정 도구·병목 구간]"
45
+ - "[저장 데이터에 없음 — 면접 전 본인 경험으로 채우기: 이 개선에서 *내가 직접* 맡은 부분(쿼리 분석·캐시 설계 중 무엇)과 ①→② 순서를 택한 판단 근거]"
46
+ - "(검증) [확인 필요: 개선 효과를 어떻게 검증했는지 — 부하 테스트/운영 모니터링 등]"
47
+ - "일반적으로는 DB 레벨 최적화를 먼저 보고 효과를 측정한 뒤 애플리케이션 레벨로 넘어가는 순서로 판단합니다." ← 도메인 원칙(꼬리, '내가 그랬다'가 아님)
48
+ - ❌ **하지 말 것:** 위 슬롯들을 "로그 분석으로 병목을 찾아 인덱스를 먼저 잡고 캐시로 마무리해 검증까지 끝냈습니다"처럼 *유창한 산문으로 메우는 것* — 이게 ALSO-BAD를 BAD로 되돌리는 발명이다.
49
+
50
+ 핵심: **발명 없이 깊이를 내는 방법은 'Action을 단계로 분해해 각 칸을 사실/슬롯/원칙으로 태깅'하는 것이지, 한 줄로 줄이는 것이 아니다.** **빈칸이 보이는 골격 > 매끄러운 거짓, 그러나 단계로 펼친 골격 > 한 줄 골격.** GOOD은 슬롯이 보여 '덜 완성'처럼 보이지만 그게 설계다 — 후보가 그 칸만 채우면 진짜 자기 답이 된다. <!-- applied: R2 skeleton-template + good-bad-contrast + self-audit-guard / 2026-06-20 · R3 action-decompose-not-compress / 2026-06-20 -->
51
+
52
+ ### 0.2 2-트랙 구조 (질문/맥락으로 트랙을 먼저 판정)
53
+ §1에서 면접 단계·형식·질문 성격으로 트랙을 먼저 판정한 뒤 트랙별 답변 모드를 적용한다. 어느 트랙이든 답변·질문은 **§0.1 형식**(앵커 1인칭 + 미앵커는 슬롯)에 종속된다.
54
+
55
+ - **(A) 기술/실무 면접 트랙** = 직무·기술·문제해결·시스템디자인·코테·과제 방어. 답변은 저장된 실제 기술 경험에만 1인칭 과거로 앵커. 시스템설계·트러블슈팅 '가정' 질문(NCS 상황면접 '이런 장애가 나면?')은 접근법·원칙으로 답하고 수치·장애·행동 발명 금지(가짜 MTTD·재발 0건·내부 메트릭 금지).
56
+ - **(B) 인성·컬처핏 면접 트랙** = 지원동기·가치관·협업·갈등·실패·성장·피드백·인재상. 저장된 실제 경험에 STAR로 앵커. 경험질문(과거 '~했던 경험')=실제 사실로만, 상황질문(가정 '~라면')=접근법으로. 특히 실패/판단오류 질문은 없는 실패 일화를 지어내지 말고 §0.1 슬롯으로 비운다. <!-- applied: R1 structural-redesign track-split / 2026-06-20 -->
57
+
58
+ ### 0.3 운영 프레임 (보존)
59
+ - **구조화가 카리스마를 이긴다(Google):** 모든 예상질문을 정의된 역량 + 빈약/경계/양호/탁월 기준에 *내부적으로* 매핑한다(사용자 본문엔 노출 금지).
9
60
  - **역량-우선(질문-우선 아님):** 스토리뱅크 → 스토리×역량(×인재상) 매트릭스 → 거기서 질문 생성.
10
- - 외운 이론보다 **체험·구체+숫자.** 저장 데이터의 실제 증거를 강제하고 사실을 날조하지 않는다.
11
- - **한국 이중축:** 직무적합 + 조직적합(인재상) + 인성. 실무면접=직무경험, 임원면접=인성+회사이해+인재상.
61
+ - 외운 이론보다 **체험·구체+숫자.** 단 그 체험·숫자는 §0.1 형식으로 저장 데이터에 앵커된 것만.
62
+ - **한국 이중축:** 직무적합 + 조직적합(인재상) + 인성. 실무면접≈트랙(A), 임원면접≈트랙(B).
12
63
  - 면접 준비 저장은 **'서류 합격'(document_passed) 이상에서만 해금**(상태 게이팅 존중).
13
- - **답변 = 내 경험(앵커 필수) + 도메인 지식(개념/제안으로 분리).** '제가 했다'로 말할 수 있는 건 저장 데이터뿐이다. 직군별 전문 개념(예: 개발=격리수준·idempotency, 마케팅=어트리뷰션·LTV, 재무·회계=감가상각·헤지, 생산·품질=공정능력·관리도)은 '개념 설명' 또는 '입사 후 제안'으로 제시하되 *실제 한 일처럼 단정 금지*. **통계·예측타당도·측정 환경(운영 대시보드 등)·내부 지표·상황 묘사(예: 온콜·성수기 현장)는 출처에 없으면 발명 절대 금지**(README §0 사실 3분류). 미확인 항목은 답변 본문이 아니라 '면접 전 확인' 별도 섹션으로.
64
+ - **레드플래그:** 행동질문에 '저라면 ~하겠습니다(I would…)' 가상형으로 답하거나, 가상질문에 가짜 과거 사례를 지어내는 것 — 둘 다 즉시 신뢰도 하락 신호. <!-- applied: R1 structural-redesign / 2026-06-20 -->
14
65
 
15
- ## 1. 입력 수집
16
- `get_application_context` → profile·경력·대상 job·기존 면접 자료. 지원 상태 확인(document_passed↑인지). **역할군**(eng/PM/design/data/sales/기타)·**면접 단계**(실무/임원)·**형식**(인성/PT/토론/압박) 판정.
66
+ ## 1. 입력 수집 + 트랙 판정
67
+ `get_application_context` → profile·경력·대상 job·기존 면접 자료. 지원 상태 확인(document_passed↑인지). **역할군**(eng/PM/design/data/sales/기타)·**면접 단계**(실무/임원)·**형식**(인성/PT/토론/압박/컬처핏/과제·코테) 판정.
68
+ - **트랙 판정(먼저):** §0.2에 따라 각 예상질문을 (A)기술/실무 또는 (B)인성·컬처핏으로 분류. 단계 정보가 전혀 없으면 직무·기술·문제해결 질문은 (A), 가치관·동기·협업·인성 질문은 (B)로 기본 배치. 한 키트에 두 트랙이 섞이는 게 정상이며, 트랙별로 답변 모드(앵커 1인칭 vs 접근법)를 분기한다.
69
+ - **질문 성격 판정(트랙 안에서):** 같은 트랙 안에서도 **경험질문(과거 실제 행동)** vs **상황질문(가정 대처)**을 구분 — 경험질문=저장 앵커 1인칭 과거, 상황질문=도메인 원칙·접근법. 어느 트랙이든 미앵커 디테일은 §0.1 슬롯으로.
17
70
 
18
71
  ## 2. 분석·작성 절차
19
- 1. **스토리뱅크:** 갈등·실패·리더십/주도·모호함·무권한 영향·압박하 delivery 등 실제 경험 6~10개를 저장 데이터에서 인벤토리.
20
- 2. **역량/인재상 매핑:** 각 스토리를 JD 역량 + 회사 인재상에 태깅(매트릭스), flex 변주 준비.
21
- 3. **예상질문 생성:** P2 분류(직무지식/문제해결/리더십)별 + 한국 형식별. 각 질문에 **루브릭 라인(빈약/경계/양호/탁월)**.
22
- 4. **답변 골격:** STAR(S/T 짧게, **A 우세·1인칭·본인 기여 명시**, R 정량+교훈), 답변당 ~60~90초.
23
- 5. **꼬리질문 2~3개 + 준비 답변**(전문가 차별점: "왜 그 방법?/팀 vs 본인?/다시 한다면?/측정 결과?"). — "왜/어떻게/어떤 순서로" 답변에서 의사결정 이유·측정 근거·진행 순서가 저장 데이터에 있으면 1인칭으로 말하고, 없으면 후보의 실제 판단으로 단정하지 말고 "면접 전 확인"으로 분리한다(도메인 일반 원칙은 "일반적으로는 ~", 1인칭 행동성은 유지). <!-- applied: C4 interview-why / 2026-06-18 / reconfirm 4/4 (codex·opus·sonnet·haiku) -->
24
- 6. **난질문 사전 스크립트:** 실패/약점(*진짜* 약점+진행 중 완화책), 압박(차분 조목조목 Yes-But).
25
- 7. **역질문 3~5개**(구체·역할 현실적: 온보딩·담당 범위·성공 기준).
26
- 8. **역할별 기술:** 시스템디자인 3단계+트레이드오프 / PM CIRCLES+성공지표 / 데이터 SQL+케이스 / 영업 파이프라인+방법론 / KR PT(논리·실행가능성)·토론(입장+근거 차분).
27
-
28
- ## 3. 한국 특수
72
+ 1. **스토리뱅크:** 갈등·실패·리더십/주도·모호함·무권한 영향·압박하 delivery 등 실제 경험을 저장 데이터에서 폭넓게 인벤토리.
73
+ - **스토리 부재 시 '발명 금지 회복 스크립트'(맞는 사례가 없을 때):** 사례를 지어내지 말고 3단으로 — (1) **솔직 인정**('해당 정확한 경험은 없습니다' / 한국 인성·압박면접 맥락에선 '솔직히 그 부분은 경험이 부족합니다'), (2) **유사 실경험으로 redirect**('직접 그 상황은 아니지만 유사하게 제가 ~했던 사례가 있습니다' — 반드시 저장 데이터 앵커; 유사 사례조차 없으면 §0.1 슬롯), (3) **현재라면 어떻게 접근할지를 도메인 원칙으로**. 세 갈래 모두 '내가 한 일'(과거 사실)과 '내가 할 일/일반 원칙'을 분리한다. 부재 사례는 본문엔 `[저장 데이터에 없음 — 면접 전 본인 경험으로 채우기: …]` 슬롯으로, 동시에 '면접 전 확인' 메모로도 모은다. 거짓·과장 절대 금지 — 추가 질문에 일관성이 깨지면 진정성 의심으로 직결. <!-- applied: R7 P4-recovery no-fab-recovery-script / 2026-06-20 -->
74
+ 2. **역량/인재상 매핑:** 각 스토리를 JD 역량 + 회사 인재상에 태깅(매트릭스), 변주 준비.
75
+ 3. **예상질문 생성:** 직무지식/문제해결/리더십 등 분류별 + 한국 형식별. 각 질문에 빈약/경계/양호/탁월 기준 라인을 *내부적으로* 둔다.
76
+ - **두 갈래로 나눠 저장(§0.2 트랙과 동일):** 저장 시 각 질문의 `category`를 **`technical`**(=트랙 A: 직무·기술·문제해결·시스템디자인·코테 등 실무 1차) 또는 **`behavioral`**(=트랙 B: 인성·지원동기·컬처핏·인재상·임원 2차 — *자기소개서·프로필 기반*)로 지정(enum은 내부용, 사용자 본문 비노출 §4). 두 갈래 모두 생성해 한 번에 저장(대시보드가 기술/인성·컬처핏 탭으로 분리 표시). 단계 정보가 없으면 직무·기술 질문은 `technical`, 가치관·동기·협업·인성 질문은 `behavioral`로 기본 배치. <!-- applied: interview two-track tabs / 2026-06-20 -->
77
+ 4. **답변 골격 = 저장 사실 + 슬롯 (§0.1.1 형식대로):** §0.1.1의 3블록 템플릿대로 답변을 *구성*한다(블록1→2→3을 먼저 채우고, 산문은 블록1·2를 사람 말로 옮긴 것). 트랙별로:
78
+ - **(i) 앵커 추출 먼저(블록1):** 이 질문에 매핑할 저장 사실을 먼저 골라낸다. 하나도 없으면 회복 스크립트(step1)로 가거나 슬롯만 남긴다 — 새로 짓지 않는다.
79
+ - **(ii) 트랙별 골조(블록2):** 트랙(A)=실제 기술 경험에 1인칭 과거 앵커(가정질문이면 접근법). 트랙(B)=STAR(S/T 짧게, **A 우세·1인칭·본인 기여 명시**, R는 *저장된* 정량+교훈; 가정질문이면 접근법). 두 트랙 모두 출처 없는 인과·기간·후속 성과·내부 지표는 골조에 넣지 않는다.
80
+ - **(iii) 슬롯으로 비우기(블록3):** 저장으로 못 채우는 칸(구체 수치·왜/순서·실패 일화·당시 맥락)은 §0.1 슬롯을 **본문 안에** 그대로 남긴다.
81
+ - **(iv) Action은 한 줄로 과압축하지 말고 *단계로 분해*하라(STAR_INCOMPLETE + R3 과압축 직격):** 저장이 「인덱스·쿼리 튜닝·캐시·p99」처럼 *조치 나열*만 줄 때 한 줄로 뭉치면 본인 기여·순서·검증이 사라져 R3 미달, 산문으로 부풀리면 발명이다. **정답은 §0.1.2 GOOD처럼 Action을 단계로 분해해 각 칸을 사실/슬롯/원칙으로 태깅**하는 것 — 저장된 조치는 사실로 쓰되, 면접관이 듣고 싶은 ① 본인 기여 ② 실행 순서 ③ 의사결정(왜 그 조치?) ④ 검증 ⑤ 교훈은 저장에 없으면 각각 블록3 슬롯 또는 도메인 원칙으로 *명시적으로 펼쳐* 둔다. 깊이는 분해+태깅에서 나오지 산문에서 나오지 않는다.
82
+ - *길이·분량 비율은 내부 작성용 soft 가이드일 뿐 사용자 답변 스크립트에 숫자로 적지 않는다(§2.9).* <!-- applied: R3 action-decompose-not-compress / 2026-06-20 -->
83
+ 5. **꼬리질문 + 준비 답변(결정 방어 평가축):** 면접관은 이야기보다 **'결정을 어떻게 방어하는가'**를 듣고 '왜 그 옵션을 택했나·트레이드오프/리스크·조건이 바뀌면'을 probe한다. 흔한 실패는 '상황 X → 그래서 Y로 결정'으로 곧장 점프하는 것 — 원하는 건 그 사이 **사고 과정**이다. 사례마다 **back-pocket 디테일**(쓴 데이터·이견·다르게 했을 점·검증 루프)을 채우되, **저장 데이터에 있는 것만 사실로, 없는 것은 §0.1 슬롯으로**(의사결정 이유·선택지·순서·수치도 저장에 있으면 1인칭 사실, 없으면 슬롯/'면접 전 확인'/도메인 원칙).
84
+ - **꼬리질문 밀도 = 핵심 사례마다 2~3개(FOLLOWUP_DEPTH_WEAK 직격 — *모든* 핵심 질문에 일관 적용):** 1개에 그치지 마라. **그 키트의 핵심/대표 사례**(성능 개선·장애 대응·기술 도입 보류 등)와 **적합성·주도성 질문**('왜 우리 직무와 맞나'·'리드 경험 없는데 주도했다고 할 수 있나')에는 2~3개를 *예외 없이* 단다 — 한 핵심 질문이라도 꼬리 1개면 R4 미달. 같은 각도 반복이 아니라 **압박 4축**을 골고루: ① 근거 압박('데이터/근거는?') ② 대안 압박('다른 옵션·부분 도입은?') ③ 리스크/조건변화 압박('규모가 크게 늘면 그때도 같은 결정인가 — 배수는 면접관이 제시') ④ 반대의견 압박('팀 반대는? 어떻게 설득?'). 꼬리질문 *문구*에도 **§0.1의 질문-텍스트 발명 금지** 적용(저장·공고·스택 밖 제품명·임의 수치 금지, 일반 범주어로). 각 꼬리질문의 *답*도 §0.1.1 형식에 묶인다 — 근거·반대자·설득이 저장에 없으면 슬롯/도메인 원칙이지 새 사실을 지어내 방어하지 않는다. <!-- applied: C4 interview-why / 2026-06-18 / reconfirm 4/4 (codex·opus·sonnet·haiku) · R1 principle-is-tail / 2026-06-20 -->
85
+ 6. **난질문 사전 스크립트:** 실패/약점(*진짜* 약점+진행 중 완화책), 압박(차분 조목조목 Yes-But). 실패 일화·약점은 §0.1대로 저장 앵커 아니면 슬롯('실패한 경험'은 거의 항상 트랙 B 경험질문).
86
+ - **빈 슬롯만 두지 말고 '정직한 대체 스크립트'를 함께 줘라(치명 R5_FAIL 직격 — 압박면접 대비물의 핵심):** 슬롯 하나만 덩그러니 남기면 미달이다. 채울 사실이 없을 때 후보가 *그 자리에서 실제로 말할 수 있는* 골조를 함께 제시한다.
87
+ - **⚠️ 결정적 가드 — '인정+책임' 한 줄에 *미앵커 자기책임/실패 원인을 지어내지 마라*(측정된 R5_FAIL 직격):** "문제를 더 일찍 잡지 못한 구간이 분명히 있었습니다"처럼 *저장에 없는 자기책임·실패 원인*을 인정+성장 구조로 위장해 채우면 '정직한 실패'가 아니라 **실패의 발명**이다. **인정 한 줄이 사실로 단정할 수 있는 것은 단 하나, '그 질문에 딱 맞는 실패 사례를 지금 정리해 두지 못했다'는 *메타 사실*뿐이다.** '~를 더 일찍 못 잡았다 / ~가 아쉬웠다 / ~를 놓쳤다' 같은 *구체 잘못의 내용*을 붙이는 순간, 그건 저장 사실이거나(그러면 그게 곧 실패 사례) 발명이다(그러면 R5_FAIL).
88
+ - ① **인정 한 줄 = 메타 사실만**: "솔직히, 이 질문에 정확히 들어맞는 실패 사례를 지금 정리해 두지는 못했습니다."(여기서 멈춘다.) — 이어서 ②나 ③으로 *말할 거리*를 준다.
89
+ - ② **인접 앵커 채굴(있을 때만, '실패'로 둔갑 금지):** *저장된* '개선 전 초기 상태의 한계'를 단서로 — "다만 [저장 사실: 폐기율 8%였던 초기]처럼 출발점이 좋지 않았던 경험은 있고, 그걸 [저장 사실: 5%]로 바꾼 과정이 제 학습 사례에 가깝습니다." ← *저장된 수치·상태*에만 앵커. 인접 앵커조차 없으면 ②는 생략(없는 한계를 지어내지 마라).
90
+ - ③ **배운 것→이후 변화는 도메인 원칙으로**: "그 이후로는 일반적으로 ~ 순서로 먼저 점검합니다."(인과가 저장에 없으면 1인칭 단정 대신 원칙으로.)
91
+ - ④ **채움 슬롯 1개 동반**: `[저장 데이터에 없음 — 면접 전 본인 경험으로 채우기: 구체 실패 사례 1개(상황·내 판단 오류·결과·배운 것)]`.
92
+ - 이 구성이면 슬롯을 못 채운 채로도 압박 질문에 무너지지 않고 *정직하게* 받는다 — 침묵도, **실패의 발명**도 아니다. <!-- applied: R5 honest-failure no-fabricated-self-blame / 2026-06-20 -->
93
+ 7. **역질문(마지막 질문) — 좋은 예 / 안티패턴:** 구체·역할 현실적 질문 준비(온보딩·담당 범위·성공 기준). 실전 분기는 §3.3.
94
+ 8. **역할별 기술 (트랙 A):** 시스템디자인 3단계+트레이드오프 / PM CIRCLES+성공지표 / 데이터 SQL+케이스 / 영업 파이프라인+방법론 / KR PT(논리·실행가능성)·토론(입장+근거 차분). 한국 사기업 일반직군·과제전형·코딩테스트는 §2.10·§2.11.
95
+ - **트랙(A) 안의 '실경험 vs 일반 원칙' 답변 단위 분리(§0.2 적용):** (a) '제가 실제로 한 진단·조치·결과'는 저장 앵커 1인칭 과거(없는 디테일은 §0.1 슬롯), (b) '일반 개념·베스트프랙티스·만약 ~라면'은 '일반적으로는 ~' / '입사 후 ~을 제안하겠습니다'로 분리. 한국 NCS 상황면접('이런 장애가 나면?')은 (b) 모드 — 가짜 과거 장애·가짜 메트릭(MTTD·재발 0건) 발명 금지, 접근 순서·트레이드오프만. 시스템디자인·코딩의 추론·복잡도·추정 수치도 '내가 과거에 쟀다'가 아니라 '현장에서 추정하는 방법'으로, 후속 'why/10x로 늘면?' probe엔 병목 이동을 원칙으로 답하되 내부 수치를 지어내지 않는다. <!-- applied: R7 P1-tech fact-vs-principle-split / 2026-06-20 -->
96
+ - **개념 나열 말고 '결정 프레임'으로(TECH_FRAMEWORK_TOO_GENERIC 직격):** 시스템설계·결제 코어 가정질문(멱등성·정합성·순서보장·재처리)에서 '멱등성이 중요합니다'처럼 개념을 나열하면 미달이다. 면접관이 듣고 싶은 건 *어떤 선택을 어떤 기준으로 하는가* — 각 개념을 **선택지 + 판단 기준 + 트레이드오프 한 쌍**으로 제시한다(도메인 원칙, '내가 했다'가 아님):
97
+ - **멱등성:** "재시도·중복이 불가피하므로 멱등키(주문/요청 단위 unique key)로 중복 실행을 막는 걸 기본으로 봅니다. *기준* = 외부 재시도 가능한 쓰기 경로인가, 부작용이 금전적인가."
98
+ - **정합성 vs 가용성:** "결제 확정·잔액 차감처럼 돈이 틀리면 안 되는 경로는 강한 정합성(동기·트랜잭션), 조회·집계는 결과적 정합성. *기준* = 데이터가 틀렸을 때 비용 > 지연 비용인가."
99
+ - **순서보장:** "전 이벤트가 아니라 *순서가 정말 필요한 핵심 이벤트만* 보장하고 나머지는 완화. *기준* = 순서 위반이 만드는 오류·그 빈도."
100
+ - **실패/재처리:** "분산 쓰기는 보상 트랜잭션·재처리 큐로 최종 일관성. *기준* = 부분 실패 시 사용자에게 보이는 상태를 어떻게 수렴시킬까."
101
+ - 이 프레임은 **원칙**이다 — 1인칭 사실로 바꾸지 마라(저장에 있으면 그 부분만 사실). 후속 'why this not that?' probe엔 위 *기준* 줄로 방어한다. <!-- applied: R2 tech-decision-frame payment-core / 2026-06-20 -->
102
+
103
+ ### 2.9 절차 수치는 내부 휴리스틱이다 (사용자 대면 비노출)
104
+ 다음은 **내부 작성용 soft 가이드**일 뿐 합격 게이트도, 사용자에게 보여줄 값도 아니다 — 키트 본문·답변 스크립트에 노출하지 마라.
105
+ - 스토리 개수(약 8~12개 인벤토리), 답변 길이(약 45~90초/답변), STAR 분량 비율(예: 50/25/15/10)은 대학 커리어센터 코칭 휴리스틱이지 1차 채점 연구가 아니다.
106
+ - 길이 비율 대신 **구체 결정 동사 개수·결정 방어 가능성**이 진짜 품질 신호다.
107
+ - 스토리 개수는 데이터가 허용하는 만큼만, 목표 숫자를 채우려 발명하지 않는다. MIT CAPD도 '여러 테마에 변주 가능한 3~5개 핵심 스토리'를 권하며 고정 비율을 강제하지 않는다. <!-- applied: R7 P4-proc-numbers internal-heuristics / 2026-06-20 -->
108
+
109
+ ### 2.10 1분 자기소개 (면접 첫 60초 설계)
110
+ 한국 사기업 면접의 사실상 표준 오프닝. 검증된 3단 구조로 설계한다.
111
+ - (1) **현재** = 직무 + 핵심 키워드(가장 짧게, 도입) → (2) **경험** = 활동 + 구체 성과/수치(가장 큰 비중, 하중 구간) → (3) **연결** = 지원동기 + 기여방안, 회사 이해를 자연스럽게(마무리). 최적 길이는 짧게(대략 45초~1분). *(시간 배분은 내부 가이드로만, 본문에 숫자 비노출 §2.9.)*
112
+ - 면접관이 듣고 싶은 5가지: ① 강점 정리·전달 능력(이력서와 일관) ② 직무 역량의 구체 표현 ③ 성과 수치화 ④ 기업 이해도(자연스러운 연결) ⑤ 시간 내 핵심 추리기.
113
+ - 금지 표현: 추상 형용사('열정적·책임감 있는'), 비유('스펀지/형광등 같은'), 부정어 시작, 직무무관 신상 나열, 과한 회사 찬사.
114
+ - 신입은 컬처핏+커뮤니케이션 신호, 경력은 직무경험+재현가능성을 1분에 압축.
115
+ - **발명 금지:** 수치·성과는 저장 데이터에 있는 것만 1인칭으로, 없으면 §0.1 형식대로 `[확인 필요: …]` 슬롯 + '면접 전 확인'으로 분리. <!-- applied: R7 pass2 one-minute-intro / 2026-06-20 -->
116
+
117
+ ### 2.11 과제전형·코딩테스트 (채용 단계 형식)
118
+ 한국 사기업(특히 IT·스타트업)에서 흔한 전형. 형식별 준비 키트를 분기한다.
119
+ - **과제전형:** 흐름은 '서류→과제→1차→2차' 또는 '1차(과제 논의)→2차'. 보통 수일 걸리는 실무형 과제(서비스 분석·기획안·디자인·데이터 분석)를 문서/슬라이드로 제출 후 면접에서 발표·방어. 키트 = (a) 산출물의 핵심 의사결정·트레이드오프를 발표용으로 압축, (b) 예상 추궁('왜 이 방법?'·'다른 대안?'·'데이터 근거?')에 답변 골격, (c) 직무 역량이 산출물 어디에서 드러나는지 명시.
120
+ - **코딩테스트:** 온라인 코테(면접관 없이 긴 시간, 복잡한 알고리즘)와 라이브코딩(영상통화 단시간)으로 구분. 라이브 평가 = 시간/공간 복잡도(빅오), 풀이 속도/완성도, 코드 가독성, 그리고 **커뮤니케이션** — 코드 작성 전에 접근을 면접관과 상의하고 피드백받는 협업적 진행이 시그널. 키트는 접근 내레이션 스크립트(명확화→접근+복잡도→코딩 중 설명→엣지/테스트). <!-- applied: R7 pass2 assignment-coding-test / 2026-06-20 -->
121
+
122
+ ### 2.12 직군별 빈출 질문 세트 (한국 사기업 일반직군)
123
+ 역할군 분기에 한국 사기업 일반직군의 빈출 질문·평가 포인트를 추가한다. **이 질문들은 '예상 질문 풀'일 뿐 — 답변은 §0.1 형식(앵커 1인칭 + 미앵커는 슬롯)으로 만들고, 도메인 개념은 '개념 설명/입사 후 제안'으로 분리. 풀을 채우려고 사례를 발명하지 마라.**
124
+ - **경영기획:** '당사 강점·약점?'·'미래 핵심 트렌드 3가지와 이유?'(전략적 사고·산업분석·경영감각).
125
+ - **인사:** '인사 직무 핵심 역량?'·'채용 프로세스 개선방안?'(인재관리 철학·조직문화 이해).
126
+ - **회계/재무:** '세무회계와 재무회계 차이?'·'당사 재무 보완점?'(회계지식·세무이해).
127
+ - **홍보:** '홍보와 마케팅 차이?'·'부정 기사 대응?'(미디어 이해·위기소통).
128
+ - **구매:** '협상 대표 경험?'(원가의식·협상·SCM 이해).
129
+ - **생산/품질:** '품질관리와 품질경영 차이?'·'불량 개선방안?'(문제해결·프로세스).
130
+ - **R&D:** '팀 프로젝트 본인 역할?'·'창의적 문제해결 경험?'(전공활용·협업).
131
+ - **마케팅:** '좋아하는 브랜드/서비스는? + 왜?'·'성공/실패 캠페인 사례'·'제한 예산 마케팅'·'브랜딩 vs 퍼포먼스 균형'·'경쟁사 분석법'(시장감각·창의성·고객이해).
132
+ - **영업:** '목표 초과달성 경험'·'영업관리 개념'(실적지향·고객만족·대인).
133
+ - 공통 평가축 = 기업이해도·직무적합성·성장잠재력·윤리의식. <!-- applied: R7 pass2 role-specific-question-bank / 2026-06-20 -->
134
+
135
+ ## 3. 한국 특수 (ko 로케일·한국 면접일 때만 — 인재상·압박면접·컬처핏·잡플래닛/Blind는 비한국 면접에 적용하지 않는다)
29
136
  실무 vs 임원 단계별 가중 조정. 인재상은 *본인 언어*로 패러프레이즈 + 개인 가치 연결(암기 금지). 압박면접 빈출(좋아하는 일 vs 잘하는 일·공백기·부당 지시·안 맞으면·중복 업무) 사전 대비. 커뮤니티 기출(잡플래닛/Blind)은 방향성 참고만(검증).
30
137
 
138
+ ### 3.1 실무면접 vs 임원면접 실제 흐름
139
+ 일반적 사기업 흐름: 서류 → 1차 실무면접 → 2차 임원(최종)면접.
140
+ - **1차 실무면접:** 면접관 = 실무진(현업 팀장/선임). 평가 = 이력서·포트폴리오 기반 허위이력 여부, 기술/직무 이해도, 성장가능성. 빈출 = 제품·사업·직무 노력·전문성, 프로젝트의 문제상황·해결과정·수치 결과(특히 개발은 본인 GitHub/블로그/포트폴리오를 면접관이 직접 짚어 질문 → 모르면 신뢰 상실).
141
+ - **2차 임원면접:** 면접관 = 임원+인사. 1차에서 실무를 봤으므로 자소서·인적사항·인성 중심. 초점이 '말 잘하는 사람'이 아니라 '신뢰를 줄 수 있는 사람'으로 전환 — 사람됨됨이, 태도·논리, 차분한 사고 전개, 회사 가치와 개인 목표의 연결. 임원 빈출 Best: ① 'OO기업에 관해 아는 것?' ② '우리 회사를 선택한 이유?' ③ 자기평가('1년/30대에 자기평가') ④ '입사 후 어떤 일을 하고 싶나'.
142
+ - 키트는 단계별로 가중치를 바꿔 생성(1차 = 직무 디테일·기술추궁, 2차 = 인재상·회사이해·인성 일관성). <!-- applied: R7 pass2 working-vs-exec-interview-flow / 2026-06-20 -->
143
+
144
+ ### 3.2 컬처핏(culture fit) 면접 (스타트업·IT 사기업)
145
+ 정의 = 직무역량을 넘어 조직 문화·가치관·일하는 방식의 부합도 평가('함께 일할 동료' 검증).
146
+ - 빈출 행동질문: ① '가장 어려웠던 협업 경험?' ② '의견 충돌 시 대처?' ③ '가장 큰 실패와 배운 것?' ④ '받은 피드백 중 기억에 남는 것과 개선 방법?'.
147
+ - 평가 포인트 = 회사 관심·애정, 소통/유연성(경청·조율·공동목표), 성장 의지, 건설적 갈등해결, 피드백 수용, 장기 기여 의지.
148
+ - 키트는 인재상(대기업식 인성·암기형) 트랙과 컬처핏(스타트업식 협업·행동 증거) 트랙을 구분 — 컬처핏은 '본인 언어로 가치관' + 협업·갈등·피드백 행동 스토리(저장 앵커)를 매핑.
149
+ - **트랙(B)는 '결손 목록'이 아니라 '사용 가능한 정직한 킷'이어야 한다(BEHAVIOR_TRACK_GAPS 직격):** 인성·컬처핏 질문(협업·갈등·실패·피드백·지원동기)의 답이 전부 빈 슬롯이면 준비 킷이 아니라 '못 채운 칸 목록'이다 — 발명은 여전히 §0.1대로 금지하되, 빈칸을 줄이는 두 단계를 *먼저* 거친다:
150
+ 1. **인접 앵커 우선 채굴:** 정확히 맞는 일화가 없어도 저장된 *모든* 다인(多人) 활동·개선 경험에서 끌어온다 — 협업/갈등은 '여러 사람이 함께 움직인 프로젝트'(팀·학회·동아리·아르바이트)에서, 실패/아쉬움은 '개선 전 초기 상태의 한계'(폐기율 8%였던 초기 등)에서, 피드백은 '조치를 바꾼 계기'에서 1인칭 사실로 앵커. 정확한 일화만 고집하다 전부 슬롯으로 비우지 마라 — 인접 실경험이 있으면 우선이다.
151
+ 2. **그래도 비면, 빈 슬롯이 아니라 '사용 가능한 골조 3종'으로:** ① **정직한 인정 한 줄**('정확히 그 갈등/실패 경험은 저장된 자료에 없습니다' — 경험질문일 때) ② **도메인 원칙 접근**('상황이 생긴다면 목표 합의 → 근거 비교 → 작은 검증 순서로' — 상황질문 모드) ③ **채움 슬롯 1개**(`[저장 데이터에 없음 — 면접 전 본인 경험으로 채우기: 협업/갈등 일화 1개(상황·내 행동·결과)]`). N개 빈칸 나열(X) vs 인정+원칙+채움슬롯(O).
152
+ - **지원동기도 같다:** 회사 고유 사실(제품·뉴스·경쟁사)이 저장에 없으면 '평판·시스템·비전'을 단정해 지어내지 말고(환각), 공고에 명시된 사실 + '면접 전 회사 리서치로 채울 지원동기 1문장' 슬롯으로. <!-- applied: R2 behavior-track usable-kit-not-deficit-list / 2026-06-20 · R7 pass2 culture-fit / 2026-06-20 -->
153
+
154
+ ### 3.3 역질문 실전 (좋은 예 / 피해야 할 질문)
155
+ - **좋은 역질문(관심·적극성·직무이해 신호):** '이 직무를 통해 회사의 어떤 목표 달성에 기여할 수 있을까요?', '이 팀에서 필요로 하는 핵심 역량은?', '제 역량이 조직에서 어떻게 발휘될지', '입사 초기에 제게 기대되는 성공 기준이나 온보딩은?', 업무 관련 회사 최신 이슈의 방향성. **(역질문 *문구*에도 §0.1 질문-텍스트 발명 금지 — '첫 3~6개월'처럼 임의 기간이나 회사 고유 사실을 박지 말고 '입사 초기'처럼 일반 표현으로 묻는다.)**
156
+ - **피해야 할 역질문(레드플래그):** 복리후생/연차/야근만 묻기(처우는 합격 후 조율), 체계를 의심하는 질문('이 업무가 정말 필요한가요?'), 즉답 피드백/합격여부 요구('제가 적합한가요?'), 사전준비 부족 신호('뭐 하는 회사예요?').
157
+ - 키트는 좋은 역질문 몇 개 + '피할 질문' 경고 라인을 함께 출력한다. <!-- applied: R7 pass2 reverse-question-anti-patterns / 2026-06-20 -->
158
+
159
+ ### 3.4 압박면접 빈출 질문 (실제 문구·평가의도)
160
+ 현 빈출 목록에 더해 실제 문구·평가의도와 함께 보강한다. 각 질문은 '평가 의도 + 차분 대응 골격' 1쌍으로. **공통 발명 가드(§0.1):** 압박 답변에 회사 평판·내부 시스템·타사 비교 같은 *미저장 사실*을 끌어와 방어하지 마라 — 공고 사실 + 저장 경험 + 도메인 원칙으로만 차분히.
161
+ - ① '다른 회사에도 지원했나요? 합격하면 어떻게?'(지원 우선순위·진정성). **발명 차단:** 타사 지원 여부·1순위 여부는 *후보 본인만 아는 개인 상태*다 — 저장에 없으면 '지원했습니다, 여기가 1순위입니다'라고 단정하지 마라(측정된 R5 발명). 단정 대신 **채움형**: 「(타사 지원은 솔직히) + [면접 전 본인 결정으로 채우기: 우선순위와 근거] + 직무·관심사가 공고와 맞는다는 *공고 앵커* 한 줄」.
162
+ - ② '지원자 역량은 우리 회사에 필요 없을 것 같은데요?'(자신감·방어적 태도 — 감정 없이 강점-직무 연결을 논리적으로). 강점은 저장 앵커만, 우려 인정 한 박자 후 연결.
163
+ - ③ '이전 실패 경험과 배운 것?'(자기반성·책임·학습). 실패 일화는 step6대로 저장 앵커 아니면 슬롯 — 압박 맥락이라고 그럴듯한 실패담을 지어내지 마라.
164
+ - ④ '그건 틀린 생각 아닌가요?'(근거 없이 물러서는지·비판 수용 — 방어 회피, 근거+상대 존중).
165
+ - ⑤ '상사가 부당한 지시를 내린다면?'(윤리·판단 — 상황질문이므로 접근법 모드: 사실확인→대응→조직절차, 가짜 과거 사례 X).
166
+ - 공통 화법 = 평정심, 'Yes...But' 조목조목, 감정반응·말 끊기 금지. <!-- applied: R7 pass2 stress-interview-questions / 2026-06-20 · R2 R5-personal-status-fillin / 2026-06-20 -->
167
+
31
168
  ## 4. 출력 계약 (사용자 대면)
32
- - **면접 준비 킷:** 예상질문 + 모범 답변 골격 + 질문별 루브릭 라인 + 꼬리질문/준비답변
169
+ 출력 언어 = 사용자의 대화 언어. §3(한국 특수)은 한국 면접일 때만 적용.
170
+
171
+ **제출용 산출물 = 정직한 골격(+슬롯)이다(§0.1).** 매끄럽게 완성된 가짜 답변이 아니라, 저장 사실로 만든 골격에 미앵커 칸이 `[확인 필요: …]` / `[저장 데이터에 없음 — 면접 전 본인 경험으로 채우기: …]`로 **보이는 채** 제출된다. 이 슬롯은 결함이 아니라 설계다.
172
+
173
+ **① 제출 블록(면접 준비 킷 본문) — 먼저 출력:**
174
+ - **면접 준비 킷:** 예상질문 + 답변 골격(저장 사실 앵커 + 슬롯) + 꼬리질문/준비답변. 트랙(A)기술/실무 와 (B)인성·컬처핏을 구분해 묶는다.
33
175
  - **스토리×역량 매트릭스** · **역질문 목록** · **난질문 대비**(실패·약점·압박)
176
+ - (해당 시) 1분 자기소개 골격 · 단계별(실무/임원) 대비 · 컬처핏/과제·코테 대비
177
+
178
+ **② 검토 메모 — 제출 블록 뒤 별도 섹션으로:**
34
179
  - 결론 / 근거(저장 경험 인용) / 리스크·한계 / 신뢰도 / 다음 단계
35
- 숨길 것: 내부 루브릭·도구명·EOP. 저장=`save_interview_prep`(document_passed↑).
180
+ - 발명 금지·미싱인포 질문 등 안전항목은 생략하지 않는다(저장에 없는 사실은 '면접 전 확인'으로 분리·집계).
181
+ - **신뢰도는 사실대로 적는다(§0.1 자가검증 거짓 도장 금지):** 본문에 미앵커 디테일이 남았는데 '100% 저장 데이터 앵커'라 적지 마라 — 슬롯·원칙·앵커 비중을 사실대로 적고, 어긋나면 본문을 고치거나 신뢰도를 낮춘다.
182
+
183
+ **⚠️ 첫 글자 가드 — 작업 해석 메타로 시작하지 마라(측정된 OUTPUT_CONTRACT 위반 직격):** 측정에서 산출물이 "요청을 검토했습니다. 이 과제는 … 발명 차단 형식으로 … 생성하는 작업입니다. 바로 작성하겠습니다."로 *시작*해 출력 계약을 위반했다. **제출 블록의 *맨 처음 출력*은 면접 준비 킷의 제목(예: "# OO페이 백엔드 엔지니어 — 면접 준비 킷")이어야 한다.** 그 앞에 작업 해석·자기 다짐·방법론 선언을 단 한 줄도 붙이지 마라. 슬롯이 결함이 아니라 설계라는 *사용자용 안내* 한 줄은 허용되지만, 제목 *뒤* 인용구로 두고 'EOP/발명 차단 형식/출력 계약' 같은 내부 어휘 없이 평이하게 쓴다.
184
+
185
+ **출력 가드(반드시 준수):** 산출물만 출력하라. 작성 과정·작업 해석 서두·루브릭·EOP 절번호·역량 enum·트랙 라벨(A/B)·도구명·파일경로·프레임워크·내부 분류 어휘·`## DONE`·절차 수치를 산출물 본문에 노출하지 마라(질문은 자연스러운 한국어 그룹 제목으로 묶고 'category=technical' 같은 표기 금지). 역량은 평이한 한국어로(예: 'INITIATIVE'→주도성). 슬롯 표기(`[확인 필요: …]`/`[… 면접 전 본인 경험으로 채우기: …]`)는 본문에 그대로 둔다(내부 어휘가 아니라 사용자용 안내). 검토 메모는 제출 블록 **뒤** 별도 섹션으로만. 저장은 적절한 저장 도구로(document_passed↑에서만 해금). <!-- applied: R7 P1-output-contract reorder+no-leak / 2026-06-20 · R3 first-line-no-task-meta / 2026-06-20 -->
186
+
187
+ ## 5. 자가검증 루브릭 (research §리뷰어 — **R1·R2·R5·R9·R10 중 FAIL이면 전체 FAIL**)
188
+ R1 증거기반·비제너릭(후보의 실제 스토리/숫자; **도메인 원칙이 답의 척추를 대체하지 않고 짧은 꼬리로만 쓰였는가 — "DB 먼저 캐시 나중"류 교과서 일반론으로 핵심 답을 메우면 미달**) / R2 역량·인재상 매핑(매트릭스) / R3 STAR 품질(A 우세·1인칭·R 정량+교훈; '조치 나열'에 그치지 않고 의사결정/순서/판단기준/교훈을 사실 또는 슬롯·원칙으로 갖췄는가; **Action을 한 줄로 과압축하지 않고 단계로 분해해 각 단계를 사실/슬롯/원칙으로 태깅했는가 — '인덱스·쿼리·캐시 적용했습니다' 한 줄은 미달**) / R4 꼬리질문 깊이(결정 방어·back-pocket 디테일 + **핵심/대표 사례·적합성·주도성 질문마다 2~3개 — 한 핵심 질문이라도 꼬리 1개면 미달**, 근거·대안·리스크·반대의견 4축을 골고루) / R5 난질문 처리(실패·약점=인정+성장, **실패 일화는 저장 앵커 아니면 슬롯**, **정직한 실패 스크립트의 '인정 한 줄'이 미앵커 자기책임/실패 원인을 지어내지 않았는가 — 인정 한 줄은 '사례를 정리 못 했다'는 메타 사실까지만, '~를 더 일찍 못 잡았다'식 미앵커 자기책임 0건**, 압박 사전스크립트, **타사 지원·1순위 등 개인 상태는 단정 말고 채움형**, 레드플래그 없음) / R6 역할별 기술 = **개념 나열이 아니라 '선택지+판단 기준+트레이드오프' 결정 프레임**(시스템설계·결제 코어 가정질문이 멱등성·정합성·순서보장을 *어떤 기준으로 택하는지*까지) / R7 역질문(좋은 예+피할 질문 경고) / R8 슬롭·환각 없음 / R9 **가상질문에 가짜 과거 미발명 + 사고 과정·의사결정 이유·내부 지표를 저장 데이터에 앵커**(미앵커는 슬롯/'면접 전 확인'/'일반 원칙'으로 분리) / R10 **발명차단 형식(§0.1) 준수**: ① 모든 1인칭 과거 진술이 저장 사실에 매핑되는가(매핑 안 되면 슬롯 — 산문 발명 0건) ② 미앵커 디테일이 산문이 아니라 명시 슬롯(`[확인 필요]`/`[저장 데이터에 없음…]`)으로 남았는가 ③ 트랙(A/B) 판정·분기가 맞는가(가정질문에 가짜 과거 0건) ④ **자가검증 거짓 도장 0건**(본문에 미앵커가 남았는데 '100% 앵커'라 적지 않았는가) ⑤ **트랙(B)가 결손 목록이 아니라 사용 가능한 킷인가**(빈 슬롯 나열 대신 인접 앵커 채굴 + 인정+원칙+채움슬롯) ⑥ **내가 작성한 질문 텍스트(꼬리·역·예상)에 저장·공고·후보 스택 밖의 고유명사·제품명·임의 수치(Read Replica·SQS·'10배'·'3~6개월')를 끌어오지 않았는가 — 답뿐 아니라 질문 문구의 발명도 FAIL** ⑦ **제출물이 작업 해석/방법론 선언 서두 없이 킷 제목으로 시작하는가**. 괄호 면피 주석으로 가짜 본문을 정당화했으면 FAIL.
189
+ **통과 = R1·R2·R5·R9·R10 PASS + 나머지 양호 + 모든 1인칭 과거 진술이 저장 데이터에 앵커(아니면 슬롯).** <!-- applied: R2 rubric R3-nonlist·R4-density·R5-personalstatus·R6-decisionframe·R10-selfaudit+behaviorkit / 2026-06-20 · R3 rubric R1-principle-tail·R3-action-decompose·R4-no-exception·R5-no-fab-selfblame·R10-question-text+first-line / 2026-06-20 -->
190
+
191
+ ## 6. 출처 / Provenance
192
+ > tier 등급: **[1차]** = 권위 출처(대학 커리어센터·HR 기관) · **[2차]** = 평판 매체/플랫폼 공식 콘텐츠 · **[참고]** = 일화(자기보고·미검증).
193
+
194
+ ### 6.1 권위 출처 (pass1)
195
+ - [1차] Northwestern University HR — Behavioral Based Interviewing (과거 실제 사례 요구·구체 사례 못 대면 레드플래그): https://hr.northwestern.edu/for-managers/hiring/hiring-process/interviewing-candidates/behavioral-based-interviewing.html
196
+ - [1차] MIT CAPD — Interviewing (mock interview, authenticity / subject-matter expert): https://capd.mit.edu/resources/interviewing/
197
+ - [1차] MIT CAPD — Interview Primer (STAR 4요소; 비율 강제 아님; prepare 3-5 adaptable stories): https://capd.mit.edu/resources/interview-primer/
198
+ - [1차] Yale Office of Career Strategy — The Behavioral Interview: https://ocs.yale.edu/channels/the-behavioral-interview/
199
+ - [1차] Northwestern Career Advancement — The STAR Approach (STAR 분량 비율은 코칭 휴리스틱): https://www.northwestern.edu/careers/jobs-internships/interviewing/the-star-approach.html
200
+ - [2차] Performance Reviews Software — behavioral vs situational / 'I would' vs 'I did' red flag: https://www.performancereviewssoftware.com/interview-red-flags/
201
+ - [2차] JobKorea — NCS 면접, STAR 구조를 기억하라(경험면접 과거 경험 STAR화): https://www.jobkorea.co.kr/goodjob/tip/view?News_No=13224
202
+ - [2차] SEN/NCS PLUS — NCS 면접 유형(경험·상황·PT·토론) 정의: https://www.sentv.co.kr/news/view/574815
203
+ - [2차] WayUp — Sample Responses for When You Don't Know the Answer (acknowledge→redirect→approach): https://www.wayup.com/guide/response-when-you-dont-know-the-answer-to-an-interview-question/
204
+ - [2차] JobKorea — 면접 시 모르는 질문을 받았을 때(솔직 인정 + 유사 경험 재정의): https://www.jobkorea.co.kr/goodjob/tip/view?News_No=16235&schCtgr=120002
205
+ - [2차] CaseBasix — Hidden Criteria Behind Behavioral Interview Questions (결정 방어·trade-off·adjustment probe): https://www.casebasix.com/pages/hidden-criteria-behavioral-interview-questions
206
+ - [2차] Elevatus — Decision-Making Interview Questions ('walk me through a key decision; what factors'): https://www.elevatus.io/template/decision-making-interview-questions/
207
+ - [2차] Staffing Advisors — Conducting Interviews That Predict Impact (situation→decision 점프 금지): https://www.staffingadvisors.com/blog/conducting-interviews-that-actually-predict-impact/
208
+ - [2차] Exponent — Amazon Behavioral Interview (3-5 follow-ups; back-pocket details): https://www.tryexponent.com/blog/how-to-nail-amazons-behavioral-interview-questions
209
+ - [2차] Exponent — System Design Interview Guide (추론·트레이드오프; 10x 시 병목 이동): https://www.tryexponent.com/blog/system-design-interview-guide
210
+ - [참고] Linkareer 커뮤니티 — 면접 모르는 질문 대처(일화·자기보고·미검증): https://community.linkareer.com/mentoring/5706260
36
211
 
37
- ## 5. 자가검증 루브릭 (research §리뷰어 — **R1·R2·R5 중 FAIL이면 전체 FAIL**)
38
- R1 증거기반·비제너릭(후보의 실제 스토리/숫자) / R2 역량·인재상 매핑(매트릭스) / R3 STAR 품질(A 우세·1인칭·R 정량+교훈) / R4 꼬리질문 깊이(질문당 2~3) / R5 난질문 처리(실패·약점=인정+성장, 압박 사전스크립트, 레드플래그 없음) / R6 역할별 기술 프레임+결정 강조 / R7 역질문 3~5 / R8 슬롭·환각 없음.
39
- **통과 = R1·R2·R5 PASS + 나머지 양호 + 모든 답변이 저장 데이터에 앵커.**
212
+ ### 6.2 한국 사기업 실전 (pass2)
213
+ - [2차] 잡코리아 — 1분 자기소개, 면접관은 뭘 듣고 싶을까요? 5가지 핵심: https://www.jobkorea.co.kr/goodjob/tip/view?News_No=15062
214
+ - [2차] 링커리어 커뮤니티 — 면접 1분 자기소개 구성 템플릿·합격 예시·분량: https://community.linkareer.com/employment_data/4406080
215
+ - [2차] 인크루트 — 임원면접 질문 Best10으로 준비하기: https://news.incruit.com/news/newsview.asp?newsno=435266
216
+ - [2차] 링커리어 커뮤니티 — 임원 면접 질문 유형별 정리·답변 포인트: https://community.linkareer.com/employment_data/4195156
217
+ - [2차] 리멤버 커뮤니티 — 2차(임원)면접과 1차면접의 차이: https://community.rememberapp.co.kr/post/64578
218
+ - [2차] 브런치 인사팀(insateam) — 지원 직무별 준비해야 할 필수 면접 질문 모음: https://brunch.co.kr/@insateam/190
219
+ - [2차] 링커리어 커뮤니티 — 마케팅 직무 면접 예상 질문 50개: https://community.linkareer.com/jayuu/2757939
220
+ - [2차] 원티드 — 개발자 면접 완전 정복 (1) 코딩 테스트 편: https://www.wanted.co.kr/events/22_11_s01_b15
221
+ - [2차] 원티드 블로그 — 그럼에도 컬처핏 면접이 꼭 필요한 이유: https://blog.wantedlab.com/hr/trend/culture-fit-interview
222
+ - [2차] flex 공식 블로그 — 컬처핏 면접: 어떻게 평가해야 적합한 인재를 만날까: https://flex.team/blog/2025/04/02/culture-fit-interview-prapare/
223
+ - [2차] 인크루트 — 면접 마지막 질문 좋은 예 vs 나쁜 예: https://news.incruit.com/news/newsview.asp?newsno=436499
224
+ - [2차] 링커리어 커뮤니티 — 면접 마지막 질문으로 임팩트 주는 법: https://community.linkareer.com/employment_data/4858253
225
+ - [2차] 하이잡 — 압박면접 질문 예시 5가지와 답변 전략·대처법: https://www.haijob.co.kr/blog/stress-interview-questions-answers-tips/
226
+ - [참고] Superookie — 채용 과제를 하는 마음(스타트업 채용 절차 후기, 일화·자기보고·미검증): https://www.superookie.com/contents/5f28f1f68b129f4017146d92
227
+ - [참고] Superookie — 탈압박 면접 비법과 주요 질문 대응법(일화·자기보고·미검증): https://www.superookie.com/contents/5e1beae88b129f585b497cb9
@@ -6,10 +6,11 @@
6
6
 
7
7
  ## 0. 전문가 프레임
8
8
  - **스크랩 말고 디코드.** 필수 vs 우대는 소프트 위계이며, 우대가 *팀이 진짜 원하는 것*을 더 드러내기도 한다.
9
- - **우선순위 = 위치 + 반복**(상단·교차 반복 = 입장료). 핵심 요건 70~80% 매치면 충분.
9
+ - **우선순위 = 위치 + 반복**(상단·교차 반복 = 입장료). 커버리지/충족 %는 맥락 신호일 뿐 합격 게이트가 아니다 — 권장 게이트는 하드요건(knockout) 충족이며, 정밀 적합 판정은 fit-matching에 위임한다('70~80% 매치면 충분' 같은 임계값으로 통과 단정 금지). <!-- applied: r7-job-analysis / R7 cross-vendor PASS job-s1=84 (FIXES.md P5 임계값 단일화) / 2026-06-20 -->
10
10
  - **시니어리티는 동사에 인코딩**(총괄·주도·owns vs 보조·지원·assists), 직함과 교차확인.
11
11
  - **행간 신호**(팀 단계·긴급도·스코프 모호·문화 톤)와 **레드플래그**(모호 동사만, "멀티플레이어", self-starter+무지원, 급여밴드/팀정보 없음, **열정페이**)를 *트리거 문구 인용*과 함께.
12
- - **증거(JD 인용)와 추론(라벨링)을 분리** — 추론을 사실로 제시하지 않는다.
12
+ - **증거(JD 인용)와 추론(라벨링)을 분리** — 추론을 사실로 제시하지 않는다. **부재(없는 것)도 분리**: (a) 텍스트로 직접 관찰되는 미기재·미공개(예: 급여 "면접 후 협의", 근무지 "추후 안내")는 관찰 사실로 기술, (b) **추론된 부재**(ATS 미사용·1인 전담·온보딩 없음 등)는 반드시 "추정 — 공고에 언급 없음" 라벨 + 관찰 근거 + 불확실성을 붙인다(부재-추론만 의무 라벨).
13
+ - **공고에 없는 고유명사 발명 금지.** 공고에 명시되지 않은 플랫폼·ATS·도구명을 예시로라도 단정하지 마라 — 생략하거나 일반 범주어("채용 플랫폼"·"지원서 관리 시스템")로만 칭한다. <!-- applied: r7-job-analysis / R7 cross-vendor PASS job-s1=84 (부재 분리 P3 동반) / 2026-06-20 -->
13
14
  - **확신도 분리:** 원문 인용=확정, 그 외는 '추정'이며 확신도를 낮춰 표현한다(예: "이메일 접수형"은 확정, "수시 채용"은 낮은 확신의 추론). **외부 분류 코드(NCS 번호 등)는 데이터로 확정될 때만** 쓰고 아니면 계열명만(코드 발명 금지). 산출물에 'EOP'·내부 기준명을 노출하지 않는다.
14
15
 
15
16
  ## 1. 입력 수집
@@ -25,10 +26,11 @@
25
26
  7. **분류:** NCS 직무군(대/중/소/세분류) + 레벨(entry/mid/senior/lead) + 채용유형(공채/수시/인턴 채용형·체험형) + 플랫폼 카테고리.
26
27
  8. **증거 vs 추론 분리.**
27
28
 
28
- ## 3. 한국 특수
29
+ ## 3. 한국 특수 (ko 로케일·한국 공고일 때만 — NCS 직무군·공채/수시·채용절차법 등은 비한국 공고에 적용하지 않는다)
29
30
  우대 = 가점이나 반복·강조·시니어 역할이면 *사실상 필수*로 격상. NCS 직무기술서 = 공공 표준 JD(능력단위). 공채(연 1~2회 배치) vs 수시(롤링·현재 지배적). **열정페이**(경험 포장 저임금)는 명시 플래그. 직무무관 정보(나이·사진·가족 등)를 요구하면 채용절차법 위반 가능으로 플래그.
30
31
 
31
32
  ## 4. 출력 계약 (사용자 대면)
33
+ 출력 언어 = 사용자의 대화 언어. §3(한국 특수)·NCS 분류는 한국 공고일 때만 적용(비한국 공고는 그 시장 기준).
32
34
  - **핵심 요약**(직무·레벨·채용유형 한눈에)
33
35
  - **필수 vs 우대 분리 표** + 우선순위
34
36
  - **시니어리티·팀 단계 추론**("추정"으로 명시, 증거 인용)
@@ -15,23 +15,24 @@
15
15
 
16
16
  ## 2. 추출 절차
17
17
  1. **원문 인덱싱**(verbatim span 근거 유지).
18
- 2. **스키마 추출**(JSON Resume: basics/work/education/skills/projects), 각 필드 = 원문 span.
18
+ 2. **스키마 추출**(JSON Resume: basics/work/education/skills/projects), 각 필드 = 원문 span. 표준에 없는 확장 필드(예: isCurrent·impact)를 더하면 '표준 JSON Resume 준수'로 단정하지 말고 'JSON Resume 기반(일부 필드 확장: 확장 필드 명시)'으로 정직히 표기한다.
19
19
  3. **volatile 필드만 정규화:** 날짜 → ISO 8601(현재 역할 endDate null), 조직명 접미("(주)"/"Inc.") 노이즈 제거; 직함은 통제 매핑 요청 없으면 원형 유지.
20
20
  4. **근무항목별 각 불릿을 responsibility | achievement 2분류로 태깅.** achievement는 원문에 **명시적 outcome**(완료된 결과·지표·전후 변화·수상/선정/달성)이 있을 때만(예: "처리 시간 2시간→20분 단축", "신규 거래처 전환 완료", "전사 평가 1위 선정"); 수치·결과 없이 수행/담당/참여/진행/개선만 서술된 불릿(예: "고객 응대 프로세스 개선 작업 진행")은 **responsibility**. 정량 임팩트는 명시될 때만 (metric, value, delta). <!-- applied: profile-duty / 2026-06-18 / reconfirm 4/4 (codex·opus·sonnet·haiku) -->
21
21
  5. **모호성 → 질문**(날짜 충돌/중복·직함 과장·공백기·숫자 단위·기준 미상·FT vs 프리랜스·숙련도 미제공): 옵션 제시, 사실로 자동 해소 금지.
22
22
  6. **스킬 택소노미:** dedupe + 그룹(level은 명시될 때만); NCS/플랫폼 통제 어휘에 매핑하되 **원 토큰 유지**.
23
23
  7. **충실도 노트:** 폐기/불확실 항목을 명시 나열.
24
24
 
25
- ## 3. 한국 특수
25
+ ## 3. 한국 특수 (ko 로케일·한국 문서일 때만)
26
26
  경력기술서(실행·성과)와 자소서(동기·배움)를 **분리** 추출. 정량 불가 역할은 *날조 대신* 역량 키워드. "면접에서 설명 가능한 수치만". 날짜/직함 변이(재직중·음/양력 혼재)는 ISO 정규화하되 원형 보존.
27
27
 
28
28
  ## 4. 출력 계약 (사용자 대면)
29
+ 출력 언어 = 사용자의 대화 언어(추출 span 원문 보존). §3(한국 특수)은 한국 문서일 때만 적용.
29
30
  - **구조화 결과**(스키마 형태, 사람이 읽기 쉬운 요약 동반)
30
31
  - **책임 vs 성과 태깅** · **모호성 질문 목록**(확인 필요)
31
32
  - **충실도 노트**(무엇을 폐기/확인했는지) · **신뢰도**
32
- - **발명 0 보장** 명시 — 사용자 확인 후 저장(`add_resume`/프로필 갱신).
33
+ - 발명 없이 추출했음은 **자기 도장이 아니라 충실도 노트(폐기/확인 항목)로** 보여준다 — '발명 0 보장' 같은 자기평가·보장 표현은 금지(검증은 사용자·평가자 몫). 사용자 확인 후 저장(`add_resume`/프로필 갱신).
33
34
  숨길 것: 내부 도구명·EOP.
34
35
 
35
36
  ## 5. 자가검증 루브릭 (research §B 루브릭)
36
- **PASS:** 추출된 모든 사실(고용주·직함·날짜·지표·스킬)이 verbatim span에 추적 가능 · **발명 0** / 책임 vs 성과 정확 태깅 / 날짜 ISO 정규화 + 현재 역할 처리 / 모호성을 사실 해소 대신 질문으로 / 스키마 준수 / 정량 임팩트는 명시될 때만.
37
+ **PASS:** 추출된 모든 사실(고용주·직함·날짜·지표·스킬)이 verbatim span에 추적 가능 · **발명 0** / 책임 vs 성과 정확 태깅 / 날짜 ISO 정규화 + 현재 역할 처리 / 모호성을 사실 해소 대신 질문으로 / 스키마 준수(표준 JSON Resume이거나, 확장 시 '기반(일부 확장)'으로 정직 표기) / 정량 임팩트는 명시될 때만 / '발명 0 보장' 등 자기 도장 0건(무발명은 충실도 노트로 보여줌).
37
38
  **FAIL:** 고용주·날짜·숫자·스킬 환각 / duty를 가짜 성과로 격상 / 날짜 오정규화·발명 / 모호성을 미검증 사실로 붕괴 / 원문 항목 누락·왜곡 / 구조·스키마 오류.
@@ -31,7 +31,7 @@
31
31
  - 약점·실패·갈등 문항은 정량 성과가 아니라 **성찰·개선 행동**으로 답하라(이 문항에 'quantified ≥2'를 강요하지 마라).
32
32
  - 글자수 제한을 적용할 때 **count_mode(공백포함/공백제외/byte)** 를 먼저 확인하라.
33
33
  - 클로징에 명확한 다음 단계(면접 요청/연락 가능 시점)를 한 문장으로 넣어라(로케일상 가능할 때).
34
- - 저장 전 lint(루브릭 자동 검사)를 통과시킨 뒤 save_cover_letter_version으로 보관하라.
34
+ - 저장 전 `validate_cover_letter`(현재 구현: 수치 출처·문체 신호 자동 검사 / 글자수 게이트·키워드 커버리지는 Phase B 미구현 — 연결 AI 수동)를 적용한 뒤 save_cover_letter_version으로 보관하라.
35
35
  - 초안은 get_writing_style_guide의 문체를 적용해 사람이 쓴 듯 자연스럽게 다듬어라.
36
36
 
37
37
  ### Don't
@@ -65,7 +65,7 @@
65
65
 
66
66
  ## 3. 검증 루브릭 (연결된 AI가 산출물을 이 기준으로 자가검증)
67
67
 
68
- 각 항목의 `measure.type`을 정직하게 표기한다 — **`regex`/`count`/`ratio`** 는 LLM 없이 lint로 자동 검사 가능, **`ai-judge`** 는 연결 AI의 의미 판단이 필요(정규식 불가). lint_cover_letter는 `regex`/`count`/`ratio` 항목만 자동 채점하고, `ai-judge` 항목은 연결 AI에게 위임 표시한다.
68
+ 각 항목의 `measure.type`을 정직하게 표기한다 — **`regex`/`count`/`ratio`** 는 LLM 없이 lint로 자동 검사 가능, **`ai-judge`** 는 연결 AI의 의미 판단이 필요(정규식 불가). 현재 실재하는 정적 검사기는 `validate_cover_letter`(→lintArtifact)이며 **수치 출처(fabricated 차단) + 문체 신호**만 자동 채점한다 — 글자수 상·하한 게이트·키워드 커버리지 카운트는 **Phase B 미구현**이라 연결 AI가 수동(advisory) 적용한다. `ai-judge` 항목은 연결 AI에게 위임한다. (문서의 `lint_cover_letter`는 Phase B 도구 아이디어 명칭이다.)
69
69
 
70
70
  | ID | 검사 항목 | 합격 기준 | 측정 방법(type · LLM 없이 셀 수 있게) |
71
71
  |----|-----------|-----------|--------------------------------|
@@ -77,8 +77,8 @@
77
77
  | R6 | 회사 고유성 | 회사명/제품/미션 고유명사 ≥2회 + 비종속 검사 | `count`(부분 자동) + `ai-judge`(완전 판정) — 토큰 등장 횟수 ≥2는 카운트 가능. '회사명 placeholder 치환 시 어색해지는 문장 ≥1'은 **연결 AI 판정(위임)** |
78
78
  | R7 | 이력서 비반복 | locale별 임계 이하 | `ratio` — 영문: 단어 5-gram 중복 ≤20%. **한국어: 어절 n-gram은 교착어 특성상 부정확 → 임계 신뢰 낮음, 의미 중복은 `ai-judge` 보조 필요(한계 명시)** |
79
79
  | R8 | STAR 행동+성과 동반 | 행동동사 단락 중 결과 절 동반 ≥1, 단 '규모≠성과' | `regex`(약) + `ai-judge` — 행동동사+결과신호 동시출현은 카운트되나 '우연 동시출현·규모 수치'를 구분하려면 연결 AI가 'R이 본인 행동의 변화량인가' 판정 |
80
- | R9 | 분량/글자수 | locale·count_mode별 상·하한 이내 | `count` — 영문 word_count ≤400. 한국: char_count가 지정 limit 이내 **그리고 하한 이상**. **count_mode(with_space\|no_space\|byte) 입력 필수**(미지정 시 fail-safe로 가장 빡빡한 기준 사용) |
81
- | R10 | 공고 요구 매핑 | 공고 키워드 ≥3개가 증거와 함께 등장 | `count`+`ai-judge` — 토큰 매치 카운트는 가능하나 '증거 동반' 판정은 의미 판단. **`job.requirements`/`keywords`가 비면 skip(N/A)** — 데이터 부재 시 통과/실패 강제 금지 |
80
+ | R9 | 분량/글자수 | locale·count_mode별 상·하한 이내 | `count` — 영문 word_count ≤400. 한국: char_count가 지정 limit 이내 **그리고 하한 이상**. **count_mode(with_space\|no_space\|byte) 입력 필수**(미지정 시 fail-safe로 가장 빡빡한 기준 사용). **⚠ 현재 validate_cover_letter는 charCount 계산만 하고 max/min 게이트는 Phase B 미구현 — 글자수 상·하한 판정은 연결 AI 수동(advisory).** |
81
+ | R10 | 공고 요구 매핑 | 공고 키워드 ≥3개가 증거와 함께 등장 | `ai-judge`(+count는 설계) — '증거 동반' 판정은 의미 판단이라 위임. **⚠ 키워드 토큰 매치 카운트는 현재 validate_cover_letter에 미구현(Phase B) — 키워드 커버리지·증거 동반 모두 연결 AI 수동.** **`job.requirements`/`keywords`가 비면 skip(N/A)** — 데이터 부재 시 통과/실패 강제 금지 |
82
82
  | R11 | 블라인드 가드레일 | 직무무관 개인정보 패턴 0건 | `regex` — `/(\d{2,3}\s?세|남자|여자|아버지|어머니|출신|본적|사진 첨부)/` 등 NCS 금지정보 매치 = 0(locale='ko') |
83
83
  | R12 | 1인칭 과다 | '저는/I'로 시작하는 문장 비율 ≤40% | `ratio` — 문장 분리 후 시작 토큰이 (저는\|제가\|^I\b)인 비율 계산 ≤0.40 |
84
84
 
@@ -14,7 +14,7 @@
14
14
  - **(증거 1:1 매핑 + 원문 substring 인용 강제)** 각 요건에 후보자 이력서·경력의 **구체적 증거 1개 이상**을 출처 식별자(sourceType·sourceId)와 함께 매핑하고, `quotedBullet`/`quotedMetric`은 **입력 원문의 정확한 부분문자열**로 담는다(의역·요약 금지). 매핑 증거가 없으면 그 요건은 gap이며, 증거를 지어내지 마라. substring 강제는 CareerMate가 LLM 없이 환각·수치변형을 서버측에서 거를 수 있게 하는 핵심 장치다. _(출처: STAR 성과 불릿; AGENTS.md 프라임 디렉티브)_
15
15
  - **(의미 매칭은 AI 추론, 표면 키워드는 별도 트랙)** JD 용어와 이력서 표현이 다르면('A/B 테스트'≈'실험 설계') 동의어·상위어로 연결하되, 이 **의미 매칭의 정합성 판단은 연결된 AI의 책임**이며 CareerMate가 검증하지 못한다(루브릭에서 자가검증 항목으로 분리). 동시에 JD 핵심 키워드(고유 기술명·자격증명)가 이력서에 그대로 들어가는지 **표면 존재 O/X**로 별도 보고한다. 키워드는 ATS에서 보통 자동탈락 게이트가 아니라 랭킹·가독성 신호다(방향성만 차용; 구체 % 수치는 출처가 약해 인용하지 않음). _(출처: ATS 실증 정리; O*NET 동의어 매핑은 AI 추론 영역)_
16
16
  - **(gap 3단계 처리 + false-negative 방지)** gap을 발견하면: (a) 인접·전이가능 증거가 있으면 **partial로 재분류**하되 '왜 full이 아닌지' 사유 1문장을 필수로 적고, (b) 진짜 없으면 **미충족**으로 정직하게 표기, (c) 미충족 must-have에는 완화 전략(전이가능 경험 강조·학습계획·커버레터 해명) 1개를 붙인다. **gap으로 분류한 must-have마다 인접 증거 탐색을 최소 1회 시도한 흔적**을 남겨, 좋은 후보를 과소평가(false-negative)하지 않는다. _(출처: O*NET KSA 위계는 전이가능성의 참고 프로파일이지 직접 판정 근거 아님 — 전이 판단은 AI 추론)_
17
- - **(충족률은 맥락 신호, 결정적 갭은 단독 게이트)** must-have 충족률(분자=met인 must 개수; **partial은 분자에서 제외**, 분모=전체 must 개수)을 계산하되, 이는 **합격 신호가 아니라 맥락 신호**다. '약 50~60% 구간부터 면접 콜백이 의미있게 오른다'는 관찰은 지원자 풀의 생존편향이 섞인 상관일 뿐 인과가 아니며, must-have만으로 재정의한 임계값은 별도 캘리브레이션이 없는 휴리스틱이다. **critical(직무 핵심)·hard-gate must-have가 하나라도 gap이면 충족률·60% 무관하게 '지원 권장'을 내지 않는다.** _(출처: TalentWorks 분석(CNBC 2018) — 단일·비피어리뷰, 방향성만 차용)_
17
+ - **(충족률은 맥락 신호, 결정적 갭은 단독 게이트)** must-have 충족률(분자=met인 must 개수; **partial은 분자에서 제외**, 분모=전체 must 개수)을 계산하되, 이는 **합격 신호가 아니라 맥락 신호**다. '약 50~60% 구간부터 면접 콜백이 의미있게 오른다'는 관찰은 지원자 풀의 생존편향이 섞인 상관일 뿐 인과가 아니며, must-have만으로 재정의한 임계값은 별도 캘리브레이션이 없는 휴리스틱이다. **critical(직무 핵심)·hard-gate must-have가 하나라도 gap이면 충족률·60% 무관하게 '지원 권장'을 내지 않는다.** 집계 비율(키워드 커버리지%·must-have 충족률)은 그 자체로 권장(recommend) 게이트가 아니라 맥락·랭킹·응답성 신호이며, 권장 게이트는 개별 하드요건(knockout) 충족 여부다(판정은 본 문서 R6·fit-analysis). <!-- B1/P5: 집계비율≠게이트, knockout이 게이트 (consensus R1→R3) --> _(출처: TalentWorks 분석(CNBC 2018) — 단일·비피어리뷰, 방향성만 차용)_
18
18
  - **(사실·수치·고유명사 보존)** 기간·규모·도구·회사명 등 사실·수치·고유명사는 변형 없이 보존하고, 매핑 시 원문 수치를 그대로(substring) 인용한다. 추정·반올림·과장 금지. _(출처: AGENTS.md 보존 규칙; STAR 정량화)_
19
19
  - **(하드 게이트 별도 식별 + ATS knockout 인지)** '경력 N년 이상'·국가자격증·면허·비자·근무지 같은 **하드 게이트**는 별도 표시하고 소프트 스킬로 상쇄되지 않음을 분명히 한다. 이런 binary 요건은 ATS의 knockout/스크리닝 사전질문에서 **실제로 자동탈락되는 경우가 흔하다**(키워드 자동탈락은 드물어도 구조화 사전질문 탈락은 흔하다). 따라서 '자동탈락은 드뭄'을 하드 게이트에 일반화하지 마라. _(출처: O*NET 규제요건; NCS 자격요건; ATS knockout 실무)_
20
20
  - **(범위 한계 명시 + 오버퀄/방향 불일치)** 이 분석은 '증거로 매핑 가능한 하드 요건' 중심이며, 협업·커뮤니케이션 같은 **soft/culture fit는 다루지 않음을 명시**한다(적합도 ≠ 합격가능성). 또한 미달뿐 아니라 **오버퀄(시니어가 주니어 JD 지원)·커리어 방향 불일치**도 리스크로 표기한다. _(출처: 채용 매니저 실무; O*NET은 soft 신호 판정 도구 아님)_
@@ -29,7 +29,7 @@
29
29
  - JD 핵심 키워드(기술명·자격증·도구)의 이력서 표면 존재 O/X를 의미 매칭과 분리해 별도 점검한다.
30
30
  - 저장된 이력서/JD가 바뀌면 분석이 낡으므로, 분석에 **근거가 된 이력서 버전 ID·JD 식별자**를 기록해 재분석 트리거를 남긴다.
31
31
  - 결과는 `save_fit_analysis`로 저장하고 대시보드 링크(http://127.0.0.1:4319)를 안내한다.
32
- - 기술 용어(must-have, ATS, hard-gate 등)는 쉬운 한국어로 풀어 설명한다.
32
+ - 기술 용어(must-have, ATS, hard-gate 등)는 사용자의 언어로 풀어 설명한다.
33
33
 
34
34
  ### Don't
35
35
 
@@ -63,17 +63,17 @@
63
63
  | ID | 검사 항목 | 합격 기준 | 측정 방법(LLM 없이 셀 수 있게) |
64
64
  |----|-----------|-----------|--------------------------------|
65
65
  | R1 | 모든 요건에 [필수/우대] 라벨 + 복합 요건 분해 | 라벨 누락 0개; 쉼표·'및'·'and/or'로 묶인 줄이 개별 항목으로 분리됨 | 추출 항목 수를 세고 각 항목에 'must'/'nice' 토큰 존재 확인(누락==0). 원문에서 구분자 포함 줄 수 대비 분해 항목 수가 ≥ 구분자+1 인지 검사 |
66
- | R2 | 충족·부분충족 판정에 출처 ID + evidence 존재 | status가 met·partial인데 evidence[] 배열이 빈 항목 0개 | (서버 검증 가능) met·partial 항목 수 대비 `evidence.length>0` 항목 수 비율 == 100% |
67
- | R3 | quotedBullet/quotedMetric이 원문 substring (환각·수치변형 차단) | 인용 문자열이 해당 sourceId 입력 텍스트의 부분문자열이 아닌 항목 0개 | (서버 검증 가능) 각 evidence의 quotedBullet을 입력 이력서/경력 텍스트에 대해 indexOf/`includes` 문자열 검색 → 미발견 개수 == 0 |
66
+ | R2 | 충족·부분충족 판정에 출처 ID + evidence 존재 | status가 met·partial인데 evidence[] 배열이 빈 항목 0개 | (AI 셀프체크 기준으로 유효; **서버 강제는 Phase B** — 현재 save_fit_analysis 스키마에 requirements[]/evidence 필드 없음) met·partial 항목 수 대비 `evidence.length>0` 항목 수 비율 == 100% |
67
+ | R3 | quotedBullet/quotedMetric이 원문 substring (환각·수치변형 차단) | 인용 문자열이 해당 sourceId 입력 텍스트의 부분문자열이 아닌 항목 0개 | (AI 셀프체크 기준으로 유효; **서버 강제는 Phase B** — 입력 구조 부재, 현재 연결 AI가 substring 수동 대조) 각 evidence의 quotedBullet을 입력 이력서/경력 텍스트에 대해 indexOf/`includes` 문자열 검색 → 미발견 개수 == 0 |
68
68
  | R4 | gap 표기 + must-have 미충족마다 완화 전략 | 미충족 must 중 mitigation 문장이 없는 항목 0개 | 미충족 must 개수 == mitigation 문장 개수 비교 |
69
69
  | R5 | must-have 충족률 수치 제시 + partial 제외 규칙 | 'met must 수 / 전체 must 수' 분수·% 1개 이상; 분자에 partial 미포함 | 분수/% 정규식(예: `\d+/\d+`, `\d+%`)이 must 문맥과 함께 1회 이상; 분자 == status=='met' 개수와 일치 확인 |
70
- | R6 | critical·hardGate gap 시 '권장 불가' 병기 (게이트 단독 우선) | hardGate 또는 critical이 gap인데 verdict가 'recommend'인 사례 0개 | (서버 검증 가능 — 경고 아닌 **거부**) `requirements`에 `hardGate&&status==gap` 또는 `critical&&status==gap`이 1개라도 있으면 `verdict=='recommend'` 금지 |
70
+ | R6 | critical·hardGate gap 시 '권장 불가' 병기 (게이트 단독 우선) | hardGate 또는 critical이 gap인데 verdict가 'recommend'인 사례 0개 | (AI 셀프체크 기준으로 유효; **서버 강제는 Phase B** — verdict/requirements 필드 부재, 현재 연결 AI가 수동으로 '권장 불가' 강제) `requirements`에 `hardGate&&status==gap` 또는 `critical&&status==gap`이 1개라도 있으면 `verdict=='recommend'` 금지 |
71
71
  | R7 | 키워드 표면 존재가 의미 매칭과 분리 보고 | JD 핵심 키워드별 'O/X' 표기 1개 이상, 의미 매칭 충족 판정과 별도 필드 | 출력에 `keywordSurfacePresent` 또는 'O/X·있음/없음' 항목 카운트 ≥ 1 |
72
72
  | R8 | partial 남용 방지 (사유 강제) | partial 항목 중 '왜 full이 아닌지' 사유 문장이 없는 항목 0개 | partial 항목 수 == partialReason 문장 수 비교 |
73
73
  | R9 | gap 과소평가(false-negative) 방지 | gap으로 분류한 must마다 인접 증거 탐색 시도 흔적 존재 | gap must 개수 대비 `transferAttempt` 표기(예: "인접 검토: …") 항목 수 == 100% |
74
74
  | R10 | 신선도 추적 | 분석에 근거가 된 이력서 버전 ID·JD 식별자가 기록됨 | 출력/페이로드에 `resumeVersionId`·`jobId`(또는 JD 해시) 필드 존재 여부 == 있음 |
75
75
 
76
- **의미 매칭·전이가능성은 LLM 없이 검증 불가** → R2·R3·R5·R6은 CareerMate 서버가 LLM 없이 강제(존재 여부·substring·산술·게이트). 반면 '의역 동의어 매칭이 타당한가', '전이가능성 판단이 옳은가', '요건 추출이 빠짐없는가'는 **외부 AI의 셀프체크 책임**이며 서버가 보증하지 않는다(R1·R4·R8·R9는 형식 카운트만 강제, 내용 타당성은 AI 책임).
76
+ **의미 매칭·전이가능성은 LLM 없이 검증 불가** → R2·R3·R5·R6은 **Phase B에서** CareerMate 서버가 LLM 없이 강제하도록 *설계*된 항목이다(존재 여부·substring·산술·게이트). **Phase A 현재 save_fit_analysis는 구조화 requirements[]를 받지 않고 자유텍스트만 저장하므로 이 서버 강제는 미구현이며, 연결 AI가 셀프체크로 적용한다.** 반면 '의역 동의어 매칭이 타당한가', '전이가능성 판단이 옳은가', '요건 추출이 빠짐없는가'는 **외부 AI의 셀프체크 책임**이며 서버가 보증하지 않는다(R1·R4·R8·R9는 형식 카운트만 강제, 내용 타당성은 AI 책임).
77
77
 
78
78
  **주요 실패 모드:**
79
79
  - (과대평가) 의역 인용으로 충족 위장 → R3 substring 강제로 차단.
@@ -94,7 +94,7 @@
94
94
 
95
95
  ## 5. Phase B 힌트 (아키텍처로 연결)
96
96
 
97
- - **MCP 도구 아이디어:** `get_fit_analysis_guide` — 연결된 AI가 적합도 분석 직전 호출하면 (1) 요건 분해·복합 요건 분리 체크리스트, (2) 증거-매핑 템플릿(substring 인용 규칙 포함), (3) R1~R10 셀프-체크 루브릭, (4) 60% '맥락 신호' 규칙·critical/hardGate 단독 게이트 규칙을 구조화 JSON으로 반환. `save_fit_analysis`는 `requirements[]` 구조를 입력받아 **LLM 없이** 충족률·갭 개수를 서버측에서 재계산·검증한다.
97
+ - **MCP 도구 아이디어:** `get_fit_analysis_guide` — 연결된 AI가 적합도 분석 직전 호출하면 (1) 요건 분해·복합 요건 분리 체크리스트, (2) 증거-매핑 템플릿(substring 인용 규칙 포함), (3) R1~R10 셀프-체크 루브릭, (4) 60% '맥락 신호' 규칙·critical/hardGate 단독 게이트 규칙을 구조화 JSON으로 반환. (Phase B) `save_fit_analysis`가 `requirements[]` 구조를 입력받으면 **LLM 없이** 충족률·갭 개수를 서버측에서 재계산·검증하도록 *설계*한다(현재 스키마는 자유텍스트만 — 미구현).
98
98
  - **데이터 형태 힌트:**
99
99
  ```
100
100
  {
@@ -118,4 +118,4 @@
118
118
  generatedBy: 'claude'|'gpt'|'gemini'
119
119
  }
120
120
  ```
121
- **서버측 검증(LLM 불요):** ① `status∈{met,partial}`인데 `evidence[]` 빈 항목 → **거부**(R2). ② 각 `quotedBullet`이 해당 sourceId 입력 텍스트의 부분문자열이 아니면 → **거부**(R3). ③ `mustHaveMet`를 status=='met' 개수로 재계산(클라이언트 자기보고 불신, R5). ④ `hardGate&&status==gap` 또는 `critical&&status==gap`이 1개라도 있는데 `verdict=='recommend'` → **거부**(경고 아님, R6). ⑤ partial인데 `partialReason` 없음(R8)·gap must인데 `transferAttempt` 없음(R9)·미충족 must인데 `mitigation` 없음(R4) → 거부.
121
+ **서버측 검증(Phase B 설계 — 현재 미구현):** 아래는 `save_fit_analysis`가 구조화 `requirements[]`를 받게 될 Phase B의 강제 *설계안*이다. **Phase A 현재 스키마는 자유텍스트만 받으므로 이 검증은 동작하지 않으며, 연결 AI가 셀프체크로 적용한다.** ① `status∈{met,partial}`인데 `evidence[]` 빈 항목 → **거부**(R2). ② 각 `quotedBullet`이 해당 sourceId 입력 텍스트의 부분문자열이 아니면 → **거부**(R3). ③ `mustHaveMet`를 status=='met' 개수로 재계산(클라이언트 자기보고 불신, R5). ④ `hardGate&&status==gap` 또는 `critical&&status==gap`이 1개라도 있는데 `verdict=='recommend'` → **거부**(경고 아님, R6). ⑤ partial인데 `partialReason` 없음(R8)·gap must인데 `transferAttempt` 없음(R9)·미충족 must인데 `mitigation` 없음(R4) → 거부.