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.
- package/AGENTS.md +33 -0
- package/INSTALL.md +230 -0
- package/LICENSE +21 -0
- package/README.md +532 -0
- package/THIRD_PARTY_NOTICES.md +57 -0
- package/bin/careermate.mjs +77 -0
- package/dist/career-os/README.md +78 -0
- package/dist/career-os/eop/cover-letter.md +46 -0
- package/dist/career-os/eop/fit-analysis.md +48 -0
- package/dist/career-os/eop/interview-prep.md +39 -0
- package/dist/career-os/eop/job-analysis.md +42 -0
- package/dist/career-os/eop/profile-extraction.md +37 -0
- package/dist/career-os/knowledge/ats.md +131 -0
- package/dist/career-os/knowledge/company-research.md +137 -0
- package/dist/career-os/knowledge/cover-letter.md +135 -0
- package/dist/career-os/knowledge/fit-matching.md +121 -0
- package/dist/career-os/knowledge/human-writing.md +118 -0
- package/dist/career-os/knowledge/interview-behavioral.md +132 -0
- package/dist/career-os/knowledge/interview-technical.md +126 -0
- package/dist/career-os/knowledge/linkedin-profile.md +152 -0
- package/dist/career-os/knowledge/networking-referrals.md +166 -0
- package/dist/career-os/knowledge/offer-evaluation-decision.md +121 -0
- package/dist/career-os/knowledge/onboarding-first-90-days.md +126 -0
- package/dist/career-os/knowledge/portfolio.md +121 -0
- package/dist/career-os/knowledge/recruiter-screen.md +105 -0
- package/dist/career-os/knowledge/rejection-triage-iteration.md +115 -0
- package/dist/career-os/knowledge/resume.md +123 -0
- package/dist/career-os/knowledge/salary-negotiation.md +123 -0
- package/dist/career-os/knowledge/verifiers/ats-compat.md +64 -0
- package/dist/career-os/knowledge/verifiers/consistency.md +61 -0
- package/dist/career-os/knowledge/verifiers/human-voice.md +82 -0
- package/dist/career-os/knowledge/verifiers/recency-staleness.md +72 -0
- package/dist/career-os/knowledge/verifiers/responsiveness-on-target.md +82 -0
- package/dist/career-os/knowledge/verifiers/truthfulness.md +67 -0
- package/dist/doctor.mjs +79094 -0
- package/dist/mcp.mjs +96108 -0
- package/dist/migrate.mjs +4735 -0
- package/dist/pdf.worker.min.mjs +28 -0
- package/dist/public/app.js +150 -0
- package/dist/public/fonts/PretendardVariable.woff2 +0 -0
- package/dist/public/icon-180.png +0 -0
- package/dist/public/index.html +52 -0
- package/dist/public/lib.js +394 -0
- package/dist/public/pages/applications.js +107 -0
- package/dist/public/pages/documents.js +467 -0
- package/dist/public/pages/home.js +261 -0
- package/dist/public/pages/interview.js +227 -0
- package/dist/public/pages/jobs.js +493 -0
- package/dist/public/pages/profile.js +556 -0
- package/dist/public/pages/settings.js +240 -0
- package/dist/public/styles.css +498 -0
- package/dist/site/analytics.js +97 -0
- package/dist/site/favicon.svg +1 -0
- package/dist/site/fonts/PretendardVariable.woff2 +0 -0
- package/dist/site/icon-180.png +0 -0
- package/dist/site/icon-512.png +0 -0
- package/dist/site/index.html +598 -0
- package/dist/site/landing.js +54 -0
- package/dist/site/llms-install.txt +217 -0
- package/dist/site/robots.txt +4 -0
- package/dist/site/sitemap.xml +21 -0
- package/dist/site/start.html +326 -0
- package/dist/site/style.css +550 -0
- package/dist/site/vercel.json +20 -0
- package/dist/web.mjs +46852 -0
- package/docs/FAQ.md +101 -0
- package/docs/MCP_TOOLS.md +311 -0
- package/docs/README.md +28 -0
- package/docs/START_WORKFLOW.md +137 -0
- package/docs/SUPPORTED_AI_APPS.md +112 -0
- package/docs/WORKFLOWS.md +202 -0
- package/docs/career-os/README.md +78 -0
- package/docs/career-os/eop/cover-letter.md +46 -0
- package/docs/career-os/eop/fit-analysis.md +48 -0
- package/docs/career-os/eop/interview-prep.md +39 -0
- package/docs/career-os/eop/job-analysis.md +42 -0
- package/docs/career-os/eop/profile-extraction.md +37 -0
- package/docs/career-os/knowledge/ats.md +131 -0
- package/docs/career-os/knowledge/company-research.md +137 -0
- package/docs/career-os/knowledge/cover-letter.md +135 -0
- package/docs/career-os/knowledge/fit-matching.md +121 -0
- package/docs/career-os/knowledge/human-writing.md +118 -0
- package/docs/career-os/knowledge/interview-behavioral.md +132 -0
- package/docs/career-os/knowledge/interview-technical.md +126 -0
- package/docs/career-os/knowledge/linkedin-profile.md +152 -0
- package/docs/career-os/knowledge/networking-referrals.md +166 -0
- package/docs/career-os/knowledge/offer-evaluation-decision.md +121 -0
- package/docs/career-os/knowledge/onboarding-first-90-days.md +126 -0
- package/docs/career-os/knowledge/portfolio.md +121 -0
- package/docs/career-os/knowledge/recruiter-screen.md +105 -0
- package/docs/career-os/knowledge/rejection-triage-iteration.md +115 -0
- package/docs/career-os/knowledge/resume.md +123 -0
- package/docs/career-os/knowledge/salary-negotiation.md +123 -0
- package/docs/career-os/knowledge/verifiers/ats-compat.md +64 -0
- package/docs/career-os/knowledge/verifiers/consistency.md +61 -0
- package/docs/career-os/knowledge/verifiers/human-voice.md +82 -0
- package/docs/career-os/knowledge/verifiers/recency-staleness.md +72 -0
- package/docs/career-os/knowledge/verifiers/responsiveness-on-target.md +82 -0
- package/docs/career-os/knowledge/verifiers/truthfulness.md +67 -0
- package/package.json +89 -0
- package/packages/core/src/context.ts +74 -0
- package/packages/core/src/index.ts +8 -0
- package/packages/core/src/onboarding.ts +81 -0
- package/packages/core/src/services.ts +187 -0
- package/packages/core/src/summary.ts +104 -0
- package/packages/db/src/connection.ts +76 -0
- package/packages/db/src/index.ts +23 -0
- package/packages/db/src/paths.ts +52 -0
- package/packages/db/src/repositories.ts +891 -0
- package/packages/db/src/runtime.ts +58 -0
- package/packages/db/src/schema.ts +307 -0
- package/packages/exporters/src/html.ts +110 -0
- package/packages/exporters/src/index.ts +364 -0
- package/packages/exporters/src/markdown.ts +178 -0
- package/packages/knowledge/src/index.ts +168 -0
- package/packages/mcp-tools/src/bridge.ts +106 -0
- package/packages/mcp-tools/src/index.ts +17 -0
- package/packages/mcp-tools/src/result.ts +49 -0
- package/packages/mcp-tools/src/tools.ts +747 -0
- package/packages/mcp-tools/src/update.ts +330 -0
- package/packages/parsers/src/documents.ts +533 -0
- package/packages/parsers/src/html.ts +86 -0
- package/packages/parsers/src/index.ts +231 -0
- package/packages/parsers/src/keywords.ts +151 -0
- package/packages/prompts/src/humanize.ts +59 -0
- package/packages/prompts/src/index.ts +82 -0
- package/packages/prompts/src/install.ts +43 -0
- package/packages/prompts/src/onboarding.ts +35 -0
- package/packages/prompts/src/system.ts +57 -0
- package/packages/shared/src/build-info.ts +22 -0
- package/packages/shared/src/enums.ts +142 -0
- package/packages/shared/src/index.ts +19 -0
- package/packages/shared/src/schemas.ts +453 -0
- package/packages/workflows/src/definitions.ts +109 -0
- package/packages/workflows/src/index.ts +39 -0
- package/scripts/init.ts +371 -0
- package/tsconfig.json +32 -0
|
@@ -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] 체크는 자기 판단으로 분리 실행.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# 포트폴리오 / Portfolio — CareerMate 지식 (Phase A)
|
|
2
|
+
|
|
3
|
+
> 이 문서는 CareerMate가 **연결된 AI에게 제공(serve)** 하는 지식이다. CareerMate 안에는 LLM이 없다 — 분석·작성·검증은 연결된 AI가 수행하고, 이 플레이북·루브릭은 그 AI가 **세계 최고 수준**으로 일하도록 안내한다.
|
|
4
|
+
|
|
5
|
+
## 1. 무엇을 하는가
|
|
6
|
+
|
|
7
|
+
포트폴리오는 "예쁘게 보여주기"가 아니라 **채용 의사결정자가 짧은 시간에 지원자의 문제 해결 능력을 신뢰하게 만드는 증거 모음**이다. 핵심은 다섯 축이다: (1) `problem → approach → impact` 3막 서사, (2) 직무에 맞는 3~6개 선별(큐레이션), (3) 팀 작업에서 "내가 실제로 한 것"을 1인칭으로 분리, (4) 정량 결과(숫자·전후 비교)로 임팩트 입증, (5) 직군별 규범(eng/design/PM/data) 준수. CareerMate는 LLM이 없으므로, 작성은 연결된 외부 AI가 하고 CareerMate는 그 결과를 **구조화 레코드(`PortfolioItem`)로 저장**한 뒤 **LLM 없이 결정적으로 셀 수 있는 lint 루브릭**으로 검증한다. 따라서 아래 루브릭은 자유 텍스트가 아니라 **구조화 필드를 입력 전제**로 설계되어 있다.
|
|
8
|
+
|
|
9
|
+
## 2. 플레이북
|
|
10
|
+
|
|
11
|
+
### 원칙
|
|
12
|
+
|
|
13
|
+
- **각 항목을 `problem(문제) → approach/역할(접근) → impact(결과)` 3막으로 쓰고, 결과물 스크린샷보다 "왜 그 결정을 했는가"에 분량을 더 쓴다.** — 채용 담당자는 결과물 자체가 아니라 트레이드오프를 다루는 방식으로 미래 협업을 상상한다. why가 빠진 케이스는 "예쁘지만 기억에 안 남는" 항목이 된다. _(출처: uxfol.io UX Case Study Structure)_
|
|
14
|
+
- **직무에 맞는 강한 항목으로 선별한다(가이드 기본값 3~6개, 단 경력 레벨·직군에 따라 조정).** 10개 이상의 얕은 항목보다 4개의 깊은 항목이 낫다. 다만 시니어/풀스택은 다직군 7~8개가 정상이고, 신입은 2개가 최선일 수 있다 — 개수는 **하드 실패가 아니라 soft-warning**이다. _(출처: icreatives Portfolio Review / Hakia Developer Portfolio Guide — SEO 콘텐츠, 4절 신뢰도 주석 참조)_
|
|
15
|
+
- **팀 프로젝트에서는 `my_role` 필드에 본인이 소유한 결정·구현·산출물을 동작 동사(설계/구현/주도/분석)로 명시한다.** `we/우리`로만 서술하면 개인 기여가 불명확해진다. 더 위험한 것은 **팀 작업을 `solo`로 태깅해 단독 기여로 포장하는 과대표현**이므로, 임팩트 수치마다 측정 범위(`method`)를 함께 적어 귀속을 분명히 한다. _(출처: thecrit.co Portfolio Project Examples)_
|
|
16
|
+
- **임팩트는 가능한 한 숫자 + 단위 + 전후(before→after) 비교로 표현한다(예: 전환율 3.2%→4.7%, +47%, 처리시간 -40%).** 숫자가 없으면 비교 기준·규모·범위(사용자 수·기간·트래픽)라도 제시한다. **이 수치는 반드시 사용자가 제공한 실측이어야 하며, AI가 그럴듯하게 지어내선 안 된다.** _(출처: The Muse STAR Method)_
|
|
17
|
+
- **직군별 규범을 따른다.** eng = 실행 가능한 README(목적·문제·실행법·라이브 데모/스크린샷) + 깔끔한 커밋 + 최소 1개 end-to-end 프로젝트; design = 리서치→결정→반복의 why; PM = 북극성/가드레일/진단 지표로 가치 정의; data = train/test 분리·복수 평가지표·온라인 A/B·가드레일·비즈니스 임팩트 정량화. _(출처: Flatiron README best practices / Meta Analytics DS framework)_
|
|
18
|
+
- **작업 당시의 제약(constraints)을 한 줄이라도 명시한다** — 마감, 기존 브랜드/legacy 시스템, 기술적 제약, 이해관계자/NDA. 제약 속 결정을 보여줘 맥락 인지를 입증한다. _(출처: icreatives Portfolio Review)_
|
|
19
|
+
- **한국 채용 맥락의 '경력기술서'는 포트폴리오 역할을 하되 형식이 다르다.** 회사·기간·역할·성과를 표/불릿로 쓰는 경우가 많아 산문 3막을 강제하면 정상 경력기술서를 오탐한다. 따라서 3막 검증은 **`item_type`이 `case_study`인 항목에만** 적용하고, `경력기술서` 유형은 필드(역할·성과·기간) non-empty로만 검증한다. 사실·수치·고유명사는 **절대 과장·날조하지 않는다**(AGENTS.md 프라임 디렉티브). _(출처: AGENTS.md 사실 보존 규칙)_
|
|
20
|
+
|
|
21
|
+
### Do
|
|
22
|
+
|
|
23
|
+
- 각 항목을 `problem → approach → impact` 구조화 필드로 채우고, 맨 위에 한 줄 요약(무엇을 / 누구를 위해 / 결과)을 둔다.
|
|
24
|
+
- 팀 프로젝트는 `my_role` 필드에 본인 기여를 동작 동사로 1인칭 서술하고, 임팩트 수치마다 측정 범위·방법(`method`)을 적어 귀속을 분명히 한다.
|
|
25
|
+
- 임팩트를 숫자 + 단위 + 전후 비교로 표기한다(예: 전환율 3.2%→4.7%, +47%). 사내/NDA로 절대수치를 못 쓰면 **상대값·비율·범위·배수**로 대체한다(예: "전환율 약 1.5배", "두 자릿수 % 개선").
|
|
26
|
+
- 직군에 맞는 증거를 `evidence` 링크로 첨부한다: eng = 라이브 데모/repo/README, design = 리서치 근거·트레이드오프, PM = 지표 정의, data = 평가지표·A/B·노트북.
|
|
27
|
+
- 지원 직무(`target_job_ids`)의 핵심 스킬 키워드와 항목을 매핑해 "왜 이 항목이 이 직무에 적합한가"를 드러낸다(1차 ATS/스크리너 게이트).
|
|
28
|
+
- 최근 2~3년 내 항목을 우선 배치하고, `date`/기간 필드를 채워 신선도를 드러낸다.
|
|
29
|
+
- 케이스 스터디는 핵심 800~1,500단어 범위로 유지하되, **엔지니어 README·한국 경력기술서는 불릿 중심으로 훨씬 짧게** 쓴다(직군별 분량 규범이 다르다).
|
|
30
|
+
|
|
31
|
+
### Don't
|
|
32
|
+
|
|
33
|
+
- 최종 결과물 스크린샷만 나열하고 "왜 그렇게 결정했는지"를 생략하지 않는다.
|
|
34
|
+
- `우리/we`로만 서술해 개인 기여를 불명확하게 두지 않는다. **반대로 팀 성과를 `solo`로 태깅해 단독 기여인 양 포장하지도 않는다.**
|
|
35
|
+
- 직무와 무관한 얕은 항목을 분량 채우기로 끼워 가장 강한 항목을 희석하지 않는다.
|
|
36
|
+
- "성능을 크게 개선했다 / 안정적으로 운영했다 / 성공적으로 최적화했다" 같은 **모호 형용사로 끝내지 않는다**(수치·범위 없이). 숫자가 있어도 형용사 슬롭을 함께 쓰지 않는다.
|
|
37
|
+
- **입력 사실에 없는 숫자·성과·회사명·고유명사를 지어내거나 과장하지 않는다.** 환산·추정 손실액 같은 "그럴듯한 정량화"도 실측 근거 없이는 금지.
|
|
38
|
+
- README/실행법/라이브 데모 없이 코드 저장소 링크만 던지지 않는다(eng). **죽은 데모 링크·private 404는 최악 신호**다.
|
|
39
|
+
- 제약·트레이드오프 없는 "완벽한 이상적 결과"만 제시하지 않는다.
|
|
40
|
+
- 기술 스택 약어를 맥락 없이 나열하지 않는다. 5년 전 노후 스택(예: jQuery)만으로 채운 포트폴리오는 즉시 감점된다.
|
|
41
|
+
|
|
42
|
+
### 워크드 예시 (Before → After)
|
|
43
|
+
|
|
44
|
+
> 아래 after의 모든 수치는 **사용자가 제공한 실측 데이터**라는 전제다. AI가 임의로 만든 숫자가 아니다. 예시의 정합성(예: 이탈률 감소폭과 완료율 증가폭)도 사용자 입력에서 검증되어야 한다.
|
|
45
|
+
|
|
46
|
+
1. **Before:** 결제 페이지를 새로 디자인했습니다. 우리는 사용자 경험을 개선하기 위해 UI를 현대화하고 결제 흐름을 단순화했습니다. 깔끔하고 직관적인 디자인으로 만들었습니다. (스크린샷 4장)
|
|
47
|
+
**After:** **문제:** 결제 단계 이탈률 68%(업계 평균 50% 상회). **제약:** 기존 PG 연동 변경 불가, 2주 스프린트. **내 역할(my_role):** 퍼널 분석으로 '주소 입력'을 이탈 핫스팟으로 특정, 3단계→1단계 통합 흐름을 설계·프로토타이핑하고 5명 사용성 테스트를 진행. **결과:** 결제 이탈률 68%→41%(-27%p, A/B 2주 p<0.05). 이 -27%p는 실측이며, 매출 환산은 사용자가 제공한 가정이 있을 때만 기재. [Figma 링크 / 테스트 노트]
|
|
48
|
+
**왜 더 나은가:** before는 `we`·형용사 위주로 개인 기여·임팩트가 안 보인다. after는 문제를 숫자로 정의, 제약 명시, `my_role`로 본인 기여를 동작 동사로 분리, 결과를 전후 비교 + 통계로 정량화한다. (환산 매출은 사실 추적이 안 되면 빼는 것이 원칙.)
|
|
49
|
+
|
|
50
|
+
2. **Before:** 프로젝트: TaskFlow — 할 일 관리 앱. React, Node.js, MongoDB로 만들었습니다. GitHub: github.com/user/taskflow
|
|
51
|
+
**After:** **TaskFlow** — 팀 할 일 관리 앱(풀스택, 1인 개발). **문제:** 소규모 팀이 Slack에 흩어진 할 일을 추적 못 함. **접근:** React+Node+MongoDB로 실시간 동기화(WebSocket), 낙관적 업데이트로 체감 지연 제거. **임팩트/규모:** 베타 사용자 120명, 일 평균 작업 1,400건, p95 응답 180ms. **트레이드오프:** 동시 편집 충돌을 CRDT 대신 last-write-wins + 버전 벡터로 해결(문서화). [라이브 데모(200 확인)] [README: 30초 실행법·아키텍처] [데모 영상 90초]
|
|
52
|
+
**왜 더 나은가:** before는 스택 나열 + repo 링크뿐이라 목적·실행법·임팩트를 알 수 없다. after는 README/라이브 데모/실행법을 앞세우고(eng 규범), 문제→접근→임팩트를 정량화하며, 기술적 트레이드오프를 드러낸다. `WebSocket`·`CRDT`는 허용되는 기술 용어이지 날조 고유명사가 아니다.
|
|
53
|
+
|
|
54
|
+
3. **Before:** 추천 모델을 개발해 추천 품질을 향상시켰습니다. 다양한 알고리즘을 실험하고 가장 좋은 것을 선택했습니다.
|
|
55
|
+
**After:** **문제:** 신규 사용자 첫 주 이탈률 54%, 콜드스타트가 인기상품 위주라 관련성 낮음. **접근:** train/test 시계열 분리, 베이스라인(인기순) 대비 협업필터링·콘텐츠기반·하이브리드 3종 비교, 오프라인 NDCG@10·Recall@20 + 온라인 A/B 평가. **결과:** 하이브리드가 베이스라인 대비 CTR +15%, 첫 주 리텐션 54%→61%(+7%p). **가드레일:** 추천 다양성(카탈로그 커버리지) 비저하 확인. (연 매출 기여 추정치는 사용자 제공 가정이 있을 때만.) [노트북 / 지표 대시보드]
|
|
56
|
+
**왜 더 나은가:** before는 평가지표·비즈니스 임팩트가 전무하다. after는 data 직군 규범(train/test 분리·복수 평가지표·온라인 A/B·가드레일)을 따르고 모델 성능을 비즈니스 지표로 번역한다.
|
|
57
|
+
|
|
58
|
+
## 3. 검증 루브릭 (연결된 AI가 산출물을 이 기준으로 자가검증)
|
|
59
|
+
|
|
60
|
+
> **전제(중요):** 모든 루브릭은 자유 텍스트가 아니라 **`PortfolioItem` 구조화 레코드 배열**을 입력으로 받는다. "항목(item) 경계"는 **레코드 1개 = 1 항목**으로 못박는다. 자유 텍스트는 루브릭 대상이 아니며, 먼저 `save_portfolio_item`으로 구조화해야 한다. 이로써 대부분 체크가 키워드 매칭 대신 **필드 non-empty / 패턴 카운트**로 결정적(deterministic)·LLM-프리가 된다.
|
|
61
|
+
|
|
62
|
+
| ID | 검사 항목 | 합격 기준 | 측정 방법(LLM 없이 셀 수 있게) |
|
|
63
|
+
|----|-----------|-----------|--------------------------------|
|
|
64
|
+
| R1 PF-STRUCT-3ACT | (case_study 유형) 3막 필드가 모두 채워졌는가 | `item_type=case_study`인 항목 100%가 `problem`·`approach`·`impact` 필드 non-empty | 각 레코드의 세 필드가 빈 문자열/공백이 아닌지 `len(trim)>0` 카운트. `경력기술서` 유형은 대상에서 제외(역할·성과·기간 필드 non-empty로 대체 검증). |
|
|
65
|
+
| R2 PF-QUANT-IMPACT | 임팩트에 **의미 있는** 정량 지표가 있는가 | 각 항목 `impact[]`의 80% 이상에 단위·전후·증감 신호가 동반된 숫자 1개 이상 | `impact` 필드/배열에서만 매칭. **맨정수(bare integer) 단독은 불통과.** 통과 패턴: `\d+%`, `\d+\s*→\s*\d+`, `[+\-]\d+`, `x\d+`/`\d+배`, 단위 부착(`ms`,`초`,`원`,`건`,`p95`). 연도/버전/인원수(예: `2026`, `React 18`, `5명`)는 impact 필드 밖이면 자동 배제. |
|
|
66
|
+
| R3 PF-ROLE-OWN | 본인 기여가 동작 동사로 명시되고 귀속이 분명한가 | 모든 항목에 `my_role` non-empty + 동작 동사(설계/구현/주도/분석/개발/리드/built/led/designed/analyzed) ≥1, 그리고 팀 성과 수치엔 `method`/범위 동반 | `my_role` 길이 + 동사 사전 매칭(한/영). 한국어는 대명사 없이 `~했다/담당/주도`도 1인칭으로 인정. **solo 과대표현 가드:** `role_tag=solo`인데 `impact[].method`에 팀/공동 신호가 있으면 확인 플래그. |
|
|
67
|
+
| R4 PF-CURATION-COUNT | 항목 수가 큐레이션 범위인가 (soft) | 권장 3~6개. 범위 밖이면 **경고**(하드 실패 아님) | 레코드 개수 `n` 카운트. `n<3` 또는 `n>6`이면 warning + 경력 레벨/직군 다양성 메타로 맥락 판단 권고. 신입 2개·시니어 다직군 7~8개는 정상으로 허용. |
|
|
68
|
+
| R5 PF-CONSTRAINT | 각 항목에 제약이 명시되는가 | 항목의 70% 이상에 `constraints[]` 길이 ≥1 | `constraints` 배열 비어있지 않은 항목 비율 카운트. NDA/사내 항목은 "수치 제한" 자체가 제약으로 인정. |
|
|
69
|
+
| R6 PF-ENG-RUNNABLE | (eng 항목) 실행 가능성 증거가 있는가 | `domain=eng` 항목 100%에 `evidence` 중 `type∈{readme,demo,repo}` ≥1 + 실행법/데모 신호 | `evidence[].type` 카운트 + `approach`/`evidence`에 `README`·`실행/run/install/setup`·`demo/데모` 패턴 존재. eng인데 미충족 0건이면 통과. |
|
|
70
|
+
| R7 PF-LINK-FORMAT | 증거 링크가 형식·도달성 기준을 통과하는가 | `evidence[].url` 100%가 유효 URL 형식 + private/placeholder 패턴 아님. (네트워크 허용 시 HEAD 200) | URL 정규식 검증 + `localhost`/`example.com`/`TODO`/`<...>` 같은 placeholder 차단. **외부 네트워크 금지 정책 안에서는 형식·private 패턴 검사만**, 사용자가 허용하면 HEAD 요청으로 200 확인. |
|
|
71
|
+
| R8 PF-NO-VAGUE | 모호 형용사 슬롭이 없는가 | 모호 형용사 단독(또는 형용사 동반) 결과 문장 0건 | 확장 사전 매칭 — 한국어: `크게/대폭/현저히/많이/훨씬/확연히/눈에 띄게/유의미하게/큰 폭으로/효율적으로/안정적으로/성공적으로/원활하게/최적화/개선되었다/향상시켰다`; 영어: `significantly/greatly/substantially/dramatically/notably/seamlessly/improved/enhanced/streamlined/optimized`. 문장 분할은 `[.!?。\n]` 기준. **숫자가 있어도 형용사가 동반되면 경고**(숫자만 깔끔히 두도록 유도). |
|
|
72
|
+
| R9 PF-JD-MATCH | 대상 직무 키워드를 항목이 커버하는가 | `target_job_ids`가 있는 항목에서 직무 핵심 스킬 토큰 중 항목 텍스트 등장 비율 ≥40% | `get_application_context`의 직무 스킬 토큰 집합 ∩ 항목(`problem`+`approach`+`my_role`+`impact`) 토큰 집합 / 직무 토큰 수. 1차 ATS 게이트 신호. |
|
|
73
|
+
| R10 PF-RECENCY | 최신성 신호가 있는가 (soft) | 항목의 50% 이상이 최근 3년 내(`date` 필드 기준) | `date`/기간 필드 파싱 후 `현재연도 - year <= 3` 비율. 미충족 시 "노후 스택 감점 위험" 경고(하드 실패 아님). |
|
|
74
|
+
| R11 PF-WORDCOUNT | 항목 분량이 직군 규범 내인가 (soft) | case_study 800~1,500단어; eng README/경력기술서는 별도 하한만 적용 | `word_count` 필드(또는 토큰 카운트)로 측정. case_study가 <400(깊이 부족) 또는 >2,500(편집력 부족)이면 경고. eng/경력기술서는 산문 상한 미적용. |
|
|
75
|
+
| R12 PF-FACT-PRESERVE | 입력에 없는 수치/고유명사가 새로 생성되지 않았는가 | **자동 합격 판정 없음 — human/AI 확인 플래그(검토 필요).** | **이 체크는 순수 set-diff로 자동 통과/실패를 내지 않는다**(환산·반올림·단위변환·기술용어로 거짓양성 폭발, NER은 LLM 작업). 좁힌 결정적 검사만 수행: 사용자가 명시 입력한 `impact[].before`/`impact[].after` 필드값이 산출 텍스트에 그대로 등장하는지 literal-match. 그 외 신규 수치·고유명사는 "검토 필요" 목록으로 모아 사람/AI에게 토스. |
|
|
76
|
+
|
|
77
|
+
**주요 실패 모드:**
|
|
78
|
+
- **루브릭 측정 사기(가장 위험):** R12를 set-diff로 "0건 통과" 처리하는 것 — 거짓양성 폭탄. 반드시 확인 플래그로만 둔다.
|
|
79
|
+
- **거짓양성 카운트:** R2에서 연도·버전·인원수를 임팩트로 오인 → impact 필드로 매칭 범위를 한정하고 맨정수를 배제.
|
|
80
|
+
- **항목 경계 붕괴:** 자유 텍스트를 입력하면 R1·R4·R3가 무의미 → 반드시 구조화 레코드 전제.
|
|
81
|
+
- **한국어/직군 누락:** R8 사전이 얕거나 R1을 경력기술서에 강제하면 정상 산출물 오탐 → 사전 확장 + `item_type` 분기.
|
|
82
|
+
- **과대표현 무력화:** 팀 성과를 `solo`로 포장 → R3의 method/범위 동반 + solo 가드로 플래그.
|
|
83
|
+
|
|
84
|
+
## 4. 출처 (Provenance)
|
|
85
|
+
|
|
86
|
+
> **신뢰도 주석:** 아래 다수(uxfol.io·uxpilot.ai·hakia·icreatives·interviewmaster.ai·thecrit.co)는 **SEO 콘텐츠/도구 마케팅 블로그**로 표본·연도·방법론이 명시된 1차 채용 설문이 아니다. "hiring manager surveys"라는 라벨은 근거를 과대표현하므로 **방향성 참고용**으로만 쓰고, "톱티어 담당자가 가장 선호" 같은 단정은 피한다. STAR(The Muse)·Meta 프레임워크가 상대적으로 단단하다. (원본의 PMC7924487 role-clarity 논문 인용은 주장과 논문 사이 간극이 커 **제거**했다.)
|
|
87
|
+
|
|
88
|
+
- **uxfol.io — UX Case Study Structure & Template** — case-study 3막 구조, why 중심 서술, 분량 가이드 · https://blog.uxfol.io/ux-case-study-structure/ _(SEO 콘텐츠)_
|
|
89
|
+
- **uxpilot.ai — Product Design Portfolios Analyzed** — 깊은 케이스 우선, 결과물보다 why·정량 임팩트 · https://uxpilot.ai/blogs/product-design-portfolio-case-studies _(도구 블로그)_
|
|
90
|
+
- **icreatives — 7-Step Portfolio Review Process** — 큐레이션=편집 판단력, 제약 명시=맥락 인지 · https://www.icreatives.com/iblog/the-7-step-portfolio-review-process-every-creative-hiring-manager-needs/ _(SEO 콘텐츠)_
|
|
91
|
+
- **Hakia — Developer Portfolio Guide** — polished 소수 항목 우위, 선별의 신호 가치 · https://hakia.com/skills/building-portfolio/ _(SEO 콘텐츠)_
|
|
92
|
+
- **Flatiron School — GitHub & README best practices** — eng 규범: README·라이브 데모·실행법·깔끔한 커밋 · https://flatironschool.com/blog/github-profile-and-git-practices-for-job-seekers/
|
|
93
|
+
- **The Muse — STAR Interview Method** — Result 정량화('Numbers are always impactful'), 전후 비교 · https://www.themuse.com/advice/star-interview-method _(상대적 단단)_
|
|
94
|
+
- **Meta Analytics — DS Framework for Product Strategy** — PM/data 규범: 북극성·가드레일·진단 지표, 비즈니스 임팩트 정량화 · https://medium.com/@AnalyticsAtMeta/data-scientists-framework-for-navigating-product-strategy-as-data-leaders-2eb62b20f505 _(상대적 단단)_
|
|
95
|
+
- **interviewmaster.ai — Build a Data Science Portfolio** — data 규범: train/test 분리·복수 평가지표·A/B · https://www.interviewmaster.ai/content/how-to-build-a-data-science-portfolio-the-complete-2025-guide _(도구 블로그)_
|
|
96
|
+
- **thecrit.co — Portfolio Project Examples** — 'we'만 쓰면 개인 기여 불명확 → 역할 명확화 필요 · https://www.thecrit.co/resources/portfolio-project-examples _(SEO 콘텐츠)_
|
|
97
|
+
- **AGENTS.md (CareerMate 프라임 디렉티브)** — 사실·수치·고유명사 보존, 과장·날조 금지 · 저장소 내부
|
|
98
|
+
|
|
99
|
+
## 5. Phase B 힌트 (아키텍처로 연결)
|
|
100
|
+
|
|
101
|
+
- **MCP 도구 아이디어:**
|
|
102
|
+
- `get_portfolio_guide(role?, item_type?)` — 직군(eng/design/PM/data)·유형(case_study/repo/경력기술서)에 맞춘 3막 템플릿 + 직군별 증거 체크리스트 + 정량화 예시 + 루브릭을 반환하는 read-only 지식 도구.
|
|
103
|
+
- `save_portfolio_item(...)` — 아래 `PortfolioItem`을 **구조화 필드로 강제** 저장(자유 텍스트 금지 → 항목 경계 문제 해소, 루브릭 결정성 확보).
|
|
104
|
+
- `lint_portfolio(target_job_id?)` — R1~R12를 LLM 없이 패턴/카운트/필드-non-empty로 실행. **R12·R4·R10·R11은 pass/fail 대신 `warn` 또는 `needs_review`** 상태를 반환(자동 합격 판정 금지). `get_application_context`와 연동해 R9(직무 적합도)를 산출.
|
|
105
|
+
- **데이터 형태 힌트:**
|
|
106
|
+
```
|
|
107
|
+
PortfolioItem {
|
|
108
|
+
id, title,
|
|
109
|
+
item_type: 'case_study' | 'repo' | '경력기술서',
|
|
110
|
+
role_tag: 'solo' | 'team' | 'lead',
|
|
111
|
+
domain: 'eng' | 'design' | 'pm' | 'data' | 'other',
|
|
112
|
+
problem: string, approach: string, my_role: string,
|
|
113
|
+
impact: [{ metric, before?, after, unit, method? }], // before/after는 사용자 실측만
|
|
114
|
+
constraints: string[],
|
|
115
|
+
evidence: [{ type:'demo'|'repo'|'readme'|'figma'|'notebook'|'video', url }],
|
|
116
|
+
target_job_ids: string[],
|
|
117
|
+
date: string, // 신선도(R10)
|
|
118
|
+
word_count: int // 분량(R11)
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
루브릭 결과는 `RubricResult { checkId, status:'pass'|'fail'|'warn'|'needs_review', measured:number|string, failingItemIds:string[] }[]` 형태로, **R12와 soft 체크는 절대 `pass`를 자동 부여하지 않는다.** 모든 산출은 구조화 필드의 정규식/카운트/필드-존재 검사로 결정적으로 계산된다.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# 리크루터 스크린·지원서 사전문항 / Recruiter Screen & Application Screening — CareerMate 지식 (Phase A)
|
|
2
|
+
|
|
3
|
+
> 이 문서는 CareerMate가 **연결된 AI에게 제공(serve)** 하는 지식이다. CareerMate 안에는 LLM이 없다 — 분석·작성·검증은 연결된 AI가 수행하고, 이 플레이북·루브릭은 그 AI가 **세계 최고 수준**으로 일하도록 안내한다.
|
|
4
|
+
|
|
5
|
+
## 1. 무엇을 하는가
|
|
6
|
+
|
|
7
|
+
behavioral·technical 인터뷰 앞에 놓인 **첫 게이트**를 통과하는 도메인이다. 두 갈래로 나뉜다. (1) 비동기 자동 게이트 = 지원서 사전문항(knockout questions: 근무가능일·최소연봉·근무지·취업자격·자격증을 yes/no·단답으로 묻는 ATS 필터), (2) 동기 인간 게이트 = 15~30분 전화/화상 리크루터 스크린(지원동기·기대연봉·가용 타임라인·근무지·현재 상태 확인). 핵심 원리는 **"knockout은 정직·정확하게 통과하되 불필요한 self-knockout을 피하고, 인간 스크린에서는 정보 비대칭이 클 때만 첫 숫자를 디플렉션하면서 탈락 사유(red flag)를 제거해 다음 라운드로 넘어가는 것"**이다. 이 도메인은 숫자를 **깎는** 곳이 아니라 **탈락당하지 않는** 곳이며, 오퍼 후 협상은 salary-negotiation 도메인으로 위임한다.
|
|
8
|
+
|
|
9
|
+
## 2. 플레이북
|
|
10
|
+
|
|
11
|
+
### 원칙
|
|
12
|
+
|
|
13
|
+
- **(knockout 정직성 + self-knockout 회피)** knockout 사전문항은 반드시 정직하게, 그러나 불필요한 self-knockout을 피하도록 '현재 시점' 프레이밍으로 답하라. 단 '현재 시점 프레이밍'은 **검증 가능한 사실의 정확한 진술**에 한정되며, 사실 자체를 다르게 적는 것은 허위다. 리스크는 항목별로 다르다: 비자·자격증·학위·연차처럼 **객관·검증가능**한 항목의 허위는 합격 후 적발 시 철회 사유이고, 입사가능일·희망연봉처럼 **협상가능·주관**적 항목은 현실값+'협의 가능'으로 적는 것이 정상 절차이지 철회 리스크가 아니다. — _(출처: Duke/Buffalo/Interstride 커리어센터, HireTruffle/Recruitee)_
|
|
14
|
+
- **(비자/취업자격 2문항 분리는 US-specific)** 미국 ATS(Workday 등)의 표준 2문항 — '지금 합법적으로 일할 자격이 있는가(Q1)'와 '지금 또는 미래에 sponsorship이 필요한가(Q2)' — 은 **분리해서** 답하라. OPT/CPT/취업가능 비자 보유자는 Q1=YES, Q2는 '현재 권한 잔여기간 동안은 비용·sponsorship 불필요'로 정확히 구분한다. **이 2문항 프레임은 미국 전용이다.** UK는 CoS(Certificate of Sponsorship) 단일 문항, EU는 Blue Card, 한국은 체류자격 코드 기재 방식이라 문항 구조 자체가 다르므로 로케일에 맞게 적용하라. — _(출처: Duke/Buffalo/Interstride 1차)_
|
|
15
|
+
- **(기대연봉: 디플렉션은 정보 비대칭이 클 때만 — salary-negotiation R9 상속)** 기대연봉 문항이 **직무 정보가 충분치 않은 단계**에 나오면 디플렉션 피벗을 한 번 쓰되, **시장 정보를 충분히 확보했다면 디플렉션 대신 리서치 기반 레인지로 먼저 앵커하는 편이 낫다**. '먼저 숫자=무조건 진다'는 과일반화이며, salary-negotiation.md가 인용하는 Galinsky & Mussweiler(JPSP 2001) 실증은 정보가 충분할 때 먼저 데이터 앵커한 쪽의 결과가 더 좋음을 보인다. 디플렉션/레인지 분기와 walk-away 보호의 **전술 권위는 salary-negotiation 도메인에 있고**, 이 도메인은 그 조건부 규칙을 **상속**해 게이트 통과 맥락에만 적용한다. — _(출처: Robert Half; salary-negotiation.md R9 / Galinsky & Mussweiler 2001)_
|
|
16
|
+
- **(양식 강제 입력: 레인지 하단 또는 내규)** 양식이 숫자를 강제하면 공란·회피는 ATS 0처리·탈락을 부른다. 경력직은 '리서치된 시장 레인지의 하단 근처', 한국 신입·공채는 '회사 내규에 따름'을 적되, 본인 walk-away 미만은 절대 적지 마라. 동시에 회사 연봉테이블을 크게 초과한 희망연봉도 self-knockout이다(테이블 데이터가 없어 자동 측정 불가 → 사용자에게 직접 확인). — _(출처: Jobkorea/Superookie 한국 실무; Robert Half)_
|
|
17
|
+
- **(리크루터 스크린 = 탈락 사유 제거 라운드)** 리크루터 스크린(15~30분)은 적합도 평가가 아니라 'must-have 확인 + red flag 제거' 라운드다. 4개 축에 각 1~2문장 준비답을 만들어라: (a) 지원동기(외적 보상만이 아니라 직무·회사 리서치 근거 1개 이상), (b) 가용 타임라인/입사가능일, (c) 근무지/리로케이션/원격 선호, (d) 현재 상태·이직 사유(전 고용주 비방 금지). — _(출처: Recruitee/Pin/HireHive; SHRM Sample Interview Questions 1차)_
|
|
18
|
+
- **(이직 사유·갭은 간결+전향적)** 이직 사유와 공백은 '회피'가 아니라 '간결+전향적' 프레임으로 답하라. 전 직장·상사 비방을 피하고 사유를 '성장·역할 정렬'로 1~2문장에 담는다. 회피 자체가 은폐 의심 red flag이므로 짧고 정직하게 닫는 게 회피보다 안전하다. 백채널 레퍼런스 체크가 이직 사유를 교차검증할 수 있으므로 사실과 어긋나지 않게 한다. — _(출처: Recruitee 35 red flags; My Career GPS)_
|
|
19
|
+
- **(입사가능일: 통지기간은 법정 강제가 아님)** 입사가능일은 '협상 가능한 현실값'을 제시하라. 재직 중이면 통지기간을 반영하되 — 통지기간은 **법정 의무가 아니라** 취업규칙/계약/민법 제660조(한국)·계약상 notice period(영국·EU)·at-will 2주 관행(미국 일부)의 영향이므로 본인 계약을 기준으로 한다 — 양식엔 '협의 가능' 여지를 남긴다. 사실이 아닌 '즉시 가능'은 적지 마라. — _(출처: HireTruffle/Recruitee; 한국 표준 지원양식 '희망근무기간')_
|
|
20
|
+
- **(한국 게이트: 공채 자소서·증빙·체류자격)** 한국은 ATS knockout보다 **자사양식 필수항목 + 공채 자기소개서**가 1차 게이트다. ① 공채 자기소개서(지원동기·입사후포부·직무역량 문항, 글자수 제한, 블라인드/NCS 기반, 유사도·AI작성 필터)는 **cover-letter 도메인으로 라우팅**한다(이 도메인은 사전문항·스크린만 담당). ② 처우협의 단계의 진짜 함정은 '희망연봉 칸'이 아니라 **현재연봉 증빙(원천징수영수증) 요구**다 — 제출은 법적 의무가 아니며 거부 가능하고, 시장가 프레이밍으로 응대한다(전술 권위는 salary-negotiation). ③ 외국인은 체류자격(E7/E9/F2/F5/F6 등)을 정확히 기재하되 **본인 체류자격 확인을 전제**한다: F5(영주)는 취업 제한 거의 없음, F6(결혼이민)은 혼인관계 존속 등 유지조건·갱신 이슈가 있을 수 있고, E7은 직무 대체불가성 입증이 **고용주 측 사증 요건**이지 지원자가 양식 기재로 통과시키는 것이 아니다. — _(출처: 찾기쉬운 생활법령정보 1차; KB/IMMIKOREA; Jobkorea)_
|
|
21
|
+
- **(ATS는 가중치 스코어링일 수 있음)** 모든 knockout이 하드 yes/no=즉시 reject는 아니다. preferred(우대) 항목은 가중치 스코어링이라 한 항목 미달이 곧 탈락은 아니다. required vs preferred를 구분해 과최적화(우대 항목까지 거짓 최적화)를 피하라. — _(출처: HireTruffle knockout 가이드; 실무 ATS 운영)_
|
|
22
|
+
|
|
23
|
+
### Do
|
|
24
|
+
|
|
25
|
+
- 미국 양식의 비자 2문항을 '근무자격(Q1)'과 'sponsorship 필요(Q2, 현재 시점 기준)'로 분리해 정확히 답한다. 다른 로케일(UK CoS·EU Blue Card·한국 체류자격 코드)은 해당 양식 구조대로 답한다.
|
|
26
|
+
- 기대연봉이 직무 대화 전이면 한 번 디플렉션 피벗을 쓰고, 정보가 충분하거나 양식 강제 칸이면 리서치 기반 레인지 하단(경력직) 또는 '회사 내규에 따름'(신입·공채)을 적는다.
|
|
27
|
+
- 리크루터 스크린 전에 4축(동기·타임라인·근무지·현재상태/이직사유) 각 1~2문장 답을 미리 작성한다.
|
|
28
|
+
- 지원동기에 직무·회사 리서치 근거(제품·과제·고유명사)를 1개 이상 포함해 '외적 보상만'으로 들리지 않게 한다.
|
|
29
|
+
- 입사가능일은 본인 계약상 통지기간을 반영한 현실값+'협의 가능' 여지로 적는다.
|
|
30
|
+
- 이직 사유·갭은 짧고 전향적으로 닫고, 전 고용주·동료 비방을 절대 하지 않는다(백채널 레퍼런스 교차검증 가능성 고려).
|
|
31
|
+
- knockout 답은 항상 정직하되, 검증 가능한 사실 한정으로 '현재 시점' 프레이밍해 불필요한 self-knockout을 피한다.
|
|
32
|
+
- 한국 외국인 지원자는 체류자격(E7/E9/F2/F5/F6 등)과 직무 적격성을 양식에 정확히 기재하되 본인 체류자격을 먼저 확인한다.
|
|
33
|
+
- 현재연봉 증빙(원천징수영수증) 요구를 받으면 의무가 아님을 알고 시장가 프레이밍으로 응대한다(한국 처우협의 빈출 게이트).
|
|
34
|
+
- 스크린 말미 질문은 단계에 맞춘다: 리크루터(HR) 스크린에선 다음 단계·일정·팀 구성 같은 로지스틱스 질문 1개로 충분하고, 깊은 직무 질문은 hiring manager 라운드로 미룬다.
|
|
35
|
+
- 모든 게이트 답변을 `get_application_context`가 제공하는 프로필·`desired_conditions`·이력과 대조해 일관성을 확인한다.
|
|
36
|
+
|
|
37
|
+
### Don't
|
|
38
|
+
|
|
39
|
+
- 기대연봉 양식 칸을 공란·회피로 두기(ATS 0처리·탈락 유발).
|
|
40
|
+
- 직무 정보·시장 정보가 충분한데도 계속 숫자를 디플렉션하기('회피적'으로 읽혀 역효과 — 정보 충분 시 레인지 앵커가 낫다).
|
|
41
|
+
- 본인 walk-away 미만, 또는 회사 연봉테이블을 크게 초과한 희망연봉 적기(양방향 self-knockout).
|
|
42
|
+
- 미래에 sponsorship이 필요하다는 이유로, 현재 권한이 있는데도 미국 Q1/Q2를 뭉뚱그려 보수적으로 표시하기.
|
|
43
|
+
- 검증가능 항목(비자·자격증·학위·연차)에 허위 기재(합격 후 적발 시 철회).
|
|
44
|
+
- 사실이 아닌 '즉시 입사 가능'을 적기(통지기간 충돌로 신뢰 붕괴).
|
|
45
|
+
- 이직 사유·갭 질문을 회피하거나 얼버무리기(은폐 의심 red flag).
|
|
46
|
+
- 전 상사·회사·동료 비방하기(태도 우려로 탈락).
|
|
47
|
+
- 지원동기를 연봉·타이틀·복지 등 외적 보상만으로 설명하기.
|
|
48
|
+
- 리크루터 스크린을 협상 라운드로 착각해 오퍼 전에 숫자를 깎으려 들기(협상은 salary-negotiation 도메인).
|
|
49
|
+
- 한국 공채 자기소개서 작성을 이 도메인에서 처리하기(cover-letter 도메인으로 라우팅).
|
|
50
|
+
- 비자 2문항 프레임을 한국·UK·EU 양식에 그대로 강요하기(US-specific).
|
|
51
|
+
|
|
52
|
+
### 워크드 예시 (Before → After)
|
|
53
|
+
|
|
54
|
+
1. **Before:** (전화 스크린, 직무 설명 전) "저는 8천만 원 정도 생각하고 있습니다."
|
|
55
|
+
**After:** "역할의 범위와 책임, 팀 구성을 먼저 이해하고 싶습니다. 혹시 이 포지션에 책정된 연봉 범위를 공유해 주실 수 있을까요? 서로 정렬되는지 확인하는 데 도움이 될 것 같습니다." (양식 강제 입력이거나 이미 직무 정보가 충분하면) "시장 조사 기준으로는 7,800~9,000만 원 범위가 합리적이라고 보고 있습니다."
|
|
56
|
+
**왜 더 나은가:** 정보 비대칭이 큰 단계에서 첫 점값을 던지면 천장이 고정된다. 디플렉션으로 회사 밴드를 먼저 끌어내되, **정보가 충분하거나 양식이 강제하면** 디플렉션을 고집하지 않고 리서치 레인지(하단이 walk-away 이상)를 제시한다 — salary-negotiation의 조건부 규칙을 상속해 '회피적'으로 읽히는 역효과를 피한다.
|
|
57
|
+
|
|
58
|
+
2. **Before:** (미국 ATS, OPT 2년 잔여 F-1 학생) Q1 '합법적 근무자격 있는가?'→NO, Q2 'sponsorship 필요한가?'→YES (미래에 필요하니 둘 다 보수적으로).
|
|
59
|
+
**After:** Q1 '합법적 근무자격 있는가?'→YES (OPT 권한 보유). Q2 'sponsorship 필요한가?'→ 면접 단계면 "현재 OPT로 N개월간 추가 절차·비용 없이 근무 가능하며, 이후 H-1B로 연장될 수 있습니다"로 맥락 첨부. 양식 yes/no 강제면 정책에 맞춰 정직하게 답하되 메모 칸에 OPT 기간 명시. (이 2문항은 미국 양식에만 적용; 한국 양식이면 체류자격 코드 기재로 대체)
|
|
60
|
+
**왜 더 나은가:** 두 문항을 뭉뚱그려 보수적으로 답하면 현재 권한이 있는데도 ATS가 자동 reject 라우팅한다. Q1은 현재 OPT 권한으로 YES가 정확하고, Q2는 '현재 무비용 근무 가능' 맥락으로 self-knockout을 피하면서 미래 필요성을 정직하게 드러낸다.
|
|
61
|
+
|
|
62
|
+
3. **Before:** (리크루터 스크린 '왜 이직하려 하세요?') "지금 회사가 연봉도 짜고 팀장이 마이크로매니징이 심해서 도저히 못 버티겠어요."
|
|
63
|
+
**After:** "현재 역할에서 핵심 역량은 충분히 쌓았고, 이제 더 큰 책임과 제품 임팩트를 맡고 싶어 찾고 있습니다. 이 포지션의 데이터 플랫폼 확장 과제가 제가 다음으로 키우고 싶은 부분과 정확히 맞닿아 지원했습니다."
|
|
64
|
+
**왜 더 나은가:** 전 직장·상사 비방은 리크루터가 가장 흔히 떨어뜨리는 태도 red flag이고, 백채널 레퍼런스로 교차검증될 수 있다. 같은 동기를 전향적으로 담고 회사 리서치 근거(데이터 플랫폼 과제)를 붙이면 '외적 보상 중심 동기'와 '비방' 두 red flag를 동시에 제거한다.
|
|
65
|
+
|
|
66
|
+
## 3. 검증 루브릭 (연결된 AI가 산출물을 이 기준으로 자가검증)
|
|
67
|
+
|
|
68
|
+
> **데이터 모델 주의:** 현재 코드의 `ApplicationContext`(packages/core/src/context.ts, packages/shared/src/schemas.ts)에는 `hardGate(minYears·visaStatus·location·salaryFloor)` 정형 필드가 **없다**. 연봉·지역·근무형태는 `profile.desired_conditions`라는 **단일 자유텍스트**(schemas.ts:100·116)에만 존재한다. 따라서 walk-away·비자상태·근무지를 저장값과 1:1 수치 비교하는 검사는 자유텍스트 파싱이 필요해 **현재로선 완전한 det가 아니다([ai]/H로 강등)**. 정형 `hardGate` 4필드 신설은 Phase B 선행 의존성이다(§5). fit-matching.md와 마찬가지로 `hardGate`는 AI가 도출하는 **라벨**이지 저장된 정형 입력이 아니다.
|
|
69
|
+
|
|
70
|
+
| ID | 검사 항목 | 합격 기준 | 측정 방법(LLM 없이 셀 수 있게; 의미판단 필요시 [ai]/H 표기) |
|
|
71
|
+
|----|-----------|-----------|--------------------------------|
|
|
72
|
+
| R1 | 정보 부족 단계에서 기대연봉에 '맨숫자'를 먼저 던지지 않았는가 | 단일 점값이 아니라 디플렉션 문구 또는 min~max 레인지 형태가 존재 | [det] 텍스트에서 '범위/range/~/물결표' 또는 디플렉션 핵심구('먼저 이해/책정된 범위/공유해 주실') 패턴 존재 + 콤마·단위 붙은 단일 숫자만 단독 등장하는지 정규식 검사 |
|
|
73
|
+
| R2 | **지금이 디플렉션해도 되는 시점(정보 충분도)인가** | 정보 충분 단계인데 디플렉션만 반복하지 않음(충분 시 레인지 앵커) | [ai]/H — 채널(말 vs 양식)·정보충분도는 의미판단. det로 잴 수 없음을 정직하게 표기. 보조 [det]: 양식 강제 칸인데 디플렉션 문구만 있고 숫자/레인지 없으면 fail |
|
|
74
|
+
| R3 | 양식 기재 최소/희망연봉이 walk-away 미만이 아닌가 | 기재 숫자 >= 사용자 연봉하한 | [ai]/H(현재) — 연봉하한이 `desired_conditions` 자유텍스트에만 있어 파싱 필요. 정형 `salaryFloor` 신설 시 [det] 수치 비교(>=)로 승격 가능 |
|
|
75
|
+
| R4 | (한국 self-knockout) 희망연봉이 회사 내규를 크게 초과하지 않는가 | 내규 대비 과도 초과 아님 | **측정 불가/H** — 회사 연봉테이블 데이터가 없어 자동 측정 불가. 사용자에게 직접 확인하도록 안내 |
|
|
76
|
+
| R5 | (미국 양식) 비자 답이 Q1(근무자격)·Q2(sponsorship) 2문항으로 분리되고 권한 보유 시 Q1=YES인가 | 근무자격 1건 + sponsorship 1건 = 2개 응답 존재 | [det] 응답 개수 카운트==2(미국 로케일일 때만 적용). Q1과 비자상태 모순 룰체크는 [ai]/H(비자상태가 자유텍스트라 파싱 필요). 미래 맥락 적절성은 [ai]/H |
|
|
77
|
+
| R6 | 리크루터 스크린 준비답이 4축을 모두 커버했는가 | motivation/timeline/location/reason 4개 키 존재 | [det] 준비답 객체 키 존재 카운트 == 4 |
|
|
78
|
+
| R7 | 이직 사유·현재상태 답에 전 고용주 비방 표현이 없는가 | 비방 사전 패턴 0건 | [det] 보조 — 키워드 사전('짜다/마이크로매니징/못 버티/싫/최악/toxic/incompetent') 매칭 0건. 단 우회 단어가 많아 거짓음성 큼 → **핵심 판정은 [ai]/H** |
|
|
79
|
+
| R8 | 지원동기가 외적 보상만이 아니라 리서치 근거를 1개 이상 포함했는가 | 회사/제품/직무 고유명사·구체 과제 1개 이상, 외적보상 단독 아님 | [ai]/H — 고유명사 1토큰 카운트는 거짓양성/음성이 커 신뢰 낮음. 진정성·근거성은 의미판단 |
|
|
80
|
+
| R9 | 입사가능일이 통지기간을 반영하고 허위 '즉시'가 아닌가 | 재직 중일 때 '즉시/오늘' 단독이 아니라 통지기간 반영·'협의 가능' 존재 | [det] 보조 — 현재상태=재직이면 '즉시/오늘'만 단독 등장 시 fail, '협의/통지/N주·N개월' 존재 시 pass(현재상태가 자유텍스트면 [ai]/H) |
|
|
81
|
+
| R10 | 산출물이 로케일에 맞는 항목·관행을 적용했는가 | 한국: 병역/취업자격/내규연봉/증빙 반영; 미국: 비자 2문항/ATS; UK/EU: CoS/Blue Card — 해당 마커 1개 이상 | [det] 로케일 플래그별 기대 항목 키 존재 카운트>=1 |
|
|
82
|
+
| R11 | 한국 공채 자기소개서를 이 도메인에서 작성하지 않고 cover-letter로 라우팅했는가 | 자소서 본문 생성 0건, 라우팅 안내 존재 | [det] 산출물에 자소서 장문 본문 부재 + 'cover-letter 도메인' 라우팅 마커 존재 여부 |
|
|
83
|
+
|
|
84
|
+
**주요 실패 모드:**
|
|
85
|
+
- **데이터 모델 허구화** — `hardGate` 정형 필드가 있다고 가정하고 det 검사를 돌리면 비교 대상이 없어 무조건 통과/오류. 정형 필드 신설 전까지 R3·R5·R9의 저장값 비교는 [ai]/H다.
|
|
86
|
+
- **인접 도메인 충돌** — '먼저 숫자=무조건 진다'로 후퇴해 salary-negotiation의 조건부 규칙(정보 충분 시 앵커)과 모순되는 조언을 내는 것. 디플렉션/레인지 분기는 salary-negotiation에 위임된 단일 권위를 따른다.
|
|
87
|
+
- **로케일 일반화** — 미국 비자 2문항을 한국/UK/EU에 강요하거나, 한국 통지기간·증빙·자소서 게이트를 빠뜨리는 것.
|
|
88
|
+
- **det 가장(假裝)** — 비방 사전·고유명사 토큰·정보충분도를 det처럼 제시. R2·R4·R7·R8은 핵심 판정이 [ai]/H임을 정직하게 표기해야 한다.
|
|
89
|
+
|
|
90
|
+
## 4. 출처 (Provenance)
|
|
91
|
+
|
|
92
|
+
- **SHRM 2025 Talent Acquisition Benchmarking & Sample Interview Questions** — 리크루터 스크린 표준 질문셋(1차). '공고당 평균 250 지원·knockout 40%+ 자동 탈락' 수치는 **단일 출처·산업/문항수 의존이 커 인과가 아닌 방향성 신호로만** 차용(fit-matching의 TalentWorks 60% 강등과 동일 취급). https://www.shrm.org/topics-tools/tools/interview-questions
|
|
93
|
+
- **Robert Half — "What's Your Expected Salary?" (2026 Salary Guide 연계)** — 디플렉션 피벗·레인지 vs 디플렉션 분기·리서치 앵커링(2차/벤더, 실무 신뢰). https://www.roberthalf.com/us/en/insights/career-development/how-to-answer-whats-your-expected-salary
|
|
94
|
+
- **Duke / University at Buffalo / Interstride — Work Authorization & Sponsorship 가이드** — 미국 비자 2문항 분리 로직(F-1/OPT/CPT는 Q1=YES, Q2는 현재 무비용 프레이밍), 정직성 원칙(1차/대학 커리어센터). https://careerhub.students.duke.edu/blog/2025/10/03/how-to-answer-will-you-now-or-in-the-future-require-sponsorship-to-work-in-the-us-2/
|
|
95
|
+
- **Recruitee / Pin / HireHive / My Career GPS — 리크루터 스크린 구조·red flag** — 15~30분 구조, 평가 4축, 대표 red flag(외적보상 동기·질문회피·갭은폐·비방)(2차/벤더, 실무). https://recruitee.com/blog/interview-red-flags
|
|
96
|
+
- **HireTruffle / Recruitee — Knockout Questions in Hiring** — knockout 정의(yes/no·자동 reject 라우팅), required vs preferred 가중치 스코어링(2차/벤더). https://www.hiretruffle.com/blog/knockout-questions
|
|
97
|
+
- **Jobkorea / Superookie — 이력서 희망연봉·자사양식·증빙 가이드** — 한국 '회사 내규에 따름' 기본값, 내규 초과 self-knockout, '희망근무기간' 필수항목, 원천징수영수증 요구(2차/한국 실무). https://www.jobkorea.co.kr/goodjob/tip/view?News_No=19603
|
|
98
|
+
- **찾기쉬운 생활법령정보 / KB·IMMIKOREA — 외국인 취업·체류자격(E7/E9/F계열)** — 한국 외국인 채용 게이트=체류자격 적격성; F5는 취업 거의 무제한, F6은 유지조건 존재, E7 대체불가성은 고용주 측 사증 요건(1차/정부 법령·2차/행정사). https://easylaw.go.kr/CSP/CnpClsMain.laf?popMenu=ov&csmSeq=3&ccfNo=1&cciNo=1&cnpClsNo=1
|
|
99
|
+
- **salary-negotiation.md (CareerMate 인접 도메인) / Galinsky & Mussweiler (JPSP 2001)** — 디플렉션/레인지/walk-away 전술의 **단일 권위 출처**. 정보 충분 시 먼저 앵커가 유리하다는 실증(1차/피어리뷰 + 내부 도메인 위임). (저장소 내부: docs/career-os/knowledge/salary-negotiation.md)
|
|
100
|
+
|
|
101
|
+
## 5. Phase B 힌트 (아키텍처로 연결)
|
|
102
|
+
|
|
103
|
+
- **선행 의존성(필수):** 이 도메인의 det 루브릭(R3·R5·R9·R10)이 실제로 작동하려면, 현재 `profile.desired_conditions` 단일 자유텍스트(schemas.ts:100)에 묻혀 있는 게이트 입력을 **정형 `hardGate { minYears, visaStatus, location, salaryFloor }`로 신설**하고 `ApplicationContext`에 추가하는 작업이 선행되어야 한다. 그 전까지 이 검사들은 [ai]/H(자유텍스트 파싱)다. 이 신설은 fit-matching 도메인의 hardGate **라벨**과 의미가 다르므로(여기선 저장 입력), 단일 출처화 시 이름 충돌을 정리해야 한다.
|
|
104
|
+
- **MCP 도구 아이디어:** `get_screening_kit(job_id)` — 대상 공고와 프로필을 받아 (a) 그 공고의 knockout 사전문항 체크리스트(근무가능일·최소연봉·근무지·취업자격·자격증)를 채워 반환하고(정형 hardGate 신설 후 대조), (b) 리크루터 스크린 4축(동기·타임라인·근무지·이직사유) 준비답 슬롯과 기대연봉 스크립트를 **로케일(KR/US/UK/EU)별**로 serve한다. 디플렉션/레인지 결정은 salary-negotiation 도메인 로직을 **호출/위임**해 중복·충돌을 막는다. 보조로 `save_screening_answers(job_id, answers)`로 저장하고, `validate_screening(job_id)`로 **det 가능 항목만**(4축 키 개수·비방 사전·재직 시 '즉시' 단독·미국 비자 2응답 개수·로케일 마커) 룰체크하며, 저장값 비교가 필요한 항목은 정형 hardGate 신설 전까지 'H(수동 확인)'로 표시한다.
|
|
105
|
+
- **데이터 형태 힌트:** `ScreeningKit { jobId, locale: 'KR'|'US'|'UK'|'EU', hardGate?: { minYears, visaStatus, location, salaryFloor }, knockout: [{ field, prompt, suggestedAnswer, sourceFromHardGate: bool, honestyRisk: 'objective'|'negotiable' }], salaryScript: { mode: 'deflect'|'range'|'company_policy', deflectionPivot?, rangeLow?, rangeHigh?, delegatedTo: 'salary-negotiation' }, screenAxes: { motivation, timeline, location, reasonForLeaving }, routing: { coverLetterToCoverLetterDomain: bool }, validation: { detViolations: [{ checkId, detail }], manualChecks: [{ checkId, reason }] } }`. `hardGate`는 신설 전까지 옵셔널이며, `honestyRisk`로 객관/협상가능 항목의 철회 리스크를 구분한다. answers는 application 레코드에 묶여 8단계 상태('planned→applied' 전환 직전 게이트)의 스냅샷으로 저장한다.
|