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.
- package/AGENTS.md +11 -7
- package/INSTALL.md +18 -16
- package/README.md +28 -26
- package/THIRD_PARTY_NOTICES.md +2 -3
- package/bin/careermate.mjs +8 -1
- package/dist/career-os/README.md +8 -3
- package/dist/career-os/eop/career-description.md +136 -0
- package/dist/career-os/eop/cover-letter.md +7 -5
- package/dist/career-os/eop/fit-analysis.md +15 -5
- package/dist/career-os/eop/interview-prep.md +209 -21
- package/dist/career-os/eop/job-analysis.md +5 -3
- package/dist/career-os/eop/profile-extraction.md +5 -4
- package/dist/career-os/knowledge/cover-letter.md +4 -4
- package/dist/career-os/knowledge/fit-matching.md +8 -8
- package/dist/career-os/knowledge/interview-behavioral.md +76 -8
- package/dist/career-os/knowledge/interview-technical.md +106 -4
- package/dist/career-os/knowledge/linkedin-profile.md +1 -1
- package/dist/career-os/knowledge/networking-referrals.md +1 -1
- package/dist/career-os/knowledge/offer-evaluation-decision.md +10 -10
- package/dist/career-os/knowledge/portfolio.md +3 -3
- package/dist/career-os/knowledge/verifiers/ats-compat.md +8 -4
- package/dist/career-os/knowledge/verifiers/human-voice.md +2 -2
- package/dist/career-os/knowledge/verifiers/recency-staleness.md +1 -1
- package/dist/career-os/knowledge/verifiers/responsiveness-on-target.md +2 -2
- package/dist/career-os/knowledge/verifiers/truthfulness.md +1 -1
- package/dist/doctor.mjs +1019 -127
- package/dist/mcp.mjs +1036 -126
- package/dist/migrate.mjs +52 -1
- package/dist/public/app.js +42 -16
- package/dist/public/i18n/en/applications.js +23 -0
- package/dist/public/i18n/en/common.js +22 -0
- package/dist/public/i18n/en/documents.js +133 -0
- package/dist/public/i18n/en/home.js +75 -0
- package/dist/public/i18n/en/interview.js +69 -0
- package/dist/public/i18n/en/jobs.js +152 -0
- package/dist/public/i18n/en/nav.js +18 -0
- package/dist/public/i18n/en/profile.js +201 -0
- package/dist/public/i18n/en/settings.js +127 -0
- package/dist/public/i18n/en/status.js +22 -0
- package/dist/public/i18n/en.js +17 -0
- package/dist/public/i18n/ko/applications.js +23 -0
- package/dist/public/i18n/ko/common.js +22 -0
- package/dist/public/i18n/ko/documents.js +133 -0
- package/dist/public/i18n/ko/home.js +63 -0
- package/dist/public/i18n/ko/interview.js +69 -0
- package/dist/public/i18n/ko/jobs.js +152 -0
- package/dist/public/i18n/ko/nav.js +18 -0
- package/dist/public/i18n/ko/profile.js +201 -0
- package/dist/public/i18n/ko/settings.js +127 -0
- package/dist/public/i18n/ko/status.js +23 -0
- package/dist/public/i18n/ko.js +18 -0
- package/dist/public/i18n.js +55 -0
- package/dist/public/index.html +1 -0
- package/dist/public/lib.js +25 -17
- package/dist/public/pages/applications.js +17 -21
- package/dist/public/pages/documents.js +153 -107
- package/dist/public/pages/home.js +88 -53
- package/dist/public/pages/interview.js +105 -51
- package/dist/public/pages/jobs.js +330 -106
- package/dist/public/pages/profile.js +157 -152
- package/dist/public/pages/settings.js +270 -72
- package/dist/public/styles.css +38 -3
- package/dist/web.mjs +859 -103
- package/docs/FAQ.md +26 -5
- package/docs/MCP_TOOLS.md +26 -12
- package/docs/START_WORKFLOW.md +2 -2
- package/docs/SUPPORTED_AI_APPS.md +13 -0
- package/docs/WORKFLOWS.md +80 -23
- package/docs/career-os/README.md +8 -3
- package/docs/career-os/eop/career-description.md +136 -0
- package/docs/career-os/eop/cover-letter.md +7 -5
- package/docs/career-os/eop/fit-analysis.md +15 -5
- package/docs/career-os/eop/interview-prep.md +209 -21
- package/docs/career-os/eop/job-analysis.md +5 -3
- package/docs/career-os/eop/profile-extraction.md +5 -4
- package/docs/career-os/knowledge/cover-letter.md +4 -4
- package/docs/career-os/knowledge/fit-matching.md +8 -8
- package/docs/career-os/knowledge/interview-behavioral.md +76 -8
- package/docs/career-os/knowledge/interview-technical.md +106 -4
- package/docs/career-os/knowledge/linkedin-profile.md +1 -1
- package/docs/career-os/knowledge/networking-referrals.md +1 -1
- package/docs/career-os/knowledge/offer-evaluation-decision.md +10 -10
- package/docs/career-os/knowledge/portfolio.md +3 -3
- package/docs/career-os/knowledge/verifiers/ats-compat.md +8 -4
- package/docs/career-os/knowledge/verifiers/human-voice.md +2 -2
- package/docs/career-os/knowledge/verifiers/recency-staleness.md +1 -1
- package/docs/career-os/knowledge/verifiers/responsiveness-on-target.md +2 -2
- package/docs/career-os/knowledge/verifiers/truthfulness.md +1 -1
- package/package.json +2 -2
- package/packages/core/src/onboarding.ts +2 -1
- package/packages/core/src/services.ts +138 -21
- package/packages/core/src/summary.ts +59 -1
- package/packages/core/src/verify/lint.ts +4 -0
- package/packages/db/src/index.ts +1 -0
- package/packages/db/src/repositories.ts +0 -0
- package/packages/db/src/schema.ts +17 -0
- package/packages/exporters/src/index.ts +28 -17
- package/packages/knowledge/src/index.ts +46 -7
- package/packages/mcp-tools/src/bridge.ts +194 -13
- package/packages/mcp-tools/src/tools.ts +390 -38
- package/packages/mcp-tools/src/update.ts +31 -16
- package/packages/parsers/src/documents.ts +12 -1
- package/packages/prompts/src/humanize.ts +46 -0
- package/packages/prompts/src/index.ts +5 -1
- package/packages/prompts/src/install.ts +4 -4
- package/packages/prompts/src/onboarding.ts +4 -4
- package/packages/prompts/src/system.ts +17 -8
- package/packages/shared/src/enums.ts +14 -4
- package/packages/shared/src/schemas.ts +41 -0
- package/packages/workflows/src/definitions.ts +47 -10
- package/scripts/init.ts +284 -13
- package/dist/site/analytics.js +0 -97
- package/dist/site/favicon.svg +0 -1
- 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 +0 -565
- package/dist/site/landing.js +0 -54
- package/dist/site/llms-install.txt +0 -218
- package/dist/site/robots.txt +0 -4
- package/dist/site/sitemap.xml +0 -21
- package/dist/site/start.html +0 -353
- package/dist/site/style.css +0 -559
- package/dist/site/vercel.json +0 -20
package/docs/FAQ.md
CHANGED
|
@@ -6,6 +6,20 @@
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
+
## ์์ํ๊ธฐ ์ ์
|
|
10
|
+
|
|
11
|
+
### ๋์ด ๋๋์? API ํค๊ฐ ํ์ํ๊ฐ์?
|
|
12
|
+
CareerMate ์์ฒด๋ **๋ฌด๋ฃยท์คํ์์ค**์ด๊ณ , ๋ด๋ถ์ LLM์ด ์์ด **๋ณ๋ API ํค๊ฐ ํ์ ์์ต๋๋ค.**
|
|
13
|
+
๋ถ์ยท์์ฑ์ ์ด๋ฏธ ์ฐ๊ณ ์๋ AI ๊ตฌ๋
(Claude ๋ฑ)์ด ๊ทธ๋๋ก ์ํํ๊ณ , CareerMate๋ ์ปค๋ฆฌ์ด
|
|
14
|
+
๋ฐ์ดํฐ๋ฅผ ๋ก์ปฌ์ ์ ์ฅยท์ ๊ณตํ๋ "์๋์ฅ" ์ญํ ๋ง ํฉ๋๋ค.
|
|
15
|
+
|
|
16
|
+
### ์ด๋ป๊ฒ ์
๋ฐ์ดํธํ๋์?
|
|
17
|
+
AI์๊ฒ **"CareerMate ์
๋ฐ์ดํธํด์ค"**(`update_careermate`)๋ผ๊ณ ํ๋ฉด ์ต์ ๋ฒ์ ์ผ๋ก ์ฌ๋ฆฝ๋๋ค.
|
|
18
|
+
ํ์ธ๋ง ํ๋ ค๋ฉด "์ต์ ์ด์ผ?"(`check_for_update`). ์
๋ฐ์ดํธ ํ์๋ AI ์ฑ ๋๋ MCP ์ฐ๊ฒฐ์
|
|
19
|
+
**์ฌ์์**ํด ์ฃผ์ธ์.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
9
23
|
## ์ค์น / ์ฐ๊ฒฐ
|
|
10
24
|
|
|
11
25
|
### "MCP ๋๊ตฌ๊ฐ ์ ๋ณด์ฌ์" / AI๊ฐ CareerMate๋ฅผ ๋ชจ๋ฆ
๋๋ค
|
|
@@ -32,10 +46,11 @@ CareerMate๋ **Node.js 22.5.0 ์ด์**์ด ํ์ํฉ๋๋ค(`node:sqlite` ์ฌ์ฉ)
|
|
|
32
46
|
## ๋์๋ณด๋
|
|
33
47
|
|
|
34
48
|
### "๋์๋ณด๋๊ฐ ์ ์ด๋ ค์" (`http://127.0.0.1:4319`)
|
|
35
|
-
- ๊ทธ ์ฃผ์๋ **CareerMate๊ฐ ์คํ ์ค์ผ ๋๋ง** ์ด๋ฆฝ๋๋ค. AI์๊ฒ
|
|
36
|
-
์๋ฒ๊ฐ
|
|
49
|
+
- ๊ทธ ์ฃผ์๋ **CareerMate๊ฐ ์คํ ์ค์ผ ๋๋ง** ์ด๋ฆฝ๋๋ค. AI์๊ฒ **"๋์๋ณด๋ ์ด์ด์ค"** ๋ผ๊ณ ํ๋ฉด
|
|
50
|
+
์๋ฒ๊ฐ ๊บผ์ ธ ์์ ๋๋ ๋ฐฑ๊ทธ๋ผ์ด๋๋ก ์๋ ์์ํ ๋ค ๋ธ๋ผ์ฐ์ ๋ฅผ ์ฝ๋๋ค.
|
|
37
51
|
- **ํฌํธ๊ฐ ์ด๋ฏธ ์ฌ์ฉ ์ค**์ด๋ฉด ์๋์ผ๋ก ๋ค๋ฅธ ํฌํธ๋ก ํด๋ฐฑํฉ๋๋ค. ํ๊ฒฝ๋ณ์
|
|
38
52
|
`CAREERMATE_PORT`๋ก ๊ณ ์ ํ ์ ์์ต๋๋ค.
|
|
53
|
+
- ์๋ ์์์ด ์คํจํ๋ฉด `~/.careermate/server.log`๋ฅผ ํ์ธํ์ธ์.
|
|
39
54
|
- ๋์๋ณด๋๋ ๋ณด์์ **`127.0.0.1`(์ด ์ปดํจํฐ)** ์๋ง ์ด๋ฆฝ๋๋ค. ๋ค๋ฅธ ๊ธฐ๊ธฐ์์๋ ์ ์๋์ง
|
|
40
55
|
์์ต๋๋ค(์๋๋ ๋์).
|
|
41
56
|
|
|
@@ -77,9 +92,15 @@ AI์๊ฒ "์ด ๊ณต๊ณ ์ ์ฅํ๊ณ ๋ถ์ํด์ค"๋ผ๊ณ ํ๋ฉด์ URL์ด๋ ๋ณธ๋ฌธ
|
|
|
77
92
|
- AI์๊ฒ "๋ถ์ ์ ์ application context๋ถํฐ ๋ถ๋ฌ์์ค"๋ผ๊ณ ํ๋ฉด ํ๋กํยท์ด๋ ฅ์ยท๊ณต๊ณ ๋ฅผ ํ ๋ฒ์
|
|
78
93
|
๋ชจ์ ๋ถ์ ๋งฅ๋ฝ์ ๊ฐ์ถฅ๋๋ค.
|
|
79
94
|
|
|
80
|
-
### ๋ฉด์
|
|
81
|
-
|
|
82
|
-
|
|
95
|
+
### ๋ฉด์ ์ค๋น๋ ์ธ์ ๋ง๋ค ์ ์๋์
|
|
96
|
+
๊ณต๊ณ ๊ฐ ์ ์ฅ๋์ด ์์ผ๋ฉด AI์๊ฒ ๋ฉด์ ์ค๋น๋ฅผ ์์ฒญํด ์ ์ฅํ ์ ์์ต๋๋ค. ๋ค๋ง ์ง์ ์ํ๊ฐ
|
|
97
|
+
**'์๋ฅ ํฉ๊ฒฉ(document_passed)' ์ด์**์ด ๋๋ฉด ๋์๋ณด๋๊ฐ ๋ฉด์ ์ค๋น๋ฅผ ๋ค์ ํ๋์ผ๋ก ๋ ์ ๊ทน์ ์ผ๋ก ์ ์ํฉ๋๋ค.
|
|
98
|
+
|
|
99
|
+
### ์ด๋ ฅ์ยท์์์๋ฅผ ํ์ผ๋ก ๋ฐ์ ์ ์๋์?
|
|
100
|
+
๋ค. AI์๊ฒ **"์ด๋ ฅ์ ํ์ผ๋ก ๋ด๋ณด๋ด์ค"**(๋๋ ์์์/ํ๋กํ)๋ผ๊ณ ํ๋ฉด
|
|
101
|
+
`~/.careermate/exports`์ **Markdown** ๋๋ **์ธ์์ฉ HTML**(๋ธ๋ผ์ฐ์ ์์ "์ธ์ โ PDF๋ก ์ ์ฅ")๋ก
|
|
102
|
+
์ ์ฅ๋ฉ๋๋ค(`export_resume`/`export_profile`/`export_cover_letter`). ๋์๋ณด๋ **๋ฌธ์ยทํ๋กํ
|
|
103
|
+
ํ์ด์ง**์์ ๋ฒํผ์ผ๋ก ์ง์ ๋ค์ด๋ก๋ํ ์๋ ์์ต๋๋ค.
|
|
83
104
|
|
|
84
105
|
---
|
|
85
106
|
|
package/docs/MCP_TOOLS.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
CareerMate๋ **MCP-์ฐ์ ** ๋ก์ปฌ ์ปค๋ฆฌ์ด ๊ด๋ฆฌ ๋๊ตฌ์
๋๋ค. ์ฌ์ฉ์๋ ์์ ์ ChatGPT/Claude/Gemini์ ๋ํํ๊ณ , ๊ทธ AI๊ฐ ์ฌ๊ธฐ ์ ์๋ MCP ๋๊ตฌ๋ฅผ ํธ์ถํด ๋ก์ปฌ ์ปค๋ฆฌ์ด DB(`~/.careermate/careermate.sqlite`)๋ฅผ ์ฝ๊ณ ์๋๋ค. **CareerMate ๋ด๋ถ์๋ LLM์ด ์์ต๋๋ค.** ์ ํฉ๋ ๋ถ์ยท์๊ธฐ์๊ฐ์ ์์ฑ ๊ฐ์ ์ถ๋ก ์ ๋ชจ๋ ์ฌ์ฉ์์ AI๊ฐ ์ํํ๊ณ , CareerMate๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ค์ ๋๋ ค์ฃผ๋ ์ญํ ๋ง ํฉ๋๋ค.
|
|
4
4
|
|
|
5
|
-
์ด ๋ฌธ์๋ `packages/mcp-tools/src/tools.ts`์ ์ ์๋ ์ปค๋ฆฌ์ด ์ํฌํ๋ก
|
|
5
|
+
์ด ๋ฌธ์๋ `packages/mcp-tools/src/tools.ts`์ ์ ์๋ ์ปค๋ฆฌ์ด ์ํฌํ๋ก **๋๊ตฌ**์ ๋ ํผ๋ฐ์ค์
๋๋ค. ๋๊ตฌ์ ์
๋ ฅ ํ๋ผ๋ฏธํฐ๋ `packages/shared/src/schemas.ts`์ zod ์คํค๋ง์ ์ผ์นํฉ๋๋ค.
|
|
6
6
|
|
|
7
7
|
> ์ค๊ณ ์์น: ์ด ๋๊ตฌ๋ค์ ๋จ์ CRUD ๋ํผ๊ฐ ์๋๋๋ค. ๊ฐ ๋๊ตฌ๋ AI๊ฐ ์ฌ์ฉ์๋ฅผ ๋์ ํด ์ํํ๋ ์ค์ ์์
์ ๋์ํ๋ฉฐ, ์ค๋ช
์ *์ธ์ * ๊ทธ๋ฆฌ๊ณ *์ด๋ป๊ฒ* ํธ์ถํด์ผ ํ๋์ง๊ฐ ๋ด๊ฒจ ์์ต๋๋ค. ๊ฐ์ฅ ์ค์ํ ๋๊ตฌ๋ [`get_application_context`](#get_application_context-) ์
๋๋ค.
|
|
8
8
|
|
|
@@ -16,7 +16,7 @@ CareerMate๋ **MCP-์ฐ์ ** ๋ก์ปฌ ์ปค๋ฆฌ์ด ๊ด๋ฆฌ ๋๊ตฌ์
๋๋ค. ์ฌ์ฉ์
|
|
|
16
16
|
|
|
17
17
|
| ์ฝ๊ธฐ์ ์ฉ(โ
) ๋๊ตฌ | ์ฐ๊ธฐ/๋ถ์ํจ๊ณผ(โ๏ธ) ๋๊ตฌ |
|
|
18
18
|
| --- | --- |
|
|
19
|
-
| `read_document`, `read_inbox`, `get_onboarding_status`, `get_profile`, `get_resumes`, `get_experiences`, `get_projects`, `get_skills`, `get_cover_letters`, `get_job_posting`, `list_jobs`, `get_application_context`, `list_recent_activity`, `get_workflow_guide`, `get_playbook`, `get_verifier`, `validate_cover_letter`, `get_writing_style_guide`, `check_for_update` | `open_inbox`, `save_profile`, `add_resume`, `add_experience`, `add_project`, `add_skill`, `save_cover_letter_version`, `set_verify_mode`, `save_job_posting`, `save_fit_analysis`, `update_application_status`, `save_interview_prep`, `export_cover_letter`, `open_dashboard`, `open_application`, `update_careermate` |
|
|
19
|
+
| `read_document`, `read_inbox`, `get_onboarding_status`, `get_profile`, `get_resumes`, `get_experiences`, `get_projects`, `get_skills`, `get_cover_letters`, `get_job_posting`, `list_jobs`, `get_application_context`, `list_recent_activity`, `get_workflow_guide`, `get_playbook`, `get_verifier`, `validate_cover_letter`, `get_writing_style_guide`, `check_for_update` | `open_inbox`, `save_profile`, `add_resume`, `delete_resume`, `add_experience`, `delete_experience`, `add_project`, `delete_project`, `add_skill`, `delete_skill`, `save_cover_letter_version`, `delete_cover_letter`, `set_verify_mode`, `save_job_posting`, `delete_job_posting`, `save_fit_analysis`, `update_application_status`, `save_interview_prep`, `export_cover_letter`, `export_resume`, `export_profile`, `open_dashboard`, `open_application`, `update_careermate` |
|
|
20
20
|
|
|
21
21
|
---
|
|
22
22
|
|
|
@@ -35,16 +35,16 @@ CareerMate๋ **MCP-์ฐ์ ** ๋ก์ปฌ ์ปค๋ฆฌ์ด ๊ด๋ฆฌ ๋๊ตฌ์
๋๋ค. ์ฌ์ฉ์
|
|
|
35
35
|
|
|
36
36
|
## 0-1. ์ธ์
ํด๋ (Inbox)
|
|
37
37
|
|
|
38
|
-
CLI ํด๋ผ์ด์ธํธ(Claude CodeยทCodex ๋ฑ)๋ ํ์ผ ์ฒจ๋ถ๊ฐ ์ ๋๋ฏ๋ก, ์ฌ์ฉ์๊ฐ ๊ธฐ์กด
|
|
38
|
+
CLI ํด๋ผ์ด์ธํธ(Claude CodeยทCodex ๋ฑ)๋ ํ์ผ ์ฒจ๋ถ๊ฐ ์ ๋๋ฏ๋ก, ์ฌ์ฉ์๊ฐ ๊ธฐ์กด ์ด๋ ฅ์ยท๊ฒฝ๋ ฅ๊ธฐ์ ์ยทํฌํธํด๋ฆฌ์คยท์๊ธฐ์๊ฐ์ ํ์ผ์ ๋์ด๋ค ๋ฃ์ ์ ์๋ ๋ก์ปฌ ์ธ์
ํด๋(`~/.careermate/inbox`)๋ฅผ ๋๊ณ ๊ทธ ์์ ํ์ผ์ ์ฝ์ต๋๋ค. ์ฌ์ฉ์๊ฐ ํ์ผ **๊ฒฝ๋ก**๋ฅผ ์ง์ ์๋ ค์ฃผ๋ ๊ฒฝ์ฐ์๋ ์ธ์
ํด๋ ๋์ `read_document`๋ฅผ ์ฐ์ธ์.
|
|
39
39
|
|
|
40
40
|
| ๋๊ตฌ | ๋ชฉ์ | ์ฃผ์ ์
๋ ฅ | ๋ฐํ | ์ธ์ ํธ์ถ | ์ฝ๊ธฐ์ ์ฉ |
|
|
41
41
|
| --- | --- | --- | --- | --- | --- |
|
|
42
|
-
| `open_inbox` | ์ธ์
ํด๋(`~/.careermate/inbox`)๋ฅผ ๋ณด์ฅํ๊ณ ํ์ผ ํ์๊ธฐ๋ก ์ด๊ธฐ + ํ์ฌ ๋ค์ด ์๋ ํ์ผ ๋ชฉ๋ก ๋ฐํ | ์์ | `{ dir, files[] }` | ์จ๋ณด๋ฉ์์ ์ฌ์ฉ์๊ฐ "๊ธฐ์กด์ ์์ฑํด ๋
|
|
42
|
+
| `open_inbox` | ์ธ์
ํด๋(`~/.careermate/inbox`)๋ฅผ ๋ณด์ฅํ๊ณ ํ์ผ ํ์๊ธฐ๋ก ์ด๊ธฐ + ํ์ฌ ๋ค์ด ์๋ ํ์ผ ๋ชฉ๋ก ๋ฐํ | ์์ | `{ dir, files[] }` | ์จ๋ณด๋ฉ์์ ์ฌ์ฉ์๊ฐ "๊ธฐ์กด์ ์์ฑํด ๋ ๋ฌธ์ ํ์ผ์ด ์๋ค"๊ณ ๋ตํ์ ๋๋ง(๋ฌป์ง ์๊ณ ์๋์ผ๋ก ์ด์ง ๋ง์ธ์) | โ๏ธ |
|
|
43
43
|
| `read_inbox` | ์ธ์
ํด๋์ ๋ฃ์ด ๋ ๋ฌธ์๋ค์ ๋ณธ๋ฌธ์ ํ ๋ฒ์ ์ถ์ถํด ๋ฐํ | `filename?`(๋์๋ฌธ์ ๋ฌด์, ์๋ต ์ ์ ์ฒด), `max_chars?`(ํ์ผ๋ณ ๊ธฐ๋ณธ 20000์) | `{ dir, files[] }`(๊ฐ `{ filename, path, format, unsupported, truncated, warnings[], text }`) | `open_inbox`๋ก ์๋ดํ ๋ค ์ฌ์ฉ์๊ฐ "๋ค ๋ฃ์์ด"๋ผ๊ณ ํ ๋ | โ
|
|
|
44
44
|
|
|
45
45
|
- `open_inbox`๋ ํด๋๋ฅผ ์ด๊ธฐ๋ง ํฉ๋๋ค. ์ฌ์ฉ์๊ฐ ํ์ผ์ ๋ค ๋ฃ์๋ค๊ณ ํ๋ฉด `read_inbox`๋ก ๋ณธ๋ฌธ์ ์ฝ์ผ์ธ์.
|
|
46
46
|
- `docx`/`hwp`/`hwpx`/ํ
์คํธ๋ ํ
์คํธ๋ฅผ ์ถ์ถํ๊ณ , **`pdf`ยท์ด๋ฏธ์ง๋ ์ถ์ถํ์ง ์๊ณ ํ์ผ ๊ฒฝ๋ก๋ง** ๋๋ ค์ฃผ๋(`unsupported`) AI ํด๋ผ์ด์ธํธ์ ํ์ผ ์ฝ๊ธฐ ๊ธฐ๋ฅ์ผ๋ก ๊ทธ ๊ฒฝ๋ก๋ฅผ ์ง์ ์ด์ด ์ฝ์ผ์ธ์.
|
|
47
|
-
- ์ฝ์ ๋ด์ฉ์ ๊ทธ๋๋ก ์ ํ์ผ๋ก ๋ค์ ์ฐ์ง ๋ง๊ณ , ๊ตฌ์กฐํํด `save_profile
|
|
47
|
+
- ์ฝ์ ๋ด์ฉ์ ๊ทธ๋๋ก ์ ํ์ผ๋ก ๋ค์ ์ฐ์ง ๋ง๊ณ , ๊ตฌ์กฐํํด ํ๋กํ์ `save_profile`, ์ด๋ ฅ์ยท๊ฒฝ๋ ฅ๊ธฐ์ ์ยทํฌํธํด๋ฆฌ์ค๋ `add_resume`, ๊ธฐ์กด ์๊ธฐ์๊ฐ์๋ `save_cover_letter_version`์ผ๋ก ์ ์ฅํ์ธ์.
|
|
48
48
|
- ์๋ต ํญ๋ฐ์ ๋ง๊ธฐ ์ํด ํ์ผ๋ณ ๋ณธ๋ฌธ์ `max_chars`(๊ธฐ๋ณธ 20000์)๋ก ์๋ผ์ ๋๋ ค์ฃผ๋ฉฐ, ์๋ฆฐ ๊ฒฝ์ฐ `truncated: true`๋ก ํ์ํฉ๋๋ค.
|
|
49
49
|
|
|
50
50
|
---
|
|
@@ -85,6 +85,7 @@ AI ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋๋ฉด ์ด ๋๊ตฌ๋ฅผ ๊ฐ์ฅ ๋จผ์ ํธ์ถํด ์ํ
|
|
|
85
85
|
| --- | --- | --- | --- | --- | --- |
|
|
86
86
|
| `add_resume` | ์ด๋ ฅ์ยท๊ฒฝ๋ ฅ๊ธฐ์ ์ยทํฌํธํด๋ฆฌ์ค ๋ฑ ๋ฌธ์ ์ ์ฅ | `title`, `content`(ํ์), `kind?`, `source?`, `is_primary?`, `tags?` | ์ ์ฅ๋ `DocumentRecord` | ์ฌ์ฉ์๊ฐ ์
๋ก๋/๋ถ์ฌ๋ฃ์ ํ
์คํธ(๋๋ ์ ๋ฆฌํ Markdown)๋ฅผ ๋ณด๊ดํ ๋ | โ๏ธ |
|
|
87
87
|
| `get_resumes` | ์ ์ฅ๋ ๋ฌธ์ ์กฐํ(์ข
๋ฅ ํํฐ ๊ฐ๋ฅ) | `kind?` | `DocumentRecord[]` | ์ ์ฅ๋ ์ด๋ ฅ์/๋ฌธ์๋ฅผ ํ์ธํ ๋ | โ
|
|
|
88
|
+
| `delete_resume` | ์ ์ฅ๋ ๋ฌธ์(์ด๋ ฅ์ยท๊ฒฝ๋ ฅ๊ธฐ์ ์ยทํฌํธํด๋ฆฌ์ค) ์ญ์ | `document_id`, `confirm`(=`DELETE`) | `{ deleted, id }` | ์ฌ์ฉ์๊ฐ ํน์ ๋ฌธ์ ์ญ์ ๋ฅผ ๋ช
ํํ ์์ฒญํ์ ๋(๋จผ์ get_resumes๋ก ํ์ธ) | โ๏ธ |
|
|
88
89
|
|
|
89
90
|
- `kind` ๊ฐ: `resume`(์ด๋ ฅ์, ๊ธฐ๋ณธ๊ฐ) / `career_description`(๊ฒฝ๋ ฅ๊ธฐ์ ์) / `portfolio` / `other`
|
|
90
91
|
- `is_primary: true`๋ก ๋ํ ๋ฌธ์๋ฅผ ์ง์ ํ๋ฉด `get_application_context`์ `primary_resume`๋ก ๋
ธ์ถ๋ฉ๋๋ค.
|
|
@@ -99,11 +100,15 @@ AI ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋๋ฉด ์ด ๋๊ตฌ๋ฅผ ๊ฐ์ฅ ๋จผ์ ํธ์ถํด ์ํ
|
|
|
99
100
|
| --- | --- | --- | --- | --- | --- |
|
|
100
101
|
| `add_experience` | ๊ฒฝ๋ ฅ(์ง์ฅ ๋จ์) ํญ๋ชฉ ์ ์ฅ | `experiences[]` โ ๊ฐ ํญ๋ชฉ: `company`(ํ์), `role?`, `employment_type?`, `start_date?`, `end_date?`, `is_current?`, `description?`, `achievements?`, `tech?`, `order_index?` | `ExperienceRecord[]` + ์ ๊ท/๊ฐฑ์ ๊ฑด์ | ์ด๋ ฅ์์์ ๊ฒฝ๋ ฅ์ ๊ตฌ์กฐํํด ๋ณด๊ดํ ๋(์ฌ๋ฌ ๊ฑด ํ ๋ฒ์) | โ๏ธ |
|
|
101
102
|
| `get_experiences` | ์ ์ฅ๋ ๊ฒฝ๋ ฅ์ ์๊ฐ ์ญ์์ผ๋ก ์กฐํ | ์์ | `ExperienceRecord[]` | ๊ฒฝ๋ ฅ ๋ชฉ๋ก๋ง ๋น ๋ฅด๊ฒ ํ์ธํ ๋ | โ
|
|
|
103
|
+
| `delete_experience` | ๊ฒฝ๋ ฅ ํญ๋ชฉ 1๊ฑด ์ญ์ | `experience_id`, `confirm`(=`DELETE`) | `{ deleted, id }` | ์๋ชป ์ถ์ถ/์
๋ ฅ๋ ๊ฒฝ๋ ฅ์ ์ง์ธ ๋(๋จผ์ get_experiences๋ก ํ์ธ) | โ๏ธ |
|
|
102
104
|
| `add_project` | ๋ํ ํ๋ก์ ํธ ํญ๋ชฉ ์ ์ฅ | `projects[]` โ ๊ฐ ํญ๋ชฉ: `name`(ํ์), `role?`, `description?`, `highlights?`, `tech?`, `url?`, `start_date?`, `end_date?`, `order_index?` | `ProjectRecord[]` + ์ ๊ท/๊ฐฑ์ ๊ฑด์ | ํ๋ก์ ํธ ์ด๋ ฅ์ ๊ตฌ์กฐํํด ๋ณด๊ดํ ๋(์ฌ๋ฌ ๊ฑด ํ ๋ฒ์) | โ๏ธ |
|
|
103
105
|
| `get_projects` | ์ ์ฅ๋ ํ๋ก์ ํธ ์กฐํ | ์์ | `ProjectRecord[]` | ํ๋ก์ ํธ ๋ชฉ๋ก๋ง ํ์ธํ ๋ | โ
|
|
|
106
|
+
| `delete_project` | ํ๋ก์ ํธ ํญ๋ชฉ 1๊ฑด ์ญ์ | `project_id`, `confirm`(=`DELETE`) | `{ deleted, id }` | ์๋ชป ์ถ์ถ/์
๋ ฅ๋ ํ๋ก์ ํธ๋ฅผ ์ง์ธ ๋(๋จผ์ get_projects๋ก ํ์ธ) | โ๏ธ |
|
|
104
107
|
| `add_skill` | ๊ธฐ์ ์คํ ํญ๋ชฉ ์ ์ฅ | `skills[]` โ ๊ฐ ํญ๋ชฉ: `name`(ํ์), `category?`, `level?`, `years?`, `order_index?` | `SkillRecord[]` + ์ ๊ท/๊ฐฑ์ ๊ฑด์ | ๋ณด์ ๊ธฐ์ ์ ์ ๋ฆฌํด ๋ ๋(์ฌ๋ฌ ๊ฐ ํ ๋ฒ์) | โ๏ธ |
|
|
105
108
|
| `get_skills` | ์ ์ฅ๋ ๊ธฐ์ ์คํ ์กฐํ | ์์ | `SkillRecord[]` | ๊ธฐ์ ๋ชฉ๋ก๋ง ํ์ธํ ๋ | โ
|
|
|
109
|
+
| `delete_skill` | ๊ธฐ์ ํญ๋ชฉ 1๊ฑด ์ญ์ | `skill_id`, `confirm`(=`DELETE`) | `{ deleted, id }` | ์๋ชป ์ถ์ถ/์
๋ ฅ๋ ๊ธฐ์ ์ ์ง์ธ ๋(๋จผ์ get_skills๋ก ํ์ธ) | โ๏ธ |
|
|
106
110
|
|
|
111
|
+
- `delete_*`๋ ํญ๋ชฉ 1๊ฑด๋ง ์ง์๋๋ค. **์์ **์ ๋ณ๋ ๋๊ตฌ ์์ด `add_*`๋ก ๊ฐ์ ํญ๋ชฉ(๊ฐ์ ์๋ณ์)์ ๋ค์ ์ ์ฅํ๋ฉด ๊ฐฑ์ ๋ฉ๋๋ค(๋ฉฑ๋ฑ).
|
|
107
112
|
- ์ธ ๋๊ตฌ ๋ชจ๋ **๋ฐฐ์ด์ ๋ฐ์ ์ฌ๋ฌ ๊ฑด์ ํ ๋ฒ์ ์ ์ฅ**ํฉ๋๋ค(ํ ๊ฑด์ด์ด๋ ๋ฐฐ์ด๋ก). ํญ๋ชฉ๋ง๋ค ๋๊ตฌ๋ฅผ ๋ฐ๋ณต ํธ์ถํ์ง ๋ง์ธ์.
|
|
108
113
|
- **๋ฉฑ๋ฑ ์ ์ฅ**: ๊ฐ์ ํญ๋ชฉ(์คํฌ=`name`, ๊ฒฝ๋ ฅ=`company`+`role`+`start_date`, ํ๋ก์ ํธ=`name`, ๋์๋ฌธ์ ๋ฌด์)์ ๋ค์ ๋ฃ์ด๋ ์ค๋ณต ํ์ ๋ง๋ค์ง ์๊ณ ๊ฐฑ์ ํฉ๋๋ค. ๋๋ฝํ ํ๋๋ ๊ธฐ์กด ๊ฐ์ ๋ณด์กดํฉ๋๋ค. ํ ๋ฒ์ ํธ์ถ์ ํ ํธ๋์ญ์
์ผ๋ก ์์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
|
|
109
114
|
- `achievements`/`highlights`์๋ ์ ๋ ์งํ๊ฐ ๋ด๊ธด ์ฑ๊ณผ๋ฅผ, `tech`์๋ ์ฌ์ฉ ๊ธฐ์ ์ ๋ฐฐ์ด๋ก ๋ฃ์ผ๋ฉด ์ ํฉ๋ ๋ถ์ยท์์์ยท๋ฉด์ ์ค๋น์์ ๊ทผ๊ฑฐ๋ก ํ์ฉ๋ฉ๋๋ค.
|
|
@@ -117,6 +122,7 @@ AI ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋๋ฉด ์ด ๋๊ตฌ๋ฅผ ๊ฐ์ฅ ๋จผ์ ํธ์ถํด ์ํ
|
|
|
117
122
|
| --- | --- | --- | --- | --- | --- |
|
|
118
123
|
| `get_cover_letters` | ์ ์ฅ๋ ์๊ธฐ์๊ฐ์ ์กฐํ(๊ณต๊ณ ๋ณ ํํฐ ๊ฐ๋ฅ). ๊ฐ ํญ๋ชฉ์ ํ์ฌ ๋ฒ์ ๋ด์ฉยท๋ฒ์ ์ ํฌํจ | `job_id?` | `CoverLetterRecord[]` | ์์์ ๋ชฉ๋ก/๋ด์ฉ์ ํ์ธํ ๋ | โ
|
|
|
119
124
|
| `save_cover_letter_version` | ์๊ธฐ์๊ฐ์์ ์ ๋ฒ์ ์ ์ฅ โ ์์์ ์์ฑ ์ํฌํ๋ก์ฐ์ ํต์ฌ ์ ์ฅ ๋จ๊ณ | `content`(ํ์), `cover_letter_id?`, `title?`, `job_id?`, `note?`, `source?`, `set_current?` | `{ coverLetter, version }` | ์ ๊ณต๊ณ ์ฉ ์์์๋ฅผ ์์ฑยท๊ฐฑ์ ํด ๋ฒ์ ์ผ๋ก ๋จ๊ธธ ๋ | โ๏ธ |
|
|
125
|
+
| `delete_cover_letter` | ์๊ธฐ์๊ฐ์ ์ญ์ (๋ชจ๋ ๋ฒ์ ํฌํจ) | `cover_letter_id`, `confirm:"DELETE"` | ์ญ์ ๊ฒฐ๊ณผ | ์ฌ์ฉ์๊ฐ ๋ชฉ๋ก์์ ์ญ์ ๋์์ ํ์ธํ ๋ค | โ๏ธ |
|
|
120
126
|
|
|
121
127
|
`save_cover_letter_version` ๋์(`CoverLetterVersionInputSchema`):
|
|
122
128
|
|
|
@@ -127,6 +133,8 @@ AI ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋๋ฉด ์ด ๋๊ตฌ๋ฅผ ๊ฐ์ฅ ๋จผ์ ํธ์ถํด ์ํ
|
|
|
127
133
|
|
|
128
134
|
> ๊ธฐ์กด ์์์๋ฅผ ํ์ต์ฉ์ผ๋ก ๋ณด๊ดํ๋ ์ ๊ณต๊ณ ์ฉ ์์์๋ฅผ ์๋ก ์ฐ๋ , ์ ์ฅ์ ๋ชจ๋ `save_cover_letter_version`์ผ๋ก ํฉ๋๋ค. `title`+`content`๋ง ์ฃผ๋ฉด ์ ์์์์ v1๋ก ์ ์ฅ๋ฉ๋๋ค.
|
|
129
135
|
|
|
136
|
+
`delete_cover_letter`๋ ๋๋๋ฆด ์ ์๋ ์์
์ด๋ฏ๋ก, ๋จผ์ `get_cover_letters`๋ก ๋ชฉ๋ก์ ํ์ธํ๊ณ ์ฌ์ฉ์๊ฐ ์ญ์ ํ ํญ๋ชฉ์ ๋ช
ํํ ๊ณ ๋ฅธ ๋ค ํธ์ถํฉ๋๋ค. ์ญ์ ๋ ์๊ธฐ์๊ฐ์์ ๋ฒ์ ์ ํจ๊ป ์ฌ๋ผ์ง๋ฉฐ, ์ฐ๊ฒฐ๋ ์ง์ ๊ธฐ๋ก์ ์๊ธฐ์๊ฐ์ ์ฐ๊ฒฐ๋ง ๋น์์ง๋๋ค.
|
|
137
|
+
|
|
130
138
|
---
|
|
131
139
|
|
|
132
140
|
## 5. ์ฑ์ฉ๊ณต๊ณ (Jobs)
|
|
@@ -136,10 +144,12 @@ AI ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋๋ฉด ์ด ๋๊ตฌ๋ฅผ ๊ฐ์ฅ ๋จผ์ ํธ์ถํด ์ํ
|
|
|
136
144
|
| `save_job_posting` | ์ฑ์ฉ๊ณต๊ณ ์ ์ฅ(์์ผ๋ฉด ๊ฐฑ์ ). ์ ์ฅ ์ ์ง์(application) ํญ๋ชฉ ์๋ ์์ฑ | `company`, `position`(ํ์), `url?`, `location?`, `employment_type?`, `description?`, `requirements?`, `keywords?`, `deadline?`, `source?` | ์ ์ฅ๋ `JobRecord`(`job_id` ํฌํจ) | ๊ณต๊ณ ๋ฅผ DB์ ๋ฑ๋ก/๊ฐฑ์ ํ ๋ | โ๏ธ |
|
|
137
145
|
| `get_job_posting` | ๊ณต๊ณ 1๊ฑด ์์ธ ์กฐํ | `job_id` | `{ job, fit, application, cover_letters, interview }` | ํ ๊ณต๊ณ ์ ๋ถ์ยท์ํยท์์์ยท๋ฉด์ ์๋ฃ๋ฅผ ํ ๋ฒ์ ๋ณผ ๋ | โ
|
|
|
138
146
|
| `list_jobs` | ์ ์ฅ๋ ๋ชจ๋ ๊ณต๊ณ ๋ฅผ ์ง์ ์ํยท์ ํฉ๋ ์ ์์ ํจ๊ป ๋ชฉ๋กํ | ์์ | ๊ณต๊ณ ๋ฉํ ํฌํจ ๋ฐฐ์ด | ์ ์ฒด ๊ณต๊ณ ๋ฅผ ํ์ด๋ณผ ๋ | โ
|
|
|
147
|
+
| `delete_job_posting` | ์ฑ์ฉ๊ณต๊ณ ์ญ์ | `job_id`, `confirm:"DELETE"` | ์ญ์ ๊ฒฐ๊ณผ | ์ฌ์ฉ์๊ฐ ๋ชฉ๋ก์์ ์ญ์ ๋์์ ํ์ธํ ๋ค | โ๏ธ |
|
|
139
148
|
|
|
140
149
|
- `url`์ด ๊ฐ์ผ๋ฉด ์ค๋ณต ์์ฑ ์์ด ๊ฐฑ์ ๋ฉ๋๋ค.
|
|
141
150
|
- `requirements`์๋ ์๊ฒฉ์๊ฑด/์ฐ๋์ฌํญ ํต์ฌ, `keywords`์๋ ํต์ฌ ํค์๋๋ฅผ ์ ๋ฆฌํด ๋ฃ์ผ๋ฉด ์ดํ ์ ํฉ๋ ๋ถ์ยท์์์ ์์ฑ์ ํ์ฉ๋ฉ๋๋ค.
|
|
142
151
|
- ๋ถ์ฌ๋ฃ์ ๊ณต๊ณ ์๋ฌธ์ ๊ตฌ์กฐํ(ํ์ฌ๋ช
/์ง๋ฌด/๋ง๊ฐ์ผ/ํค์๋ ์ถ์ถ)๋ AI๊ฐ ์ง์ ์ํํ ๋ค `save_job_posting`์ผ๋ก ์ ์ฅํฉ๋๋ค.
|
|
152
|
+
- `delete_job_posting`์ ์ฐ๊ฒฐ๋ ์ง์ ์ํยท์ ํฉ๋ ๋ถ์ยท๋ฉด์ ์ค๋น๋ฅผ ํจ๊ป ์ญ์ ํฉ๋๋ค. ์ฐ๊ฒฐ๋ ์๊ธฐ์๊ฐ์๋ ์ญ์ ํ์ง ์๊ณ ๊ณต๊ณ ์ฐ๊ฒฐ๋ง ํด์ ํฉ๋๋ค.
|
|
143
153
|
|
|
144
154
|
---
|
|
145
155
|
|
|
@@ -147,10 +157,11 @@ AI ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋๋ฉด ์ด ๋๊ตฌ๋ฅผ ๊ฐ์ฅ ๋จผ์ ํธ์ถํด ์ํ
|
|
|
147
157
|
|
|
148
158
|
| ๋๊ตฌ | ๋ชฉ์ | ์ฃผ์ ์
๋ ฅ | ๋ฐํ | ์ธ์ ํธ์ถ | ์ฝ๊ธฐ์ ์ฉ |
|
|
149
159
|
| --- | --- | --- | --- | --- | --- |
|
|
150
|
-
| `save_fit_analysis` | AI๊ฐ ๋์ถํ ์ ํฉ๋ ๋ถ์ ๊ฒฐ๊ณผ ์ ์ฅ(๊ฐ์ ๊ณต๊ณ ์ ๋ค์ ์ ์ฅํ๋ฉด ๊ฐฑ์ ) | `job_id`(ํ์), `score?`(0~100), `summary?`, `strengths?`, `gaps?`, `matched_keywords?`, `missing_keywords?`, `recommendations?` | ์ ์ฅ๋ `FitAnalysisRecord` | ๊ณต๊ณ ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๋น๊ต ๋ถ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ๋ | โ๏ธ |
|
|
160
|
+
| `save_fit_analysis` | AI๊ฐ ๋์ถํ ์ ํฉ๋ ๋ถ์ ๊ฒฐ๊ณผ ์ ์ฅ(๊ฐ์ ๊ณต๊ณ ์ ๋ค์ ์ ์ฅํ๋ฉด ๊ฐฑ์ ) | `job_id`(ํ์), `score?`(0~100), `summary?`, `strengths?`, `gaps?`, `matched_keywords?`, `missing_keywords?`, `recommendations?` | ์ ์ฅ๋ `FitAnalysisRecord` + `suggested_next_action` | ๊ณต๊ณ ์ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ๋น๊ต ๋ถ์ํ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ๋ | โ๏ธ |
|
|
151
161
|
|
|
152
162
|
- `job_id`๋ ํ์์ด๋ฉฐ, ๋จผ์ `save_job_posting`์ผ๋ก ๊ณต๊ณ ๊ฐ ์ ์ฅ๋์ด ์์ด์ผ ํฉ๋๋ค.
|
|
153
163
|
- ๋ถ์ ์์ฒด๋ AI๊ฐ ์ํํ๊ณ , ์ด ๋๊ตฌ๋ ๊ฒฐ๊ณผ๋ง ์ ์ฅํฉ๋๋ค. ๋ถ์ ์ ์๋ ๋ฐ๋์ [`get_application_context`](#get_application_context-)๋ก ๋งฅ๋ฝ์ ๊ฐ์ ธ์ค์ธ์.
|
|
164
|
+
- ์ ์ฅ ํ ์๋ต์๋ "์ด ๊ณต๊ณ ์ ๋ง์ถ ์๊ธฐ์๊ฐ์๋ฅผ ์จ๋๋ฆด๊น์?" ์ ํ์ง๊ฐ ํจ๊ป ์ ๊ณต๋ฉ๋๋ค. AI๋ ๊ณง์ฅ ์์ฑํ์ง ๋ง๊ณ ์ฌ์ฉ์๊ฐ "๋ค"๋ฅผ ๊ณ ๋ฅธ ๊ฒฝ์ฐ์๋ง ์๊ธฐ์๊ฐ์ ์์ฑ ํ๋ฆ์ผ๋ก ์ด์ด๊ฐ๋๋ค.
|
|
154
165
|
|
|
155
166
|
---
|
|
156
167
|
|
|
@@ -173,7 +184,7 @@ AI ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋๋ฉด ์ด ๋๊ตฌ๋ฅผ ๊ฐ์ฅ ๋จผ์ ํธ์ถํด ์ํ
|
|
|
173
184
|
| `rejected` | ๋ถํฉ๊ฒฉ |
|
|
174
185
|
| `on_hold` | ๋ณด๋ฅ |
|
|
175
186
|
|
|
176
|
-
> `document_passed`(์๋ฅ ํฉ๊ฒฉ)
|
|
187
|
+
> `document_passed`(์๋ฅ ํฉ๊ฒฉ) ์ด์์์๋ ์ํ ๋ณ๊ฒฝ ์๋ต์ ๋ฉด์ ์ค๋น ์ ์ ํํธ๊ฐ ํจ๊ป ๋์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ์์ฒญํ๋ฉด ๊ทธ ์ ์๋ ๊ณต๊ณ ๊ธฐ์ค ๋ฉด์ ์ค๋น ์๋ฃ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค.
|
|
177
188
|
|
|
178
189
|
---
|
|
179
190
|
|
|
@@ -181,7 +192,7 @@ AI ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋๋ฉด ์ด ๋๊ตฌ๋ฅผ ๊ฐ์ฅ ๋จผ์ ํธ์ถํด ์ํ
|
|
|
181
192
|
|
|
182
193
|
| ๋๊ตฌ | ๋ชฉ์ | ์ฃผ์ ์
๋ ฅ | ๋ฐํ | ์ธ์ ํธ์ถ | ์ฝ๊ธฐ์ ์ฉ |
|
|
183
194
|
| --- | --- | --- | --- | --- | --- |
|
|
184
|
-
| `save_interview_prep` | ์์ ์ง๋ฌธยท๊ผฌ๋ฆฌ ์ง๋ฌธยทSTAR ๋ต๋ณ ๊ฐ์ด๋ยท1๋ถ ์๊ธฐ์๊ฐ ์ด์ ๋ฑ ๋ฉด์ ์ค๋น ์๋ฃ ์ ์ฅ(๊ฐ์ ๊ณต๊ณ ๋ฉด ๊ฐฑ์ ) | `job_id`(ํ์), `questions?`, `star_guides?`, `self_introduction?`, `notes?` | ์ ์ฅ๋ `InterviewPrepRecord`(์ง๋ฌธ ์ ํฌํจ) |
|
|
195
|
+
| `save_interview_prep` | ์์ ์ง๋ฌธยท๊ผฌ๋ฆฌ ์ง๋ฌธยทSTAR ๋ต๋ณ ๊ฐ์ด๋ยท1๋ถ ์๊ธฐ์๊ฐ ์ด์ ๋ฑ ๋ฉด์ ์ค๋น ์๋ฃ ์ ์ฅ(๊ฐ์ ๊ณต๊ณ ๋ฉด ๊ฐฑ์ ) | `job_id`(ํ์), `questions?`, `star_guides?`, `self_introduction?`, `notes?` | ์ ์ฅ๋ `InterviewPrepRecord`(์ง๋ฌธ ์ ํฌํจ) | ์ฌ์ฉ์๊ฐ ๊ณต๊ณ ๊ธฐ์ค ๋ฉด์ ์ค๋น๋ฅผ ์์ฒญํ์ ๋ | โ๏ธ |
|
|
185
196
|
|
|
186
197
|
์
๋ ฅ ๊ตฌ์กฐ(`InterviewPrepInputSchema`):
|
|
187
198
|
|
|
@@ -197,9 +208,11 @@ AI ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋๋ฉด ์ด ๋๊ตฌ๋ฅผ ๊ฐ์ฅ ๋จผ์ ํธ์ถํด ์ํ
|
|
|
197
208
|
| ๋๊ตฌ | ๋ชฉ์ | ์ฃผ์ ์
๋ ฅ | ๋ฐํ | ์ธ์ ํธ์ถ | ์ฝ๊ธฐ์ ์ฉ |
|
|
198
209
|
| --- | --- | --- | --- | --- | --- |
|
|
199
210
|
| `export_cover_letter` | ์๊ธฐ์๊ฐ์๋ฅผ Markdown ๋๋ ์ธ์์ฉ HTML ํ์ผ๋ก ๋ฐ์ดํฐ ํด๋ `exports/`์ ์ ์ฅ | `cover_letter_id`, `format?`(`md`(๊ธฐ๋ณธ)/`html`) | `{ path, filename, content }` | ์ฌ์ฉ์๊ฐ "์์์ ํ์ผ๋ก ๋ฐ๊ณ ์ถ์ด"๋ผ๊ณ ํ ๋ | โ๏ธ |
|
|
211
|
+
| `export_resume` | ์ ์ฅ๋ ์ด๋ ฅ์ยท๊ฒฝ๋ ฅ๊ธฐ์ ์ ๋ฑ ๋ฌธ์๋ฅผ Markdown ๋๋ ์ธ์์ฉ HTML ํ์ผ๋ก `exports/`์ ์ ์ฅ | `document_id`, `format?`(`md`(๊ธฐ๋ณธ)/`html`) | `{ path, filename, content }` | ๊ณต๊ณ ๋ง์ถค ์ด๋ ฅ์๋ฅผ `add_resume`๋ก ์ ์ฅํ ๋ค "์ด๋ ฅ์ ํ์ผ๋ก ๋ฐ๊ณ ์ถ์ด"๋ผ๊ณ ํ ๋ | โ๏ธ |
|
|
212
|
+
| `export_profile` | ํ๋กํยท๊ฒฝ๋ ฅยทํ๋ก์ ํธยท๋ณด์ ๊ธฐ์ ์ ํ ์ฅ์ ์ด๋ ฅ์ ํ์์ผ๋ก ๋ชจ์ Markdown ๋๋ ์ธ์์ฉ HTML ํ์ผ๋ก `exports/`์ ์ ์ฅ | `format?`(`md`(๊ธฐ๋ณธ)/`html`) | `{ path, filename, content }` | ์ฌ์ฉ์๊ฐ "๋ด ํ๋กํ์ ์ด๋ ฅ์๋ก ๋ฝ์์ค"๋ผ๊ณ ํ ๋ | โ๏ธ |
|
|
200
213
|
|
|
201
214
|
- HTML์ ์ธ์์ฉ์ผ๋ก, ๋ธ๋ผ์ฐ์ ์์ PDF๋ก ์ ์ฅํ ์ ์์ต๋๋ค.
|
|
202
|
-
- ๋์๋ณด๋์ Documents ํ์ด์ง์์ ์ง์ ๋ค์ด๋ก๋ํ ์๋ ์์ต๋๋ค.
|
|
215
|
+
- ๋์๋ณด๋์ DocumentsยทProfile ํ์ด์ง์์ ์ง์ ๋ค์ด๋ก๋ํ ์๋ ์์ต๋๋ค.
|
|
203
216
|
|
|
204
217
|
---
|
|
205
218
|
|
|
@@ -229,7 +242,7 @@ AI ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋๋ฉด ์ด ๋๊ตฌ๋ฅผ ๊ฐ์ฅ ๋จผ์ ํธ์ถํด ์ํ
|
|
|
229
242
|
| --- | --- | --- | --- | --- | --- |
|
|
230
243
|
| `get_workflow_guide` | ํ์ค ์ํฌํ๋ก์ฐ์ ๋จ๊ณ๋ณ ์๋ด + ๊ทธ ์์
์ **์ ๋ฌธ๊ฐ ์คํ ์ ์ฐจ(EOP)**ยท์ ์ฉํ ํ๋ ์ด๋ถยท์ ์ฅ ์ ๊ฒ์ฆ๊ธฐ ์์ ๋ฐํ | `workflow_id?` | ๋จ์ผ ์ํฌํ๋ก์ฐ Markdown(EOPยทํ๋ ์ด๋ถ/๊ฒ์ฆ๊ธฐ ์์ ํฌํจ) ๋๋ ์ ์ฒด ๋ชฉ๋ก(`{ id, title, trigger }[]`) | ์ปค๋ฆฌ์ด ์์
์ ์์ํ๊ธฐ ์ง์ | โ
|
|
|
231
244
|
|
|
232
|
-
`workflow_id` ๊ฐ: `onboarding`, `analyze_job`, `write_cover_letter`, `manage_application_status`, `prepare_interview`. ์๋ตํ๋ฉด ์ ์ฒด ๋ชฉ๋ก์ ๋๋ ค์ค๋๋ค. `analyze_job`/`write_cover_letter`/`prepare_interview`/`onboarding`์ ํด๋น ์์
์ EOP ๋ณธ๋ฌธ๊ณผ `get_playbook`ยท`get_verifier` ํธ์ถ ์์(`career_route`)๋ฅผ ํจ๊ป ๋๋ ค์ค๋๋ค.
|
|
245
|
+
`workflow_id` ๊ฐ: `onboarding`, `analyze_job`, `write_cover_letter`, `write_career_description`, `manage_application_status`, `prepare_interview`. ์๋ตํ๋ฉด ์ ์ฒด ๋ชฉ๋ก์ ๋๋ ค์ค๋๋ค. `analyze_job`/`write_cover_letter`/`write_career_description`/`prepare_interview`/`onboarding`์ ํด๋น ์์
์ EOP ๋ณธ๋ฌธ๊ณผ `get_playbook`ยท`get_verifier` ํธ์ถ ์์(`career_route`)๋ฅผ ํจ๊ป ๋๋ ค์ค๋๋ค.
|
|
233
246
|
|
|
234
247
|
---
|
|
235
248
|
|
|
@@ -267,7 +280,7 @@ AI ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋๋ฉด ์ด ๋๊ตฌ๋ฅผ ๊ฐ์ฅ ๋จผ์ ํธ์ถํด ์ํ
|
|
|
267
280
|
|
|
268
281
|
| ๋๊ตฌ | ๋ชฉ์ | ์ฃผ์ ์
๋ ฅ | ๋ฐํ | ์ธ์ ํธ์ถ | ์ฝ๊ธฐ์ ์ฉ |
|
|
269
282
|
| --- | --- | --- | --- | --- | --- |
|
|
270
|
-
| `get_writing_style_guide` | "AI ํฐ ์ ๋๋" ํ๊ตญ์ด ๊ธ์ฐ๊ธฐ ๊ท์น ๋ฐํ |
|
|
283
|
+
| `get_writing_style_guide` | "AI ํฐ ์ ๋๋" ํ๊ตญ์ด ๊ธ์ฐ๊ธฐ ๊ท์น ๋ฐํ | `doc_type?`(career_descriptionยทresumeยทportfolio๋ฉด ๊ตฌ์กฐ ๋ณด์กด ๋ณด์ ์ถ๊ฐ) | `{ guide }` (์์ฑ ๊ท์น + ์ ์ฅ ์ ์๊ฐ ์ ๊ฒ) | ์๊ธฐ์๊ฐ์ยท์๊ธฐ PRยท์ง์ ๋ฉ์ผยท๊ฒฝ๋ ฅ๊ธฐ์ ์ ๋ฑ ์ฌ๋์ด ์ด ๋ฏํ ๊ธ์ ์์ฑํ๊ธฐ ์ง์ | โ
|
|
|
271
284
|
|
|
272
285
|
๋ฒ์ญํฌยทํด๋ฆฌ์
ฐยท๊ธฐ๊ณ์ ๋ณ๋ ฌยท์ํฌ์ ์ฐ๊ฒฐ์ดยท๊ท ์ผํ ๋ฌธ์ฅ ๋ฆฌ๋ฌ ๊ฐ์ AI-tell์ ์ ๊ฑฐํ๋ฉด์, ์ฌ์คยท์์นยท๊ณ ์ ๋ช
์ฌ๋ ๊ทธ๋๋ก ๋ณด์กดํ๋๋ก ์๋ดํฉ๋๋ค. `write_cover_letter` / `analyze_job` ์ํฌํ๋ก์ฐ์ ์์ฑ ๋จ๊ณ์์ ํจ๊ป ์ ์ฉํฉ๋๋ค. (๊ท์น ์ถ์ฒ: `epoko77-ai/im-not-ai`, MIT.)
|
|
273
286
|
|
|
@@ -283,6 +296,7 @@ CareerMate๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ์งํ๊ธฐ ์ํ ์ ์ง๋ณด์ ๋๊ตฌ์
๋
|
|
|
283
296
|
| `update_careermate` | ์ค์น ํด๋์ `careermate@latest`๋ฅผ npm์ผ๋ก ์ค์นํด ์ต์ ๋ฒ์ ์ผ๋ก ์
๋ฐ์ดํธ | ์์ | ์
๋ฐ์ดํธ ๊ฒฐ๊ณผ(`{ ok, message, manual? }`) | ์ฌ์ฉ์๊ฐ ๋ช
์์ ์ผ๋ก "์
๋ฐ์ดํธํด์ค"๋ผ๊ณ ํ ๋๋ง | โ๏ธ |
|
|
284
297
|
|
|
285
298
|
- `check_for_update`๋ ํ์ธ๋ง ํ๋ฉฐ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค. ์ ๋ฒ์ ์ด ์์ผ๋ฉด `update_careermate`๋ก ์ ์ฉํ์ธ์.
|
|
299
|
+
- ์ฌ์ฉ์๊ฐ "์
๋ฐ์ดํธํด์ค", "CareerMate ์
๋ฐ์ดํธํด์ค", "์ต์ ์ผ๋ก ์ฌ๋ ค์ค"์ฒ๋ผ ์ ์ฉ์ ๋ช
์ํ๋ฉด `update_careermate`๋ฅผ ๋ฐ๋ก ํธ์ถํฉ๋๋ค. ์ด ๋๊ตฌ๊ฐ ์ต์ ๋ฒ์ ํ์ธ๋ ํจ๊ป ํ๋ฏ๋ก ๋ณ๋ ํ์ธ ์ง๋ฌธ์ ํ์ ์์ต๋๋ค.
|
|
286
300
|
- `update_careermate` ์ฑ๊ณต ํ์๋ ์ ์ฉ์ ์ํด AI ์ฑ(๋๋ MCP ์ฐ๊ฒฐ) **์ฌ์์**์ด ํ์ํฉ๋๋ค. ์ฌ์์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๋ ๋ง์ด๊ทธ๋ ์ด์
๋์ด ๊ธฐ์กด ๋ฐ์ดํฐ๊ฐ ๋ณด์กด๋ฉ๋๋ค.
|
|
287
301
|
- ์๋ ์ค์น๊ฐ ๋งํ๋ฉด(๊ฐ๋ฐ ๋ชจ๋ยท๋นํ์ค ์ค์น) ์ง์ ์น ๋ช
๋ น(`manual`)์ ์๋ดํฉ๋๋ค.
|
|
288
302
|
|
|
@@ -312,7 +326,7 @@ CareerMate๋ฅผ ์ต์ ๋ฒ์ ์ผ๋ก ์ ์งํ๊ธฐ ์ํ ์ ์ง๋ณด์ ๋๊ตฌ์
๋
|
|
|
312
326
|
| `fit_analysis` | (`job_id` ์ ๊ณต ์) ๋์ ๊ณต๊ณ ์ ์ด์ ์ ํฉ๋ ๋ถ์(`FitAnalysisRecord` ๋๋ `null`) |
|
|
313
327
|
| `related_history` | ๊ฐ์ ํ์ฌ/์ง๋ฌด ๊ด๋ จ ์ด์ ๊ธฐ๋ก ๋ฐฐ์ด โ ๊ฐ ํญ๋ชฉ `{ job, application, fit_analysis }` |
|
|
314
328
|
| `writing_preferences` | ์์์ ์์ฑ ์ ํธ โ `{ preferred_tone, emphasis_points[] }` |
|
|
315
|
-
| `recommended_route` | ๋งฅ๋ฝ ๊ธฐ๋ฐ ์ถ์ฒ ์ํฌํ๋ก์ฐ id(`analyze_job`/`write_cover_letter`/`prepare_interview`/`onboarding`) ๋๋ `null`. `get_workflow_guide`์ `workflow_id`๋ก ๊ทธ๋๋ก ์ฌ์ฉ |
|
|
329
|
+
| `recommended_route` | ๋งฅ๋ฝ ๊ธฐ๋ฐ ์ถ์ฒ ์ํฌํ๋ก์ฐ id(`analyze_job`/`write_cover_letter`/`prepare_interview`/`onboarding`) ๋๋ `null`. ๊ณต๊ณ ์ค์ฌ ๋งฅ๋ฝ์ด ์๋ `write_career_description`์ ์ฌ์ฉ์ ์์ฒญ์ ๋ฐ๋ผ ์ง์ ์ ํํ๋ค. `get_workflow_guide`์ `workflow_id`๋ก ๊ทธ๋๋ก ์ฌ์ฉ |
|
|
316
330
|
| `verifier_sequence` | ์ถ์ฒ ๊ฒฝ๋ก์์ ์ ์ฅ ์ง์ ์ ์ฉํ ๊ฒ์ฆ๊ธฐ id ๋ฐฐ์ด(Career-OS) |
|
|
317
331
|
| `next_tool` | ๋ค์์ ๋ถ๋ฅผ ๋๊ตฌ(๋ณดํต `get_workflow_guide`) ๋๋ `null` |
|
|
318
332
|
|
package/docs/START_WORKFLOW.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CareerMate ์์ ๋ฐ๋ถ (์ฐ๊ฒฐ ์งํ AI์ฉ)
|
|
2
2
|
|
|
3
|
-
์ค์นยท์ฐ๊ฒฐ(`INSTALL.md`)์ด ๋๋ ์งํ, AI(๋น์ )๊ฐ ์ฌ์ฉ์๋ฅผ ๋น ๋ฅด๊ฒ ์์ฐ์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด ๋ฐ๋ผ๊ฐ๋ ๋ฐ๋ถ์
๋๋ค. ๋๊ตฌ๋ ์ ํด์ง ์์๋ก ํธ์ถํ๊ณ , ๋งค ๋จ๊ณ ๋ฌด์์ ํ๊ณ ์๋์ง
|
|
3
|
+
์ค์นยท์ฐ๊ฒฐ(`INSTALL.md`)์ด ๋๋ ์งํ, AI(๋น์ )๊ฐ ์ฌ์ฉ์๋ฅผ ๋น ๋ฅด๊ฒ ์์ฐ์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด ๋ฐ๋ผ๊ฐ๋ ๋ฐ๋ถ์
๋๋ค. ๋๊ตฌ๋ ์ ํด์ง ์์๋ก ํธ์ถํ๊ณ , ๋งค ๋จ๊ณ ๋ฌด์์ ํ๊ณ ์๋์ง ์ฌ์ฉ์์ ์ธ์ด๋ก ์ฝ๊ฒ ์ค๋ช
ํ์ธ์. MCPยทjob_id ๊ฐ์ ๊ธฐ์ ์ฉ์ด๋ ๋
ธ์ถํ์ง ๋ง์ธ์. ํ์คํ์ง ์์ ์ ๋ณด๋ ์ง์ด๋ด์ง ๋ง๊ณ ์ฌ์ฉ์์๊ฒ ํ์ธํ์ธ์.
|
|
4
4
|
|
|
5
5
|
> ํต์ฌ ์์น: **๋ถ์๊ณผ ๊ธ์ฐ๊ธฐ๋ ๋น์ (AI)์ด ์ํํ๊ณ , CareerMate๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตยท๋ณด๊ด**ํฉ๋๋ค. ๊ณต๊ณ ๋ถ์์ด๋ ์๊ธฐ์๊ฐ์ ์์ฑ ์ ์๋ ํญ์ `get_application_context`๋ฅผ ๋จผ์ ํธ์ถํด ๊ทผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค์ธ์.
|
|
6
6
|
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
### 2. ํ๋กํ ์์ง ๋ฐ ์ ์ฅ โ `save_profile`
|
|
21
21
|
|
|
22
|
-
- ์ฌ์ฉ์๊ฐ ์ฌ๋ฆฐ
|
|
22
|
+
- ์ฌ์ฉ์๊ฐ ์ฌ๋ฆฐ ์ด๋ ฅ์/๊ฒฝ๋ ฅ๊ธฐ์ ์/ํฌํธํด๋ฆฌ์ค/์๊ธฐ์๊ฐ์ ํ์ผ ๋๋ ์ง์ ์๋ ค์ค ๋ด์ฉ์ ๋ฐํ์ผ๋ก ํ๋กํ์ ๊ตฌ์กฐํํฉ๋๋ค.
|
|
23
23
|
- ์ ๋ฆฌ ํญ๋ชฉ: ์ด๋ฆ, ์ฐ๋ฝ์ฒ, ํ ์ค ์๊ฐ(`headline`), ์์ฝ(`summary`), ํฌ๋ง ์ง๋ฌด(`desired_roles`), ํฌ๋ง ๊ทผ๋ฌด ์กฐ๊ฑด(`desired_conditions`).
|
|
24
24
|
- **๊ธ์ฐ๊ธฐ ์ ํธ๋**๋ฅผ ํจ๊ป ๋ฌผ์ด๋ณด์ธ์: ์ ํธ ๋ฌธ์ฒด(`preferred_tone`, ์: "๋ด๋ฐฑํ๊ณ ๊ตฌ์ฒด์ ")์ ๊ฐ์กฐ ํฌ์ธํธ(`emphasis_points`). ์ด ๋ ๊ฐ์ ์ดํ ์๊ธฐ์๊ฐ์ ํ์ง์ ์ง์ ์ํฅ์ ์ค๋๋ค.
|
|
25
25
|
- `save_profile`๋ก ์ ์ฅํฉ๋๋ค. ์ ๋ฌํ ํ๋๋ง ๊ฐฑ์ ๋๊ณ ๋๋จธ์ง๋ ์ ์ง๋ฉ๋๋ค(๋ถ๋ถ ์ ์ฅ ์์ ). ํ๋ ๊ฐ๋ง ๋ฐ๊ฟ ๋๋ ๊ทธ๋๋ก `save_profile`์ ๋ค์ ํธ์ถํ๋ฉด ๋ฉ๋๋ค.
|
|
@@ -31,6 +31,19 @@ CareerMate๋ LLM์ด ์๋ **๋ก์ปฌ MCP ๋๊ตฌ**์
๋๋ค. *๋ด ์ปดํจํฐ์์
|
|
|
31
31
|
### ๋์ํ์ง ์๋ ๊ฒ
|
|
32
32
|
**ChatGPT ยท Gemini ยท Claude์ ์นยท๋ชจ๋ฐ์ผ ์ฑ์ ์ ๋ฉ๋๋ค.** ํด๋ผ์ฐ๋์์ ์คํ๋์ด **์๊ฒฉ URL ๊ธฐ๋ฐ MCP๋ง** ์ง์ํ๋ฏ๋ก, ๋ด ์ปดํจํฐ์ ๋ก์ปฌ stdio ์๋ฒ์ ์ง์ ๋ฟ์ ์ ์์ต๋๋ค.
|
|
33
33
|
|
|
34
|
+
### ์ฒซ ์ฌ์ฉ ๋ง์ฐฐ โ ๋๊ตฌ ์ฌ์ ํ์ฉ (์๋)
|
|
35
|
+
`careermate init`์ **์ฐ๊ฒฐํ ํด๋ผ์ด์ธํธ์๋ง**(๊ฐ์ง๋/`--client`๋ก ์ง์ ํ ๊ฒ) ์ปค๋ฆฌ์ด ๋ฐ์ดํฐ ๋๊ตฌ๋ฅผ ๋ฏธ๋ฆฌ ํ์ฉํด, ์ฒซ ์ฌ์ฉ ๋ ๋๊ตฌ๋ง๋ค ๋จ๋ ์น์ธ ํ๋กฌํํธ๋ฅผ ์์ฑ๋๋ค. **๋ฏผ๊ฐ/ํ๊ดด 4๊ฐ(`read_document`ยท`update_careermate`ยท`delete_cover_letter`ยท`delete_job_posting`)๋ ์ด๋ ํด๋ผ์ด์ธํธ์์๋ ์๋์น์ธํ์ง ์๊ณ ๊ทธ๋๊ทธ๋ ํ์ธ**์ ๋ฐ์ต๋๋ค. `--no-allow-tools`๋ก ์ ์ฒด๋ฅผ ๋ ์ ์์ต๋๋ค.
|
|
36
|
+
|
|
37
|
+
| ์ฑ | ์ฌ์ ํ์ฉ ๋ฐฉ์ | ์ฐ๋ ํ์ผ |
|
|
38
|
+
|---|---|---|
|
|
39
|
+
| **Claude Code** | `permissions.allow` + ์๋ฒ ์ ๋ขฐ(`enabledMcpjsonServers`) | ์์
ํด๋ `.claude/settings.local.json` |
|
|
40
|
+
| **Codex CLI** | ์๋ฒ ๋๊ตฌ ์๋์น์ธ(`default_tools_approval_mode = "auto"`) + ๋ฏผ๊ฐ 4๊ฐ๋ง `approval_mode = "prompt"` | `~/.codex/config.toml` |
|
|
41
|
+
| **Cursor (โฅ3.6)** | `mcpAllowlist`์ SAFE ๋๊ตฌ๋ง(`"careermate:<tool>"`) | `~/.cursor/permissions.json` |
|
|
42
|
+
| **Gemini CLI ยท Antigravity** | (์๋ ์ ํจ) โ ๋๊ตฌ๋ณ ์ฌ์ ํ์ฉ์ด ์๊ณ ์๋ฒ ๋จ์ ์ผ๊ด ์ ๋ขฐ๋ง ์์ด, ๋ฏผ๊ฐ ๋๊ตฌ๊น์ง ์๋์น์ธ๋๋ ๊ฑธ ํผํ๋ ค๊ณ **์ฒซ ์ฌ์ฉ 1ํ "ํ์ฉ"**๋ง ๋ฐ์ต๋๋ค | โ |
|
|
43
|
+
| **Claude Desktop "์ฑํ
"** | (์๋ ์ ํจ) โ ์ฑ์ด ์ธ์
UI์์ "ํญ์ ํ์ฉ"์ผ๋ก ๊ธฐ์ต | โ |
|
|
44
|
+
|
|
45
|
+
> ํด๋๋ฅผ ์ฒ์ "์ ๋ขฐ"ํ๋ 1ํ ๋ค์ด์ผ๋ก๊ทธ(Claude Code์ ํด๋ ์ ๋ขฐ, Codex์ ์ํฌ์คํ์ด์ค ์ ๋ขฐ)๋ ํด๋ผ์ด์ธํธ๊ฐ ๊ฐ์ ํ๋ ๋ณด์ ๊ฒ์ดํธ๋ผ ์ฌ๋ผ์ง์ง ์์ต๋๋ค โ ํ ๋ฒ๋ง ์น์ธํ๋ฉด ๋ฉ๋๋ค.
|
|
46
|
+
|
|
34
47
|
---
|
|
35
48
|
|
|
36
49
|
## ๊ตฌ๋
ยท์ค๋น๋ฌผ (2026)
|
package/docs/WORKFLOWS.md
CHANGED
|
@@ -8,23 +8,25 @@ CareerMate๋ ๋ด๋ถ์ LLM์ ๋์ง ์๋๋ค. ๋ถ์๊ณผ ์์ฑ์ ์ฌ์ฉ์
|
|
|
8
8
|
|
|
9
9
|
- ์ฐ๊ฒฐ ์งํ AI๊ฐ ๋ฐ๋ผ๊ฐ๋ ์์ ๋ฐ๋ถ์ [์์ ๋ฐ๋ถ](./START_WORKFLOW.md)์ ์ฐธ๊ณ ํ๋ค.
|
|
10
10
|
- ์ค์นยท์ฐ๊ฒฐ ์ ์ฐจ๋ [์ค์น ๋ฐ๋ถ](../INSTALL.md)(๋๋ [์ง์ ์ฑยท์ค์น ๋ ํผ๋ฐ์ค](./SUPPORTED_AI_APPS.md))์ ์ฐธ๊ณ ํ๋ค.
|
|
11
|
-
- MCP
|
|
11
|
+
- MCP ๋๊ตฌ์ ์
์ถ๋ ฅ ๋ช
์ธ๋ ์ฝ๋(`packages/mcp-tools/src/tools.ts`)์ ์ ์๋์ด ์์ผ๋ฉฐ, AI๋ ๊ฐ ๋๊ตฌ์ `inputSchema`๋ก ์ง์ ํ์ธํ ์ ์๋ค.
|
|
12
12
|
|
|
13
|
-
## ์ํฌํ๋ก์ฐ
|
|
13
|
+
## ์ํฌํ๋ก์ฐ 7์ข
๊ฐ์ (ํต์ฌ 6 + build_personal_brand)
|
|
14
14
|
|
|
15
15
|
| id | ์ ๋ชฉ | ํต์ฌ ๋ชฉ์ |
|
|
16
16
|
| --- | --- | --- |
|
|
17
17
|
| `onboarding` | ์จ๋ณด๋ฉ (์ฒซ ์
์
) | ํ๋กํยท์ด๋ ฅ์ยท์๊ธฐ์๊ฐ์๋ฅผ ๋ฑ๋กํ๊ณ ๋์๋ณด๋๋ฅผ ์ฐ๋ค. |
|
|
18
18
|
| `analyze_job` | ๊ณต๊ณ ๋ถ์ (์ ํฉ๋ ๋ถ์) | ๊ณต๊ณ ๋ฅผ ์ฝ์ด ํ๋กํ๊ณผ ๋น๊ตํ๊ณ , ๊ณต๊ณ ยท์ ํฉ๋ ๋ถ์์ ์ ์ฅํ ๋ค ์๊ธฐ์๊ฐ์ ์์ฑ์ ์ ์ํ๋ค. |
|
|
19
19
|
| `write_cover_letter` | ์๊ธฐ์๊ฐ์ ์์ฑ | ํน์ ๊ณต๊ณ ์ ๋ง์ถ ์๊ธฐ์๊ฐ์๋ฅผ ์ฌ์ฉ์ ํ์ธ์ ๊ฑฐ์ณ ์์ฑยท๋ฒ์ ์ ์ฅํ๋ค. |
|
|
20
|
+
| `write_career_description` | ๊ฒฝ๋ ฅ๊ธฐ์ ์ ์์ฑ | ํ๋กํยท์ด๋ ฅ์ยท๊ฒฝ๋ ฅยทํ๋ก์ ํธยท์คํฌ์ ๊ทผ๊ฑฐ๋ก ์ค์ ์ ์ถ ๊ฐ๋ฅํ ๊ฒฝ๋ ฅ๊ธฐ์ ์๋ฅผ ์์ฑยท์ ์ฅํ๋ค. |
|
|
20
21
|
| `manage_application_status` | ์ง์ ์ํ ๊ด๋ฆฌ | ์ง์ ์งํ ์ํฉ(8๋จ๊ณ)์ ์
๋ฐ์ดํธํ๊ณ ๋ค์ ํ๋์ ์ ์ํ๋ค. |
|
|
21
|
-
| `prepare_interview` | ๋ฉด์ ์ค๋น |
|
|
22
|
+
| `prepare_interview` | ๋ฉด์ ์ค๋น | ๊ณต๊ณ ๊ธฐ์ค ์์ ์ง๋ฌธยทSTAR ๋ต๋ณยท1๋ถ ์๊ธฐ์๊ฐ๋ฅผ ์ค๋นยท์ ์ฅํ๋ค. |
|
|
23
|
+
| `build_personal_brand` | ํผ์ค๋ ๋ธ๋๋ (LinkedInยทํฌํธํด๋ฆฌ์ค) | LinkedIn ํ๋กํยทํฌํธํด๋ฆฌ์ค ๊ฐ์ ์๊ธฐํํ ์์ฐ์ ์ง๋ฌด์ ๋ง์ถฐ ์์ฑยท์ต์ ํํ๋ค(์ด๋ ฅ์ ์ํฌํธ์ ๋ถ๋ฆฌ๋ ์ ํ ์์
). |
|
|
22
24
|
|
|
23
25
|
## ๊ณตํต ์์น
|
|
24
26
|
|
|
25
27
|
- **์ถ์ธก ๊ธ์ง**: ์ ์ฅ๋ ์ค์ ๊ฒฝํยท์ฑ๊ณผ๋ง ์ฌ์ฉํ๋ค. ์๋ ๊ฒฝํ์ ์ง์ด๋ด์ง ์์ผ๋ฉฐ, ๋น์นธ์ด๋ ํ์ธ์ด ํ์ํ ๋ถ๋ถ์ ํ์ํด ์ฌ์ฉ์์๊ฒ ๋ฌป๋๋ค.
|
|
26
28
|
- **์ฌ์ฉ์ ํ์ธ ์ฐ์ **: ํฐ ์์
(์๊ธฐ์๊ฐ์ ์์ฑ ๋ฑ)์ ์งํํ๊ธฐ ์ ์ ๋์ยท๊ฐ์กฐ์ ยทํคยท๋ถ๋์ ํ์ธํ๋ค.
|
|
27
|
-
- **์ฌ์ด
|
|
29
|
+
- **์ฌ์ด ์ ๋ฌ(์ฌ์ฉ์ ์ธ์ด)**: ๋ถ์ยท๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์๊ฒ ์ค๋ช
ํ ๋๋ ๊ธฐ์ ์ฉ์ด๋ฅผ ๋นผ๊ณ ์ฌ์ฉ์์ ์ธ์ด๋ก ์ฝ๊ฒ ์ ๋ฌํ๋ค.
|
|
28
30
|
- **๋ก์ปฌ ์ ์ฉ**: ๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ก์ปฌ์๋ง ์ ์ฅ๋๋ค.
|
|
29
31
|
|
|
30
32
|
---
|
|
@@ -38,7 +40,7 @@ CareerMate๋ ๋ด๋ถ์ LLM์ ๋์ง ์๋๋ค. ๋ถ์๊ณผ ์์ฑ์ ์ฌ์ฉ์
|
|
|
38
40
|
**๋จ๊ณ:**
|
|
39
41
|
|
|
40
42
|
1. `get_onboarding_status`๋ฅผ ํธ์ถํด ํ์ฌ ๋ฑ๋ก ์ํ(`has_profile`, `has_resume`, `has_cover_letter`, `has_experience`, `has_skills`, `profile_completeness`, `next_steps`)๋ฅผ ํ์ธํ๋ค.
|
|
41
|
-
2. ๋น์ด ์๋ ํญ๋ชฉ์
|
|
43
|
+
2. ๋น์ด ์๋ ํญ๋ชฉ์ ์ฌ์ฉ์์ ์ธ์ด๋ก ์ฝ๊ฒ ์๋ดํ๊ณ , ์ด๋ ฅ์/๊ฒฝ๋ ฅ๊ธฐ์ ์/ํฌํธํด๋ฆฌ์ค/์๊ธฐ์๊ฐ์ ํ์ผ ์
๋ก๋ ๋๋ ์ ๋ณด ์
๋ ฅ์ ์์ฒญํ๋ค.
|
|
42
44
|
3. ์์งํ ์ ๋ณด๋ฅผ ๊ตฌ์กฐํํด `save_profile`๋ก ์ ์ฅํ๋ค(์ด๋ฆยท์ฐ๋ฝ์ฒยท`headline`ยท`summary`ยท`desired_roles`ยท`desired_conditions`, ๊ทธ๋ฆฌ๊ณ ๊ธ์ฐ๊ธฐ ์ ํธ์ธ `preferred_tone`๊ณผ `emphasis_points` ํฌํจ). ํ์ผ ์ถ์ฒ๋ `source=upload`, ์ง์ ์
๋ ฅ์ `manual`.
|
|
43
45
|
4. ์
๋ก๋ํ ์ด๋ ฅ์/๊ฒฝ๋ ฅ๊ธฐ์ ์/ํฌํธํด๋ฆฌ์ค ๋ณธ๋ฌธ์ `add_resume`๋ก ์ ์ฅํ๋ค(`kind`ยท`title` ์ง์ , ๋ํ ๋ฌธ์๋ `is_primary=true`).
|
|
44
46
|
5. ๊ฒฝ๋ ฅยทํ๋ก์ ํธยท์คํฌ์ด ํ์
๋๋ฉด `add_experience`ยท`add_project`ยท`add_skill`๋ก ์ ์ฅํ๋ค โ ๊ฐ ๋๊ตฌ๋ ๋ฐฐ์ด์ ๋ฐ์ผ๋ฏ๋ก ํ์
ํ ํญ๋ชฉ์ ํ ๋ฒ์ ๋ชจ์ ๋๊ธด๋ค(ํญ๋ชฉ๋ง๋ค ๋ฐ๋ณต ํธ์ถํ์ง ์๋๋ค). ๊ฐ์ ํญ๋ชฉ์ ๋ค์ ๋ฃ์ด๋ ์ค๋ณต ์์ด ๊ฐฑ์ ๋๋ค(์์ฑ๋์ `has_experience`/`has_skills`์ ๋ฐ์).
|
|
@@ -73,9 +75,9 @@ get_onboarding_status
|
|
|
73
75
|
3. **๋น๊ต/๋ถ์** โ ๊ณต๊ณ ์๊ตฌ์ฌํญ๊ณผ ์ฌ์ฉ์ ๊ฒฝ๋ ฅ/์คํฌ/ํ๋ก์ ํธ๋ฅผ ๋น๊ตํ๋ค. ์ผ์นํ๋ ๊ฐ์ (`strengths`)๊ณผ ๋ถ์กฑํ ๋ถ๋ถ(`gaps`), ๋งค์นญ ํค์๋(`matched_keywords`)์ ๋๋ฝ ํค์๋(`missing_keywords`)๋ฅผ ๋์ถํ๊ณ , ์ข
ํฉ ์ ํฉ๋ ์ ์(`score` 0~100)์ ์์ฝ(`summary`), ์ง์ ์ ๋ต ์ ์(`recommendations`)์ ์ ๋ฆฌํ๋ค. **์๋ ๊ฒฝํ์ ์ง์ด๋ด์ง ์๋๋ค.**
|
|
74
76
|
4. **๊ณต๊ณ ์ ์ฅ** โ ์์ง ์ ์ฅ๋์ง ์์ ๊ณต๊ณ ๋ผ๋ฉด `save_job_posting`์ผ๋ก ๊ณต๊ณ ๋ฅผ ์ ์ฅํ๊ณ `job_id`๋ฅผ ํ๋ณดํ๋ค.
|
|
75
77
|
5. **๋ถ์ ์ ์ฅ** โ ๋์ถํ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ `save_fit_analysis`๋ก ์ ์ฅํ๋ค(`job_id`, `score`, `summary`, `strengths`, `gaps`, `matched_keywords`, `missing_keywords`, `recommendations`).
|
|
76
|
-
6. **์ฌ์ฉ์ ์ค๋ช
** โ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ
|
|
77
|
-
7. **์์์ ์ ์** โ "์ด ๊ณต๊ณ ์ ๋ง์ถ ์๊ธฐ์๊ฐ์๋ฅผ ์จ๋๋ฆด๊น์?"๋ผ๊ณ
|
|
78
|
-
8. **๋์ ์ ์์์ ์ ์ฅ** โ ์ฌ์ฉ์๊ฐ
|
|
78
|
+
6. **์ฌ์ฉ์ ์ค๋ช
** โ ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์ ์ธ์ด๋ก ์ฝ๊ฒ ์ค๋ช
ํ๋ค(์ ๋ง๋ ์ , ๋ณด์ํ ์ , ์ถ์ฒ ์ ๋ต). ๊ธฐ์ ์ฉ์ด๋ ๋นผ๊ณ ์ ๋ฌํ๋ค.
|
|
79
|
+
7. **์์์ ์ ํ ์ ์** โ ๋ถ์ ๋ค ๊ณง์ฅ ์๊ธฐ์๊ฐ์๋ฅผ ์ฐ์ง ๋ง๊ณ "์ด ๊ณต๊ณ ์ ๋ง์ถ ์๊ธฐ์๊ฐ์๋ฅผ ์จ๋๋ฆด๊น์?"๋ผ๊ณ ๋ฌป๊ณ ์ ํ์ง๋ฅผ ์ ์ํ๋ค: โ "๋ค, ์ด ๊ณต๊ณ ์ ๋ง์ถ ์๊ธฐ์๊ฐ์๋ฅผ ์จ์ค" โก "์๋์, ๋ถ์๋ง ์ ์ฅํด์ค".
|
|
80
|
+
8. **๋์ ์ ์์์ ์ ์ฅ** โ ์ฌ์ฉ์๊ฐ โ ์ ์ ํํ๋ฉด ์๊ธฐ์๊ฐ์๋ฅผ ์์ฑํ๊ธฐ ์ง์ `get_writing_style_guide`๋ก "AI ํฐ ์ ๋๋ ๊ธ์ฐ๊ธฐ ๊ท์น"์ ๊ฐ์ ธ์, ์ ํฉ๋ ๋ถ์ยท๊ธ์ฐ๊ธฐ ์ ํธ์ ํจ๊ป ๋ฐ์ํด ์๊ธฐ์๊ฐ์๋ฅผ ์์ฑํ๊ณ `save_cover_letter_version`์ผ๋ก ์ ์ฅํ๋ค(`job_id` ์ฐ๊ฒฐ, `note`์ ์์ฑ ์๋ ์์ฝ). โก๋ฅผ ์ ํํ๋ฉด ์์์ ์์ฑ ์์ด ๋ฉ์ถ๊ณ ์ ์ฅ ๊ฒฐ๊ณผ์ ๋์๋ณด๋ ํ์ธ๋ง ์๋ดํ๋ค.
|
|
79
81
|
9. **์ง์ ๊ฑด ์ด๊ธฐ** โ `open_application`์ผ๋ก ํด๋น ์ง์ ๊ฑด์ ์ด์ด ์ฌ์ฉ์๊ฐ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๊ฒ ํ๊ณ , ์ง์ ์ํ ๋ณ๊ฒฝ(์: ์ง์ ์์ /์ง์ ์๋ฃ)์ ์ ์ํ๋ค.
|
|
80
82
|
|
|
81
83
|
**๋๊ตฌ ํธ์ถ ์์ ์์ฝ(์ ์ ํ๋ฆ):**
|
|
@@ -86,9 +88,9 @@ get_onboarding_status
|
|
|
86
88
|
โ (๋น๊ต/๋ถ์: strengthsยทgapsยทํค์๋ยทscoreยทsummaryยทrecommendations)
|
|
87
89
|
โ save_job_posting # ๋ฏธ์ ์ฅ ๊ณต๊ณ ์ผ ๋๋ง, job_id ํ๋ณด
|
|
88
90
|
โ save_fit_analysis # job_id ์ฐ๊ฒฐ
|
|
89
|
-
โ (
|
|
90
|
-
โ (์๊ธฐ์๊ฐ์ ์์ฑ ์ ์)
|
|
91
|
-
โ save_cover_letter_version #
|
|
91
|
+
โ (์ฌ์ฉ์์ ์ธ์ด๋ก ์ฝ๊ฒ ์ค๋ช
)
|
|
92
|
+
โ (์๊ธฐ์๊ฐ์ ์์ฑ ์ฌ๋ถ ์ ํ์ง ์ ์)
|
|
93
|
+
โ save_cover_letter_version # ์ฌ์ฉ์๊ฐ "๋ค"๋ฅผ ์ ํํ ๊ฒฝ์ฐ์๋ง, job_idยทnote
|
|
92
94
|
โ open_application # ๊ฒฐ๊ณผ ํ์ธ + ์ํ ๋ณ๊ฒฝ ์ ์
|
|
93
95
|
```
|
|
94
96
|
|
|
@@ -106,16 +108,18 @@ get_onboarding_status
|
|
|
106
108
|
|
|
107
109
|
1. `get_application_context`(๊ฐ๋ฅํ๋ฉด `job_id` ํฌํจ)๋ฅผ ํธ์ถํด ํ๋กํยท๊ฒฝ๋ ฅยทํ๋ก์ ํธยท์คํฌยท๊ธฐ์กด ์๊ธฐ์๊ฐ์ยท์ด์ ์ ํฉ๋ ๋ถ์ยท๊ธ์ฐ๊ธฐ ์ ํธ(`preferred_tone`, `emphasis_points`)๋ฅผ ๊ฐ์ ธ์จ๋ค.
|
|
108
110
|
2. ์์ฑ ์ ์ ๋์ ๊ณต๊ณ , ๊ฐ์กฐํ ํฌ์ธํธ, ํค, ๋ถ๋์ ์ฌ์ฉ์์๊ฒ ํ์ธํ๋ค(ํ์ธ ์์ด ํฐ ์์
์ ์งํํ์ง ์๋๋ค).
|
|
109
|
-
3.
|
|
110
|
-
4.
|
|
111
|
-
5.
|
|
112
|
-
6.
|
|
111
|
+
3. `get_writing_style_guide`๋ฅผ ํธ์ถํด "AI ํฐ ์ ๋๋ ๊ธ์ฐ๊ธฐ ๊ท์น"(๋ฒ์ญํฌยทํด๋ฆฌ์
ฐยท๊ธฐ๊ณ์ ๋ณ๋ ฌยท์ํฌ์ ์ฐ๊ฒฐ์ดยท๊ท ์ผํ ๋ฌธ์ฅ ๋ฆฌ๋ฌ ์ ๊ฑฐ)์ ๊ฐ์ ธ์จ๋ค.
|
|
112
|
+
4. ์ ์ฅ๋ ์ค์ ๊ฒฝํยท์ฑ๊ณผ๋ง์ผ๋ก ์๊ธฐ์๊ฐ์๋ฅผ ์์ฑํ๋, ์ ๊ธ์ฐ๊ธฐ ๊ท์น์ ์ ์ฉํด ์ฌ๋์ด ์ด ๋ฏ ์์ฐ์ค๋ฝ๊ฒ ์ด๋ค(์ฌ์คยท์์นยท๊ณ ์ ๋ช
์ฌ๋ ๊ทธ๋๋ก). ๋น์นธ์ด๋ ํ์ธ์ด ํ์ํ ๋ถ๋ถ์ ์ถ์ธกํ์ง ๋ง๊ณ ํ์ํด ์ฌ์ฉ์์๊ฒ ๋ฌป๋๋ค.
|
|
113
|
+
5. ์์ฑ๋ณธ์ `save_cover_letter_version`์ผ๋ก ์ ์ฅํ๋ค(๊ธฐ์กด ์๊ธฐ์๊ฐ์๋ฉด `cover_letter_id`, ์๋ก ๋ง๋ค๋ฉด `title`, ๊ณต๊ณ ์ฉ์ด๋ฉด `job_id`, ๋ณ๊ฒฝ ์์ฝ์ `note`, `source=ai`).
|
|
114
|
+
6. ์ฌ์ฉ์๊ฐ ์ํ๋ฉด `export_cover_letter`๋ก ํ์ผ๋ก ๋ด๋ณด๋ด๊ณ , ์ถ๊ฐ ์์ ์์ฒญ์ด ์์ผ๋ฉด ์ ๋ฒ์ ์ผ๋ก ๋ค์ ์ ์ฅํ๋ค.
|
|
115
|
+
7. ์ ์ฅ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์ ์ธ์ด๋ก ์๋ฆฌ๊ณ , ์ง์ ์ํ ์
๋ฐ์ดํธ(`update_application_status`)๋ ๋ฉด์ ์ค๋น ๋ฑ ๋ค์ ๋จ๊ณ๋ฅผ ์ ์ํ๋ค.
|
|
113
116
|
|
|
114
117
|
**๋๊ตฌ ํธ์ถ ์์ ์์ฝ:**
|
|
115
118
|
|
|
116
119
|
```
|
|
117
120
|
get_application_context # job_id ์์ผ๋ฉด ํจ๊ป ์ ๋ฌ
|
|
118
121
|
โ (๋์ยท๊ฐ์กฐ์ ยทํคยท๋ถ๋ ํ์ธ)
|
|
122
|
+
โ get_writing_style_guide # ์์ฑ ์ง์ , AI ํฐ ์ ๋๋ ๊ธ์ฐ๊ธฐ ๊ท์น
|
|
119
123
|
โ save_cover_letter_version # cover_letter_id ๋๋ title, job_id, note, source=ai
|
|
120
124
|
โ export_cover_letter (์ ํ)
|
|
121
125
|
โ (๋ค์ ๋จ๊ณ ์ ์: update_application_status ๋ฑ)
|
|
@@ -123,7 +127,41 @@ get_application_context # job_id ์์ผ๋ฉด ํจ๊ป ์ ๋ฌ
|
|
|
123
127
|
|
|
124
128
|
---
|
|
125
129
|
|
|
126
|
-
## 4.
|
|
130
|
+
## 4. write_career_description โ ๊ฒฝ๋ ฅ๊ธฐ์ ์ ์์ฑ
|
|
131
|
+
|
|
132
|
+
ํ๋กํยท์ด๋ ฅ์ยท๊ฒฝ๋ ฅยทํ๋ก์ ํธยท์คํฌ์ ๊ทผ๊ฑฐ๋ก ์ค์ ์ ์ถ ๊ฐ๋ฅํ ๊ฒฝ๋ ฅ๊ธฐ์ ์๋ฅผ ์์ฑํ๊ณ ๋ฌธ์ํจ์ ์ ์ฅํ๋ ํ๋ฆ.
|
|
133
|
+
|
|
134
|
+
**ํธ๋ฆฌ๊ฑฐ:** ์ฌ์ฉ์๊ฐ "๊ฒฝ๋ ฅ๊ธฐ์ ์ ์จ์ค / ๊ฒฝ๋ ฅ๊ธฐ์ ์ ๋ง๋ค์ด์ค / ๋ด ๊ฒฝ๋ ฅ ์ ๋ฆฌํด์ค"๋ผ๊ณ ์์ฒญํ ๋.
|
|
135
|
+
|
|
136
|
+
**๋จ๊ณ:**
|
|
137
|
+
|
|
138
|
+
1. `get_onboarding_status`๋ก ์ค๋น ์ํ๋ฅผ ํ์ธํ๊ณ , `get_profile`ยท`get_resumes`ยท`get_experiences`ยท`get_projects`ยท`get_skills`๋ฅผ ํธ์ถํด ๊ธฐ์กด ํ๋กํ, ์ด๋ ฅ์, ๊ฒฝ๋ ฅ๊ธฐ์ ์(`kind=career_description`), ๊ฒฝ๋ ฅ, ํ๋ก์ ํธ, ๊ธฐ์ ์คํ์ ๋ชจ๋ ํ์ธํ๋ค.
|
|
139
|
+
2. ์ฌ์ฉ์๊ฐ ํ์ผ ๊ฒฝ๋ก๋ฅผ ์ฃผ๋ฉด `read_document`๋ก ์ฝ๊ณ , ์ธ์
ํด๋๋ฅผ ์ฌ์ฉํ๋ค๋ฉด `read_inbox`๋ก ๋ณธ๋ฌธ์ ์ฝ๋๋ค. ์ด๋ฏธ ์ ์ฅ๋ ์๋ฃ์ ์ ํ์ผ์ ๋น๊ตํด ์ค๋ณตยท์์ถฉ๋๋ ์ฌ์ค์ ํ์ํ๊ณ ์ถ์ธกํ์ง ์๋๋ค.
|
|
140
|
+
3. `get_workflow_guide({ workflow_id: "write_career_description" })`๊ฐ ์๋ดํ๋ ์ ๋ฌธ๊ฐ ์ ์ฐจ๋ฅผ ๋ฐ๋ฅธ๋ค. ์์ฑ ์ง์ `get_playbook({ domain: "resume" })`์ `get_playbook({ domain: "ats" })`๋ฅผ ๋ฐ์ ์ค์ ๊ฒฝ๋ ฅ๊ธฐ์ ์ ํ์๊ณผ ATS ์นํ์ฑ์ ์ ์ฉํ๋ค.
|
|
141
|
+
4. ์์ฑ ์ ์ ๋ชฉ์ ์ ํ์ธํ๋ค: ๋ฒ์ฉ ๋ง์คํฐ๋ณธ์ธ์ง, ํน์ ์ง๋ฌด/๊ณต๊ณ ์ฉ์ธ์ง, ์ ์
/๋ฌด๊ฒฝ๋ ฅ์ด๋ผ ํ๋ก์ ํธยท๊ต์กยทํ๋ ์ค์ฌ ์ญ๋๊ธฐ์ ์๋ก ์ธ์ง, ๋ถ๋๊ณผ ํค์ ์ด๋ป๊ฒ ํ ์ง ๋ฌป๋๋ค.
|
|
142
|
+
5. ๊ฒฝ๋ ฅ๊ธฐ์ ์๋ ์๊ธฐ์๊ฐ์์ฒ๋ผ ์์ฌ๋ก ์ฐ์ง ์๋๋ค. ์ ๋ชฉ, ํต์ฌ ์์ฝ, ํต์ฌ ์ญ๋, ๊ฒฝ๋ ฅ/ํ๋ก์ ํธ๋ณ ์ญํ ยท๊ธฐ๊ฐยท๋๊ตฌยท๋ฌธ์ ยทํ๋ยท์ฑ๊ณผ๋ฅผ ํ๋ ๋ถ๋ฆฟ ์ค์ฌ์ผ๋ก ์ ๋ฆฌํ๋ค. ์์นยทํ์ฌ๋ช
ยท๊ธฐ๊ฐยท์ง์ฑ
์ ์ ์ฅ๋ ์ฌ์ค๋ง ์ฐ๊ณ , ์๋ ์ฑ๊ณผ ์์น๋ ๋ง๋ค์ง ์๋๋ค.
|
|
143
|
+
6. ๋ฌด๊ฒฝ๋ ฅ/๋น๊ฐ๋ฐ์๋ผ๋ฉด ๊ฒฝ๋ ฅ์ ๋ ์กฐํ์ง ๋ง๊ณ ๊ต์กยทํ๋ก์ ํธยท์ด์ ๊ฒฝํยท์
๋ฌด ๋๊ตฌยทํ์
๊ฒฝํยท์ฑ๊ณผ ์ฆ๊ฑฐ ์ค์ฌ์ "์ญ๋๊ธฐ์ ์"๋ก ๊ตฌ์ฑํ๋ค.
|
|
144
|
+
7. ์ ์ฅ ์ง์ `get_verifier({ id: "truthfulness" })`, `get_verifier({ id: "consistency" })`, `get_verifier({ id: "ats-compat" })`๋ฅผ ๋ฐ์ AI๊ฐ ์ง์ ์ ๊ฒํ๊ณ , ํ์ยท์์ถฉยทํค์๋ ๋๋ฝ์ ๊ณ ์น๋ค.
|
|
145
|
+
8. ์์ฑ๋ณธ์ `add_resume`์ผ๋ก ์ ์ฅํ๋ค(`kind=career_description`, `source=ai`, title์ ์ฌ์ฉ ๋ชฉ์ ์ด ๋๋ฌ๋๊ฒ ์์ฑ, tags์ ์ง๋ฌด/์ฉ๋ ํค์๋ ํฌํจ). ๋ํ ๋ฌธ์๋ก ์ผ์๋ ๋๋์ง ํ์ธ๋ ๊ฒฝ์ฐ์๋ง `is_primary=true`๋ฅผ ์ด๋ค.
|
|
146
|
+
9. ์ ์ฅ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์ ์ธ์ด๋ก ์๋ฆฌ๊ณ , ๋ฌธ์ ํญ์์ ํ์ธํ ์ ์์์ ์๋ดํ๋ค. ํน์ ๊ณต๊ณ ์ฉ์ผ๋ก ์์ฑํ๋ค๋ฉด ์ด์ด์ ์๊ธฐ์๊ฐ์๋ ๋ฉด์ ์ค๋น๋ฅผ ์ ์ํ๋ค.
|
|
147
|
+
|
|
148
|
+
**๋๊ตฌ ํธ์ถ ์์ ์์ฝ:**
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
get_onboarding_status
|
|
152
|
+
โ get_profile / get_resumes / get_experiences / get_projects / get_skills
|
|
153
|
+
โ read_document | read_inbox (์ฌ์ฉ์๊ฐ ํ์ผ์ ์ค ๊ฒฝ์ฐ)
|
|
154
|
+
โ get_workflow_guide({ workflow_id: "write_career_description" })
|
|
155
|
+
โ get_playbook({ domain: "resume" }) / get_playbook({ domain: "ats" })
|
|
156
|
+
โ (๋ชฉ์ ยท๋์ ์ง๋ฌดยท๋ถ๋ ํ์ธ)
|
|
157
|
+
โ (๊ฒฝ๋ ฅ๊ธฐ์ ์ ์์ฑ: ์์ฝยท์ญ๋ยท๊ฒฝ๋ ฅ/ํ๋ก์ ํธยท์ฑ๊ณผ)
|
|
158
|
+
โ get_verifier({ id: "truthfulness" }) / get_verifier({ id: "consistency" }) / get_verifier({ id: "ats-compat" })
|
|
159
|
+
โ add_resume(kind=career_description, source=ai)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## 5. manage_application_status โ ์ง์ ์ํ ๊ด๋ฆฌ
|
|
127
165
|
|
|
128
166
|
์ง์ ์งํ ์ํฉ(8๋จ๊ณ)์ ์
๋ฐ์ดํธํ๊ณ ์ํ์ ๋ง๋ ๋ค์ ํ๋์ ์ ์ํ๋ ํ๋ฆ.
|
|
129
167
|
|
|
@@ -133,7 +171,7 @@ get_application_context # job_id ์์ผ๋ฉด ํจ๊ป ์ ๋ฌ
|
|
|
133
171
|
|
|
134
172
|
1. ํ์ํ๋ฉด `get_application_context` ๋๋ `get_job_posting`์ผ๋ก ๋์ ์ง์ ๊ฑด๊ณผ ๊ณต๊ณ ๋ฅผ ํ์ธํ๋ค.
|
|
135
173
|
2. ์ ์ ํ ์ํ๋ก `update_application_status`๋ฅผ ํธ์ถํ๋ค. 8๋จ๊ณ: `draft`(์์ฑ ์ค), `planned`(์ง์ ์์ ), `applied`(์ง์ ์๋ฃ), `document_passed`(์๋ฅ ํฉ๊ฒฉ), `interview`(๋ฉด์ ์งํ), `final_passed`(์ต์ข
ํฉ๊ฒฉ), `rejected`(๋ถํฉ๊ฒฉ), `on_hold`(๋ณด๋ฅ). ๋ณ๊ฒฝ ์ฌ์ ๋ `note`์ ๋จ๊ธด๋ค.
|
|
136
|
-
3. ๋ณ๊ฒฝ ๊ฒฐ๊ณผ๋ฅผ
|
|
174
|
+
3. ๋ณ๊ฒฝ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์ ์ธ์ด๋ก ์ฝ๊ฒ ์๋ฆฐ๋ค.
|
|
137
175
|
4. ์ํ์ ๋ง๋ ๋ค์ ๋จ๊ณ๋ฅผ ์ ์ํ๋ค:
|
|
138
176
|
- `applied` โ ๊ฒฐ๊ณผ ๊ธฐ๋ค๋ฆฌ๊ธฐ ์๋ด
|
|
139
177
|
- `document_passed` / `interview` โ ๋ฉด์ ์ค๋น(`prepare_interview`) ์ ์
|
|
@@ -141,7 +179,7 @@ get_application_context # job_id ์์ผ๋ฉด ํจ๊ป ์ ๋ฌ
|
|
|
141
179
|
- `rejected` / `on_hold` โ ํ๊ณ ๋๋ ๋ค๋ฅธ ๊ณต๊ณ ํ์ ์ ์
|
|
142
180
|
5. ํ์ํ๋ฉด `open_application`์ผ๋ก ํด๋น ์ง์ ๊ฑด์ ์ด์ด ๋ณด์ฌ์ค๋ค.
|
|
143
181
|
|
|
144
|
-
**์ํ ์ ์ด ์ฐธ๊ณ :** `document_passed`
|
|
182
|
+
**์ํ ์ ์ด ์ฐธ๊ณ :** `document_passed` ์ด์์์๋ ๋ฉด์ ์ค๋น๋ฅผ ๋ค์ ํ๋์ผ๋ก ์ฐ์ ์ ์ํ๋ค. 8๋จ๊ณ ์ํ๊ฐ์ ์ฝ๋(`update_application_status`์ `inputSchema`)์ ์ ์๋์ด ์๋ค.
|
|
145
183
|
|
|
146
184
|
**๋๊ตฌ ํธ์ถ ์์ ์์ฝ:**
|
|
147
185
|
|
|
@@ -154,11 +192,11 @@ get_application_context | get_job_posting (ํ์ ์)
|
|
|
154
192
|
|
|
155
193
|
---
|
|
156
194
|
|
|
157
|
-
##
|
|
195
|
+
## 6. prepare_interview โ ๋ฉด์ ์ค๋น
|
|
158
196
|
|
|
159
|
-
|
|
197
|
+
๊ณต๊ณ ๊ธฐ์ค ์์ ์ง๋ฌธยทSTAR ๋ต๋ณยท1๋ถ ์๊ธฐ์๊ฐ๋ฅผ ์ค๋นํด ์ ์ฅํ๋ ํ๋ฆ.
|
|
160
198
|
|
|
161
|
-
**ํธ๋ฆฌ๊ฑฐ:** ์ง์ ์ํ๊ฐ ์๋ฅ ํฉ๊ฒฉ(`document_passed`) ๋๋ ๋ฉด์ ์งํ(`interview`)์ผ๋ก ๋ฐ๋์์
|
|
199
|
+
**ํธ๋ฆฌ๊ฑฐ:** ์ฌ์ฉ์๊ฐ "๋ฉด์ ์ค๋น ๋์์ค"๋ผ๊ณ ์์ฒญํ๊ฑฐ๋, ์ง์ ์ํ๊ฐ ์๋ฅ ํฉ๊ฒฉ(`document_passed`) ๋๋ ๋ฉด์ ์งํ(`interview`)์ผ๋ก ๋ฐ๋์์ ๋.
|
|
162
200
|
|
|
163
201
|
**๋จ๊ณ:**
|
|
164
202
|
|
|
@@ -166,7 +204,7 @@ get_application_context | get_job_posting (ํ์ ์)
|
|
|
166
204
|
2. ๊ณต๊ณ ์ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ์์ ๋ฉด์ ์ง๋ฌธ(`question`, `intent`, `followups`, `answer_outline`)์ ๋์ถํ๋ค.
|
|
167
205
|
3. ํต์ฌ ๊ฒฝํ์ ๋ํ STAR ๊ฐ์ด๋(`question`, `situation`, `task`, `action`, `result`)์ 1๋ถ ์๊ธฐ์๊ฐ(`self_introduction`) ์ด์์ ์์ฑํ๋ค. **์ค์ ๊ฒฝํ๋ง ์ฌ์ฉํ๋ค.**
|
|
168
206
|
4. ์ค๋น ๋ด์ฉ์ `save_interview_prep`๋ก ์ ์ฅํ๋ค(`job_id`, `questions`, `star_guides`, `self_introduction`, `notes`).
|
|
169
|
-
5. ์ค๋น ๋ด์ฉ์
|
|
207
|
+
5. ์ค๋น ๋ด์ฉ์ ์ฌ์ฉ์์ ์ธ์ด๋ก ์ฝ๊ฒ ์์ฝํด ์ ๋ฌํ๊ณ , ๋ชจ์ ๋ฉด์ /์ถ๊ฐ ์ง๋ฌธ ์ฐ์ต์ด๋ ์ํ ์
๋ฐ์ดํธ(`update_application_status`๋ก `interview`/`final_passed`)๋ฅผ ์ ์ํ๋ค.
|
|
170
208
|
|
|
171
209
|
**๋๊ตฌ ํธ์ถ ์์ ์์ฝ:**
|
|
172
210
|
|
|
@@ -180,20 +218,39 @@ get_application_context # job_id ํฌํจ
|
|
|
180
218
|
|
|
181
219
|
---
|
|
182
220
|
|
|
221
|
+
## 7. build_personal_brand โ ํผ์ค๋ ๋ธ๋๋ (LinkedInยทํฌํธํด๋ฆฌ์ค)
|
|
222
|
+
|
|
223
|
+
LinkedIn ํ๋กํ๊ณผ ํฌํธํด๋ฆฌ์ค ๊ฐ์ ์๊ธฐํํ ์์ฐ์ ์ง๋ฌด์ ๋ง์ถฐ ์์ฑยท์ต์ ํํ๋ ํ๋ฆ. ์ด๋ ฅ์ ์ํฌํธ(`onboarding`)์ ๋จ๊ณ ์๋ฏธ๊ฐ ๋ฌ๋ผ(๊ฐ์ธ ๋ธ๋๋ ์์ฐ *์์ฑ*) ๋ณ๋ ์ํฌํ๋ก์ฐ๋ก ๋๋ค.
|
|
224
|
+
|
|
225
|
+
**ํธ๋ฆฌ๊ฑฐ:** ์ฌ์ฉ์๊ฐ "๋งํฌ๋์ธ ํ๋กํ ๋ด์ค / ํฌํธํด๋ฆฌ์ค ์ ๋ฆฌํด์ค / ํผ์ค๋ ๋ธ๋๋ฉ ๋์์ค"๋ผ๊ณ ์์ฒญํ ๋.
|
|
226
|
+
|
|
227
|
+
**๋จ๊ณ:**
|
|
228
|
+
|
|
229
|
+
1. `get_application_context`(๊ฐ๋ฅํ๋ฉด ๋์ `job_id` ํฌํจ)๋ก ํ๋กํยท๊ฒฝ๋ ฅยทํ๋ก์ ํธยท์คํฌยท๋ํ ์ด๋ ฅ์ยท๊ธ์ฐ๊ธฐ ์ ํธ๋ฅผ ๊ฐ์ ธ์จ๋ค. ํ๊น ๊ณต๊ณ ๊ฐ ์์ผ๋ฉด ๊ทธ ํค์๋๋ฅผ ์ฌ์ ์
๋ ฅ์ผ๋ก ์ด๋ค.
|
|
230
|
+
2. `get_workflow_guide({ workflow_id: "build_personal_brand" })`๋ก ์ ๋ฌธ๊ฐ ์ ์ฐจ๋ฅผ ๋ฐ๊ณ , ์์ฑ ์ง์ `get_playbook({ domain: "linkedin-profile" })`ยท`get_playbook({ domain: "portfolio" })`๋ก ํค๋๋ผ์ธยทAboutยท3๋ง(problemโapproachโimpact) ๊ท๋ฒ์ ์ ์ฉํ๋ค.
|
|
231
|
+
3. ๋ฌด์์ ๋ง๋ค์ง ํ์ธํ๋ค(LinkedIn/ํฌํธํด๋ฆฌ์ค/๋ ๋ค, ํ๊น ์ง๋ฌด, ๊ฐ์กฐ ํฌ์ธํธ). ์ ์ฅ๋ ์ค์ ๊ฒฝํยท์ฑ๊ณผ๋ง ์ฐ๊ณ ์๋ ์์นยท๊ณ ์ ๋ช
์ฌ๋ `[ํ์ธ ํ์]`๋ก ํ์ํด ๋ฌป๋๋ค.
|
|
232
|
+
4. ์ ์ฅ ์ง์ `get_verifier({ id: "human-voice" })`ยท`truthfulness`ยท`consistency`๋ก ์ง์ ์ ๊ฒํ๋ค(AI ํฐยทํ๊ฐยท์ฌ์ค ๋ณด์กด).
|
|
233
|
+
5. ํฌํธํด๋ฆฌ์ค ๋ณธ๋ฌธ์ `add_resume`(`kind=portfolio`)๋ก ์ ์ฅํ๋ค. LinkedIn ์ด์์ ์ฌ์ฉ์๊ฐ ๋ณต์ฌํด ์ฐ๋๋ก ์ ์ํ๋ค(์ ์ฉ ์ ์ฅยท๊ฒ์ฆ ๋๊ตฌ๋ Phase B).
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
183
237
|
## ์ํฌํ๋ก์ฐ ๊ฐ ์ฐ๊ฒฐ
|
|
184
238
|
|
|
185
239
|
์ํฌํ๋ก์ฐ๋ ๋
๋ฆฝ์ ์ด์ง ์๊ณ ์์ฐ์ค๋ฝ๊ฒ ์ด์ด์ง๋ค.
|
|
186
240
|
|
|
187
241
|
```
|
|
188
242
|
onboarding
|
|
243
|
+
โ write_career_description
|
|
189
244
|
โ analyze_job โโ(์์์ ์ ์ ๋์)โโโ write_cover_letter
|
|
190
245
|
โ
|
|
191
|
-
โโโ manage_application_status โโ(document_passed
|
|
246
|
+
โโโ manage_application_status โโ(document_passed ์ด์์ด๋ฉด ์ฐ์ ์ ์)โโโ prepare_interview
|
|
192
247
|
```
|
|
193
248
|
|
|
249
|
+
- `write_career_description`์ ๊ณต๊ณ ์ ๋ฌด๊ดํ ๋ง์คํฐ๋ณธ์ผ๋ก๋ ์์ํ ์ ์๊ณ , ํน์ ๊ณต๊ณ ์ฉ์ผ๋ก ์์ฑํ ๋ค `write_cover_letter`๋ก ์ด์ด์ง ์๋ ์๋ค.
|
|
194
250
|
- `analyze_job`์ ๋ง์ง๋ง ๋จ๊ณ๋ ์๊ธฐ์๊ฐ์ ์์ฑ ์ ์์ผ๋ก ์ด์ด์ง๋ฉฐ, ๋์ ์ `write_cover_letter`์ ์์
(=`save_cover_letter_version`)์ ์ํํ๋ค.
|
|
195
251
|
- `manage_application_status`์์ ์ํ๊ฐ `document_passed`/`interview`๊ฐ ๋๋ฉด `prepare_interview`๋ฅผ ์ ์ํ๋ค.
|
|
196
252
|
- ๋ชจ๋ ํ๋ฆ์์ ๋ฐ์ดํฐ ์กฐํ์ ์ค์ฌ์ `get_application_context`์ด๋ฉฐ, ์์ฑ/๋ถ์์ ํ์ํ ์ปจํ
์คํธ๋ฅผ ํ ๋ฒ์ ์ ๊ณตํ๋ค.
|
|
253
|
+
- `build_personal_brand`(LinkedInยทํฌํธํด๋ฆฌ์ค)๋ ํต์ฌ 6 ํ๋ฆ๊ณผ ๋
๋ฆฝ์ ์ธ ์ ํ ์์
์ผ๋ก, ์ฌ์ฉ์๊ฐ ์๊ธฐํํ ์์ฐ์ ์์ฒญํ ๋ ์ง์
ํ๋ค.
|
|
197
254
|
|
|
198
255
|
## ์ฝ๋์์ ๋์
|
|
199
256
|
|
package/docs/career-os/README.md
CHANGED
|
@@ -46,9 +46,14 @@ EOPยท์ด ๋ฌธ์๋ฅผ ๋งน์ ํ์ง ๋ง ๊ฒ. **์ ์ฅ๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ ๊ณต
|
|
|
46
46
|
โ EOP ์๊ฐ๊ฒ์ฆ ๋ฃจ๋ธ๋ฆญ ์ ์ฉ โ ์์ โ ์ถ๋ ฅ ๊ณ์ฝ๋๋ก ์ต์ข
์ ๊ณต
|
|
47
47
|
```
|
|
48
48
|
์ปจํ
์คํธ๊ฐ ์ด๋ฏธ ์์ผ๋ฉด ๋ค์ ๋ฌป์ง ์๋๋ค(AGENTS.md "๊ธฐ์กด ๋ฐ์ดํฐ ๋จผ์ "). ๊ฒฐ๊ณผ๋ ๋ค์ CareerMate์ ์ ์ฅ(`save_*`).
|
|
49
|
-
**๋ฃจํ ์ข
๋ฃ ๊ท์จ:** ์๊ฐ๊ฒ์ฆโ์์ ์ ๋ฐ๋ณตํ๋, ๊ฐ์ ํต์ฌ ๊ฒฐํจ(ํ์ ์์นยท๋ฏธ์ต์ปค ์ฌ์ค ๋ฑ)์ด 2๋ฒ ๊ณ ์ณ๋ ๋จ์ผ๋ฉด ๋ ์์ฑํ์ง ๋ง๊ณ ๊ทธ ๋ถ๋ถ์ ๋ณด๋ฅํ ์ฑ
|
|
49
|
+
**๋ฃจํ ์ข
๋ฃ ๊ท์จ:** ์๊ฐ๊ฒ์ฆโ์์ ์ ๋ฐ๋ณตํ๋, ๊ฐ์ ํต์ฌ ๊ฒฐํจ(ํ์ ์์นยท๋ฏธ์ต์ปค ์ฌ์ค ๋ฑ)์ด 2๋ฒ ๊ณ ์ณ๋ ๋จ์ผ๋ฉด ๋ ์์ฑํ์ง ๋ง๊ณ ๊ทธ ๋ถ๋ถ์ ๋ณด๋ฅํ ์ฑ ์ฌ์ฉ์์ ์ธ์ด๋ก ์ถ์ฒ/์ฌ์ค์ ํ์ธ ์์ฒญํ๋ค. ์ ์ฅ ๋ฐ์ดํฐ์ ์์ด ํด๊ฒฐ ๋ถ๊ฐํ ๊ฐญ์ ์ฆ์ ์ฌ์ฉ์์๊ฒ ๋ฌป๋๋ค โ **๋ฌดํ์ ๊ณ ์ณ์ฐ์ง ์๋๋ค.**
|
|
50
50
|
|
|
51
51
|
## 3. ๋ณดํธ ์ถ๋ ฅ ๊ณ์ฝ (์ฌ์ฉ์ ๋๋ฉด)
|
|
52
|
+
|
|
53
|
+
**์ถ๋ ฅ ์ธ์ด = ์ฌ์ฉ์์ ๋ํ ์ธ์ด.** ์ฌ์ฉ์๊ฐ ํ๊ตญ์ด๋ฉด ํ๊ตญ์ด๋ก, ๋ค๋ฅธ ์ธ์ด๋ฉด ๊ทธ ์ธ์ด๋ก ๋ตํ๋ค. ์ด ๋ฌธ์ยทEOPยทํ๋ ์ด๋ถยท๋๊ตฌ ์๋ต์ด ํ๊ตญ์ด๋ก ์ฐ์ฌ ์์ด๋ ๊ทธ๋๋ก ๋ณต์ฌํ์ง ๋ง๊ณ ์ฌ์ฉ์ ์ธ์ด๋ก ์ฎ๊ธด๋ค(์ฌ์คยท์์นยท๊ณ ์ ๋ช
์ฌยท์ธ์ฉ ์๋ฌธ์ ๋ณด์กด).
|
|
54
|
+
|
|
55
|
+
**๋ก์ผ์ผ(์์ฅ) ํ์ โ ๋ํ ์ธ์ด์ ๋ถ๋ฆฌํ๋ค.** ์ ์ถ์ฉ ์ฐ์ถ๋ฌผ(์์์ยท์ด๋ ฅ์ ๋ณธ๋ฌธ ๋ฑ)์ *์ธ์ด์ ์์ฅ ๊ดํ*์ **๋์ ๊ณต๊ณ ยท์์ฅ**์ ๋ฐ๋ฅธ๋ค(๋ํ ์ธ์ด์ ๋ค๋ฅผ ์ ์๋ค โ ์: ํ๊ตญ์ธ์ด ์๋ฌธ ๊ณต๊ณ ์ ์๋ฌธ ๋ ํฐ). ๋ก์ผ์ผ์ ์ ์ฅ ๊ฐ์ด ์๋๋ผ ๋น์ ์ด ์ถ๋ก ํ๋ค: โ ๋์ ๊ณต๊ณ (job)์ ์ธ์ดยท์์ฌ์ง, โก ์ฌ์ฉ์์ ๋ช
์ ์์ฒญ, โข ๋ถ๋ช
ํํ๋ฉด ์ฌ์ฉ์์๊ฒ ํ ๋ฒ๋ง ํ์ธ(์ถ์ธก ๊ธ์ง). `ko`(ํ๊ตญ ๊ณต๊ณ /์ง์) โ ํ๊ตญ ์ฑ์ฉ ๊ดํ(๋ฌธํญํ ์์์ยทNCSยท๋ธ๋ผ์ธ๋ยท์ฑ์ฉ์ ์ฐจ๋ฒยท๊ตญ๋ด AI ํ
์คํธ ํ์ง ๋ฑ), ๋นํ๊ตญ ๋ก์ผ์ผ โ ๊ทธ ์์ฅ ๊ดํ(ATSยท๋จ์ผ ์ปค๋ฒ๋ ํฐ ๋ฑ). **๊ฐ EOP์ 'ํ๊ตญ ํน์/ํ๊ตญ ์์ฅ' ์ ์ ๋ก์ผ์ผ์ด ํ๊ตญ์ผ ๋๋ง ์ ์ฉ**ํ๊ณ , ๋นํ๊ตญ ๊ณต๊ณ ์๋ ๊ทธ ์์ฅ ๊ธฐ์ค์ ์ด๋ค.
|
|
56
|
+
|
|
52
57
|
๋ชจ๋ ๊ฒฐ๊ณผ๋ ๋ค์์ ํฌํจํ๋ค(๊ธฐ๋ฅ๋ณ EOP๊ฐ ์์ธํ):
|
|
53
58
|
- **๊ฒฐ๋ก ** โ ํ๋์ ๋ต
|
|
54
59
|
- **๊ทผ๊ฑฐ** โ ์ ์ฅ ๋ฐ์ดํฐยท๊ณต๊ณ ์ธ์ฉ(์์น๋ ์ถ์ฒ์ ํจ๊ป)
|
|
@@ -59,10 +64,10 @@ EOPยท์ด ๋ฌธ์๋ฅผ ๋งน์ ํ์ง ๋ง ๊ฒ. **์ ์ฅ๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ ๊ณต
|
|
|
59
64
|
- **์ต์ข
์ฐ์ถ๋ฌผ**(์์ผ๋ฉด: ์์์ ๋ณธ๋ฌธยท๋ฉด์ ํทยท์ ํฉ๋ํ ๋ฑ)
|
|
60
65
|
- **์์ฑํ deliverable ๋ถ๋ฆฌ:** ์์์ยท๋ฉด์ ๋ต๋ณยท์ด๋ ฅ์ ๋ถ๋ฆฟ์ฒ๋ผ *๊ทธ๋๋ก ์ ์ถ/์ฌ์ฉํ๋* ์ฐ์ถ๋ฌผ์ ๋ฉํ(๊ฒฐ๋ก ยท๊ทผ๊ฑฐยท๋ฆฌ์คํฌ ๋ฑ)์ **๋ช
ํํ ๋ถ๋ฆฌ**ํด ๋จ๋
๋ธ๋ก์ผ๋ก ์ ์ํ๋ค โ ์์ด๋ฉด ์ฌ์ฉ์๊ฐ ํต์งธ๋ก ์ ์ถํด ์์ ์๋ฐ์ด ๋๋ค.
|
|
61
66
|
|
|
62
|
-
**์จ๊ธธ ๊ฒ:** ๋ด๋ถ ๋ผ์ฐํธยท๋๊ตฌ๋ช
ยทEOP/๋ฃจ๋ธ๋ฆญ ์๋ฌธยท์ ์ ๊ณ์ฐ ๋ด๋ถยท์ด ๋ฌธ์. ๊ธฐ์ ์ฉ์ด(job_id, MCP ๋ฑ) ์ฌ์ฉ์ ๋
ธ์ถ ๊ธ์ง โ
|
|
67
|
+
**์จ๊ธธ ๊ฒ:** ๋ด๋ถ ๋ผ์ฐํธยท๋๊ตฌ๋ช
ยทEOP/๋ฃจ๋ธ๋ฆญ ์๋ฌธยท์ ์ ๊ณ์ฐ ๋ด๋ถยท์ด ๋ฌธ์. ๊ธฐ์ ์ฉ์ด(job_id, MCP ๋ฑ) ์ฌ์ฉ์ ๋
ธ์ถ ๊ธ์ง โ ์ฌ์ฉ์์ ์ธ์ด๋ก ์ฝ๊ฒ. ๋ํ ์ฐ์ถ๋ฌผ์ **'EOP'ยท'๋ฃจ๋ธ๋ฆญ'ยท๋ด๋ถ ๊ธฐ์ค๋ช
**์ ์ ์ง ๋ง๋ผ. ์ธ๋ถ ๋ถ๋ฅ(NCS ์ฝ๋ ๋ฑ)๋ **์ค์ ํ์ ๊ฐ๋ฅํ ๋๋ง** ์ฐ๊ณ , ์๋๋ฉด ์๋ตํ๊ฑฐ๋ ๊ณ์ด๋ช
+'์ถ์ '์ผ๋ก ํ๊ธฐํ๋ค(์ฝ๋ ๋ฒํธ ๋ฐ๋ช
๊ธ์ง).
|
|
63
68
|
|
|
64
69
|
## 4. ์ ๋ณด ๋ถ์กฑยท๋ถํ์คยท์ถฉ๋ ์ฒ๋ฆฌ
|
|
65
|
-
- **๋ถ์กฑ:** ์ง์ด๋ด์ง ๋ง๊ณ "ํ์ธ ํ์"๋ก ํ์ +
|
|
70
|
+
- **๋ถ์กฑ:** ์ง์ด๋ด์ง ๋ง๊ณ "ํ์ธ ํ์"๋ก ํ์ + ์ฌ์ฉ์์ ์ธ์ด๋ก ์ฝ๊ฒ ์ง๋ฌธ.
|
|
66
71
|
- **๋ถํ์ค:** ์ ๋ขฐ๋๋ฅผ ๋ฎ์ถ๊ณ ๊ฐ์ ์ ๋ช
์.
|
|
67
72
|
- **์ถฉ๋(๋ฐ์ดํฐ vs ๋ฐ์ดํฐ, ๊ณต์์๋ฃ vs EOP):** ยง0 ๊ทผ๊ฑฐ ์ฐ์ ์์ ์ ์ฉ, ์ฌ์ค ๋ณด์กด, ์ฌ์ฉ์์๊ฒ ์๋ฆผ.
|
|
68
73
|
- **์ถฉ๋(๋๋ฉ์ธ vs ๋๋ฉ์ธ):** ์ฌ๋ฌ `knowledge/` ๋๋ฉ์ธ์ด ๊ฐ์ ์ฃผ์ ๋ฅผ ๊ฑด๋๋ฆฌ๋ฉด ์ ๋ณธ(์์ ) ๋๋ฉ์ธ์ ๋ฐ๋ฅธ๋ค โ ์ฐ๋ด ์ซ์ ์ ์ =salary-negotiation(recruiter-screen์ ๊ฒ์ดํธ ๋งฅ๋ฝ์ ์กฐ๊ฑด๋ถ ๊ท์น๋ง ์์), ์คํผ ๋น๊ตยท๊ฐ์ค์น=offer-evaluation-decision, 30-60-90=onboarding-first-90-days, ํ๋ฝ ์ง๋จ=rejection-triage-iteration, ์ฌ๋กญ/ํค์๋/์ ๋ ์ฌ์ =๊ณต์ ๋ชจ๋. ๊ฒ์ฆ๊ธฐ ๊ฐ ์ถฉ๋์ **์ฌ์ค(truthfulness)์ ์ต์์ ํ์ด๋ธ๋ ์ดํฌ**๋ก ๋๊ณ , ATS ํค์๋์ human-voice๋ ๋ ๋ค ๋ง์กฑํ๋ ๋์ญ(์ง์ง ๊ฒฝํ ๋ฌธ์ฅ์ JD ์ฉ์ด๋ฅผ ์ง์คํ๊ฒ ์ฝ์
)์ ๋จผ์ ์ฐพ๋๋ค.
|