Skip to main content
Glama
osntak

CareerMate

by osntak

CareerMate

npm license: MIT node

한국어 · English

평소 쓰는 AI에게 말로 커리어를 정리시키세요. 이력서 등록·공고 분석·자기소개서·지원 현황·면접 준비를 내 컴퓨터에서 동작하는 AI 에이전트(Claude Desktop·Claude Code·Codex 등)에게 대화로 시키면, CareerMate가 그 결과를 이 컴퓨터에만 구조화해 보관하고 MCP로 노출합니다. CareerMate 안에 AI는 없습니다 — 생각은 당신의 AI가, 저장은 CareerMate가 합니다.

CareerMate 대시보드 — 오퍼 비교와 지원 현황


핵심 철학

  • MCP 우선 — 새 앱 사용법을 익힐 필요가 없습니다. 내 컴퓨터에서 동작하는 AI 에이전트(Claude Desktop·Claude Code·Codex 등 로컬 MCP 클라이언트)와 대화하면, 그 AI가 CareerMate의 로컬 MCP 도구를 호출해 당신의 커리어 DB를 읽고 씁니다.

  • 로컬 우선 — 모든 데이터는 당신의 컴퓨터에만 저장됩니다(~/.careermate). 저장된 개인 데이터는 외부 서버로 전송하지 않습니다 — 외부로 나가는 것은 선택적 버전 확인과 공고 검색 시 검색 키워드뿐입니다(아래 보안 / 프라이버시 참고). 대시보드 웹 서버는 127.0.0.1(이 컴퓨터)에만 연결됩니다.

  • LLM 비내장 — CareerMate 안에는 AI가 들어 있지 않습니다. 분석·글쓰기 같은 “생각하는 일”은 당신의 AI가 하고, CareerMate는 데이터를 안전하게 보관·조회하는 역할만 합니다.

쉽게 말해: 당신의 AI가 “두뇌”, CareerMate는 그 두뇌가 꺼내 쓰는 “커리어 서랍장”입니다.


Related MCP server: Placed MCP Server

무엇을 하나요?

프로필·이력서·자기소개서·채용공고·지원 현황·면접 준비를 로컬 SQLite에 구조화해 저장하고, AI 어시스턴트가 MCP 도구로 그 데이터를 읽고 씁니다. 전형적인 흐름은 이렇습니다.

  1. 프로필·이력서 등록 → 2. 채용공고 저장·파싱 → 3. 적합도(핏) 분석 → 4. 맞춤 자기소개서 작성·버전 관리 → 5. 지원 상태 관리 → 6. 면접 준비

언제든 대시보드를 열어 저장된 데이터를 눈으로 확인할 수 있습니다. 자세한 단계별 런북은 docs/START_WORKFLOW.md를 참고하세요.


주요 기능

  • AI와 대화로 모든 작업 — MCP 도구로 온보딩·프로필·이력서·자소서·공고·핏 분석·지원 상태·면접 준비·전문가 플레이북·AI 티 안 나는 글쓰기까지 처리.

  • 지원 상태 8단계 관리draft(작성 중) · planned(지원 예정) · applied(지원 완료) · document_passed(서류 합격) · interview(면접 진행) · final_passed(최종 합격) · rejected(불합격) · on_hold(보류). document_passed 이상에서는 면접 준비를 다음 행동으로 제안합니다.

  • 자기소개서 버전 관리 — 공고별로 자소서 버전을 쌓고 타임라인으로 비교, 파일로 내보내기.

  • 공고 검색·가져오기 — 키워드(직무·기술)로 원티드·점핏 같은 공개 채용 사이트에서 공고를 바로 가져와, 마음에 드는 것만 저장. 키 발급·설치 없이 동작하며, 공개 공고를 가져오기만 합니다(봇 차단 우회·자동 대량수집 없음, 보내는 건 검색어뿐).

  • 채용공고 파싱 — 붙여넣거나 가져온 공고 텍스트를 구조화해 저장.

  • 로컬 대시보드 — 프레임워크·CDN 없는 바닐라 JS로 만든 7페이지 웹 화면(다크모드 지원).

  • 데이터 내보내기/삭제 — Settings 페이지에서 직접.

예: 공고 검색 — "백엔드 공고 찾아줘"라고 하면 AI가 공개 사이트에서 공고를 모아 이렇게 보여주고, 고른 것만 저장합니다:

"백엔드" 공고 6건을 찾았어요 (원티드·점핏):

  1. 미소(miso) — 백엔드 개발자 (Node.js) · 서울 · 경력 5~11년

  2. 콕스웨이브 — [AX Workflow Builder] 백엔드 엔지니어 · 서울 · 경력 3~7년

  3. 다우기술 — HTS 채널 개발 · 서울 마포구 · JavaScript Mfc · ~7/7 마감

어떤 공고를 저장해서 적합도 분석·자소서로 이어갈까요? (예: "1번, 3번 저장")

공고 상세 — 회사 리서치·적합도 분석·타임라인


구성

두 개의 로컬 프로세스가 같은 데이터베이스를 공유합니다.

프로세스

실행

역할

대시보드 웹 서버

npm start

http://127.0.0.1:4319 — 내 데이터를 눈으로 확인·관리. 127.0.0.1에만 바인딩.

MCP 서버

npm run mcp

stdio 기반. 보통 AI 클라이언트가 자동 실행. 커리어 작업 도구 제공.


빠른 시작

요구사항은 Node.js >= 22.5.0 하나입니다 — 내장 node:sqlite를 쓰므로 컴파일러·네이티브 빌드가 필요 없습니다. node --version으로 확인하고, 미만이거나 명령이 없으면 설치하세요(Windows: winget install OpenJS.NodeJS.LTS · macOS: brew install node · 그 외: https://nodejs.org 최신 LTS).

CareerMate는 내 컴퓨터에서 로컬 stdio MCP 서버를 띄울 수 있는 AI에서 동작합니다. (ChatGPT·Gemini의 웹/앱은 클라우드에서 동작해 로컬 stdio MCP 서버에 직접 연결할 수 없습니다.)

A. 그냥 쓰려면 (권장 — 클론·빌드 없음)

설치는 크게 3가지 — "누가 설치하느냐" 의 차이입니다. 아래 순서대로 골라 쓰세요.

① 에이전트가 대신 설치 (권장)

작업 폴더에서 명령을 실행할 수 있는 AI(Claude Code 데스크톱 "Code" 탭 / CLI · Codex CLI · Gemini CLI · Cursor 등)에게 한 문장으로 시키면, AI가 careermate.life/llms-install.txt를 읽어 npm 설치 + MCP 등록까지 해줍니다.

CareerMate를 설치하고 설정해줘. INSTALL.md를 따라 진행해줘.

AI가 INSTALL.md 런북을 따라 진행하고, 첫 실행 시 프로젝트 서버에 대한 일회성 승인만 눌러 주면 됩니다. (소스 폴더에서 직접 작업 중이면 npm installnpm run init.)

Claude "Code" 탭은 비개발자에게 가장 매끄럽습니다 — 작업 폴더 하나를 잡고 데이터까지 그 안에 두는 방식입니다. (Pro 이상 구독 필요, Windows는 Git 사전 설치.) Codex는 ~/.codex/config.toml에, Gemini/Cursor 등은 각 클라이언트 설정에 등록됩니다.

② npm 명령 직접

터미널에 한 줄이면 감지된 AI 앱에 자동 등록됩니다.

npx -y careermate init

그 외 클라이언트(Cursor·Cline·Windsurf 등)는 npx -y careermate init -- --print로 등록용 설정 블록을 출력해 수동으로 붙일 수 있습니다.

careermate.zip (Claude Desktop "채팅" 앱 전용 · Node 불필요 폴백)

터미널·Node 없이 붙이는 유일한 길입니다. 최신 GitHub Release에서 careermate.zip을 내려받아 압축 해제한 뒤, Claude Desktop의 Settings → Extensions → Advanced settings → Install extension… 에서 압축을 푼 폴더를 추가하고 재시작합니다. (소스에서 직접 만들려면 npm run build:mcpbdist/careermate.zip.) 단 Claude Desktop 내장 Node 버전에 의존해 불안정할 수 있습니다(Node<22.5면 동작 불가).

.mcpb 직접 추가는 일부 Claude Desktop 버전에서 실패하는 알려진 이슈가 있어, 현재는 ZIP 압축 해제 후 폴더 추가를 권장합니다. .mcpb.zip은 같은 번들입니다.

연결 후 AI 클라이언트를 완전히 재시작하고, get_onboarding_status를 호출해 달라고 시켜 연결을 검증하세요. 자세한 절차는 AI용 런북 INSTALL.md, 사람용 설치 안내 https://careermate.life, 설치 후 사용법 docs/START_WORKFLOW.md, 지원 앱 매트릭스 **docs/SUPPORTED_AI_APPS.md**를 참고하세요.

B. 소스로 개발/기여하려면

git clone https://github.com/osntak/careermate.git && cd careermate
npm install     # 빌드 단계 없음 — TypeScript를 tsx로 바로 실행
npm start       # 대시보드 http://127.0.0.1:4319 (포트 사용 중이면 다음 빈 포트로 폴백, Ctrl+C 종료)
npm run seed    # (선택) 데모 데이터로 둘러보기
npm run init    # 이 폴더 기준으로 AI 클라이언트에 MCP 등록

AI 클라이언트에 연결된 상태라면 "대시보드 열어줘"만으로도 서버가 백그라운드에서 시작되므로, 대시보드가 터미널 세션에 묶이지 않습니다.

안 되면 여기부터 (Troubleshooting)

  1. AI가 CareerMate를 못 봐요 — AI 앱을 완전히 종료 후 재시작하세요(백그라운드/트레이 포함). Claude Code는 폴더 "신뢰" 1회 승인이 필요하고, /mcp 명령으로 careermate가 보이는지 확인할 수 있습니다.

  2. 뭐가 문제인지 모르겠어요 — 터미널에서 npx -y careermate doctor(Node·데이터 폴더·DB·도구 등록·업데이트 점검). AI에게 "doctor 돌려서 뭐가 문제인지 봐줘"라고 해도 됩니다.

  3. Node 버전 오류node --version이 22.5 미만이면 최신 LTS로 재설치하고 터미널을 새로 연 뒤 다시 시도하세요.

  4. Claude 채팅앱에 zip이 안 붙어요 — 알려진 이슈입니다. 압축을 푼 폴더를 추가하세요. 그래도 안 되면 ②의 npx -y careermate init 경로를 권장합니다.

  5. 포트 충돌 — 자동으로 다음 빈 포트로 폴백합니다. 터미널에 출력된 실제 주소를 확인하세요.

더 많은 항목은 docs/FAQ.md에 있습니다. 보안 문제는 공개 이슈 대신 SECURITY.md의 비공개 절차로 알려주세요.


대시보드 7페이지

페이지

설명

Home

현재 상태·다음 할 일 한눈에.

Profile

프로필, 경력(experiences), 프로젝트, 스킬 관리.

Jobs

저장한 채용공고 목록과 상세(공고 내용·핏 분석).

Applications

지원 현황을 8단계 상태로 보는 칸반 보드.

Documents

자기소개서 버전 타임라인과 이력서.

Interview

면접 준비 자료(document_passed 이상에서 해금).

Settings

데이터 내보내기·삭제, 환경 정보.

다크모드를 지원합니다.


MCP 도구 한눈에

분류

도구

온보딩

get_onboarding_status

프로필

save_profile · get_profile · export_profile

이력서

read_document · add_resume · get_resumes · export_resume · delete_resume · open_inbox · read_inbox

경력·프로젝트·스킬

add_experience · get_experiences · delete_experience · add_project · get_projects · delete_project · add_skill · get_skills · delete_skill

자기소개서

get_cover_letters · save_cover_letter_version · delete_cover_letter · export_cover_letter

채용공고

search_jobs · save_job_posting · get_job_posting · list_jobs · prescreen_job · delete_job_posting

오퍼(제안)

save_offer · compare_offers · get_offer

핵심 컨텍스트

get_application_context (지원에 필요한 맥락을 한 번에 모아줌)

핏 분석

save_fit_analysis

지원 상태

update_application_status

면접 준비

save_interview_prep

글쓰기

get_writing_style_guide (AI 티 안 나는 한국어 글쓰기 규칙)

전문가 지식 (Career-OS)

get_playbook (도메인 플레이북 16종) · get_verifier (저장 전 검증 루브릭 7종)

저장 전 점검

validate_cover_letter (자소서 저장 전 미리보기) · set_verify_mode (점검 엄격도 기본/엄격)

대시보드/활동

open_dashboard · open_application · list_recent_activity · get_followups · get_pipeline_stats · get_workflow_guide

업데이트

check_for_update · update_careermate

이 도구들 위에 7종의 워크플로우가 정의되어 있어 AI가 단계별로 자연스럽게 안내합니다: 핵심 6종(onboarding, analyze_job, write_cover_letter, write_career_description, manage_application_status, prepare_interview)과 LinkedIn·포트폴리오용 build_personal_brand.


프로젝트 구조

CareerMate/
├─ apps/
│  ├─ web/            # 대시보드 + 로컬 API 서버 (npm start)
│  └─ mcp/            # MCP stdio 서버 (npm run mcp)
├─ packages/
│  ├─ shared/         # 공용 타입·zod 스키마·유틸
│  ├─ db/             # node:sqlite DB 접근·스키마·마이그레이션
│  ├─ core/           # 도메인 유스케이스
│  ├─ mcp-tools/      # MCP 도구 정의
│  ├─ knowledge/      # Career-OS 전문가 플레이북·검증 루브릭 serve
│  ├─ exporters/      # 내보내기(자소서 등)
│  ├─ parsers/        # 채용공고 파싱
│  ├─ prompts/        # 프롬프트·안내 문구
│  └─ workflows/      # 워크플로우 6종
├─ site/      # 설치 안내 페이지
├─ docs/              # 문서
├─ scripts/           # migrate / seed / doctor / test 등
└─ package.json
  • 스택: TypeScript(ESM), 무빌드 실행(tsx), 내장 node:sqlite(네이티브 컴파일 없음), zod, @modelcontextprotocol/sdk. 대시보드는 프레임워크·CDN 없는 바닐라 JS + 자체 CSS 디자인 시스템.

  • 데이터 저장소: 12개 테이블(profile, experiences, projects, skills, documents, cover_letters, cover_letter_versions, jobs, fit_analyses, applications, interview_preps, activities). 두 프로세스(대시보드·MCP)가 같은 SQLite DB를 공유합니다.


npm 스크립트

스크립트

설명

npm install

의존성 설치 (빌드 없음)

npm start

대시보드 웹 서버 실행

npm run dev

대시보드 실행 (파일 변경 시 자동 재시작)

npm run mcp

MCP 서버 실행 (stdio)

npm run migrate

DB 생성/업그레이드

npm run doctor

설치/환경 점검

npm run seed

예시 데이터 삽입

npm run build

배포용 플레인 JS 번들(dist/) 생성 (esbuild)

npm run build:mcpb

Claude Desktop용 번들 빌드 → dist/careermate.mcpb와 폴더 설치용 dist/careermate.zip 생성(+ site/로 복사). manifest+서버코드를 한 파일로 묶어 배포.

npm test

E2E 테스트 실행

npm run test:ui

Playwright UI 스모크 테스트

npm run typecheck

타입 검사 (tsc --noEmit)


데이터 위치 & 환경변수

  • 기본 폴더: ~/.careermate (Windows: %USERPROFILE%\.careermate).

    • careermate.sqlite — 데이터베이스 파일

    • exports/ — 내보낸 파일

    • backups/ — 백업

    • uploads/ — 업로드 파일

    • server.json — 실행 중 핸드셰이크 정보

  • 환경변수로 동작을 바꿀 수 있습니다.

    • CAREERMATE_DATA_DIR — 데이터 폴더 위치 변경

    • CAREERMATE_PORT — 대시보드 포트 고정

    • CAREERMATE_NO_OPEN — 시작 시 브라우저 자동 열기 끄기


보안 / 프라이버시

  • 로컬 전용 바인딩 — 대시보드 서버는 127.0.0.1(loopback)에만 바인딩되어 외부에서 접근할 수 없습니다.

  • DNS 리바인딩 차단 — Host 허용목록으로 검증.

  • 변경 요청 보호 — CSRF 세션 토큰(HTML meta로 주입), 외부 Origin 차단.

  • 정적 파일 보호 — 경로 traversal(상위 폴더 탈출) 차단.

  • 본문 크기 제한 — 요청 본문 8MB 제한.

  • 민감 정보 비노출 — 이력서·자기소개서 본문은 로그나 에러 응답에 노출되지 않습니다.

  • 사용자 데이터 외부 전송 없음 — CareerMate는 당신의 프로필·이력서·자소서 등 개인 데이터를 외부로 보내지 않습니다. 모든 데이터는 당신의 컴퓨터에만 남습니다. 외부로 나가는 네트워크 호출은 (1) 선택적 버전 확인, (2) 공고 검색(공개 잡보드)뿐이며, 이때도 보내는 것은 검색 키워드뿐(개인 데이터 아님)이고 공개 공고를 가져오기만 합니다(봇 차단 우회·자동 대량수집 없음). 내보내기·삭제는 대시보드 Settings에서 직접 할 수 있습니다.


문서


테스트

npm test        # E2E 테스트 (보안·업무흐름·MCP stdio·대시보드↔MCP 동일 DB 양방향)
npm run test:ui # 대시보드 페이지 렌더 스모크 (Playwright)
npm run typecheck

기타 유용한 스크립트: npm run migrate(DB 생성/업그레이드), npm run seed(예시 데이터), npm run doctor(설치·환경 점검).


라이선스

MIT 라이선스 — 전문은 LICENSE 파일을 참고하세요.



CareerMate (English)

한국어 · English

Let the AI you already use manage your career — by talking to it. Ask an AI agent running on your own computer (Claude Desktop, Claude Code, Codex, …) to register your resume, analyze postings, draft cover letters, track applications, and prep interviews; CareerMate stores the results as structured data only on this machine and exposes them over MCP. There is no AI inside CareerMate — your AI does the thinking, CareerMate does the storing.

CareerMate dashboard — offer comparison and application pipeline


Core philosophy

  • MCP-first — No new app to learn. You talk to an AI agent running on your machine (Claude Desktop, Claude Code, Codex, and other local MCP clients), and that AI calls CareerMate's local MCP tools to read and write your career database.

  • Local-first — All data lives only on your computer (~/.careermate). Your stored personal data is never sent to external servers — the only outbound calls are the optional version check and the search keyword during job search (see Security / privacy below). The dashboard web server binds only to 127.0.0.1 (this machine).

  • No built-in LLM — There is no AI inside CareerMate. The "thinking" — analysis, writing — is done by your AI; CareerMate only stores and serves the data safely.

In short: your AI is the "brain," and CareerMate is the "career drawer" it reaches into.


What it does

It stores your profile, resumes, cover letters, job postings, application pipeline, and interview prep as structured data in a local SQLite database, and your AI assistant reads and writes that data through MCP tools. The typical flow:

  1. Register profile & resume → 2. Save & parse job posting → 3. Fit analysis → 4. Write & version cover letters → 5. Manage application status → 6. Interview prep

You can open the dashboard at any time to see your stored data. For a step-by-step runbook, see docs/START_WORKFLOW.md.


Key features

  • Everything through conversation with AI — MCP tools cover onboarding, profile, resumes, cover letters, job postings, fit analysis, application status, interview prep, expert playbooks, and human-sounding writing.

  • 8-stage application statusdraft · planned · applied · document_passed · interview · final_passed · rejected · on_hold. Interview prep is suggested at document_passed or later.

  • Cover-letter versioning — Stack versions per posting, compare on a timeline, export to a file.

  • Job search & import — Pull postings by keyword (role/skill) straight from public job boards (e.g. Wanted, Jumpit) and save only the ones you like. No API key or setup; it only fetches public postings (no bot-protection bypass, no bulk harvesting — only the search keyword is sent).

  • Job-posting parsing — Turn pasted or imported posting text into structured records.

  • Local dashboard — A 7-page web UI built with framework-free, CDN-free vanilla JS (dark mode supported).

  • Export / delete your data — Directly from the Settings page.

Example: job search — Ask "find backend jobs" and the AI gathers postings from public boards, presents them like this, and saves only the ones you pick:

Found 6 "backend" postings (Wanted · Jumpit):

  1. miso — Backend Developer (Node.js) · Seoul · 5–11 yrs

  2. Coxwave — [AX Workflow Builder] Backend Engineer · Seoul · 3–7 yrs

  3. Daou Tech — HTS Channel Dev · Seoul Mapo-gu · JavaScript Mfc · due 7/7

Which should I save to analyze fit / draft a cover letter? (e.g. "save #1 and #3")

Job detail — company research, fit analysis, timeline


Architecture

Two local processes share the same database.

Process

Run

Role

Dashboard web server

npm start

http://127.0.0.1:4319 — view and manage your data. Binds to 127.0.0.1 only.

MCP server

npm run mcp

stdio-based. Usually launched automatically by the AI client. Provides the career tools.


Quick start

The only requirement is Node.js >= 22.5.0 — CareerMate uses the built-in node:sqlite, so no compiler or native build is needed. Check with node --version; if it's below 22.5 or missing, install it (Windows: winget install OpenJS.NodeJS.LTS · macOS: brew install node · otherwise the latest LTS from https://nodejs.org).

CareerMate works with any AI that can launch a local stdio MCP server on your machine. (The web/mobile apps of ChatGPT and Gemini run in the cloud and cannot connect directly to a local stdio MCP server.)

Installation comes down to three options — "who does the installing." Pick one, in this order.

In your working folder, give a one-line instruction to an AI that can run commands (Claude Code's desktop "Code" tab / CLI, Codex CLI, Gemini CLI, Cursor, …). The AI reads careermate.life/llms-install.txt and handles npm install + MCP registration for you.

Install and set up CareerMate. Follow INSTALL.md.

The AI follows the INSTALL.md runbook; on first run you just approve the one-time project-server prompt. (If you're working from a source folder directly, run npm install then npm run init.)

Claude's "Code" tab is the smoothest for non-developers — you pick one working folder and keep the data inside it. (Requires a Pro-or-higher subscription; on Windows, Git must be pre-installed.) Codex registers in ~/.codex/config.toml; Gemini/Cursor and others register in their respective client configs.

② Run the npm command yourself

A single line in the terminal auto-registers with the detected AI apps.

npx -y careermate init

For other clients (Cursor, Cline, Windsurf, …), npx -y careermate init -- --print prints the registration config block so you can paste it in manually.

careermate.zip (Claude Desktop "chat" app only · no-Node fallback)

This is the only path with no terminal and no Node. Download careermate.zip from the latest GitHub Release, unzip it, add the extracted folder through Claude Desktop's Settings → Extensions → Advanced settings → Install extension…, then restart. (To build it from source: npm run build:mcpbdist/careermate.zip.) Note that it depends on Claude Desktop's bundled Node version (won't work if that Node is < 22.5).

Direct .mcpb install is a known issue in some Claude Desktop builds, so the ZIP folder path is the recommended no-terminal route. The .mcpb and .zip assets contain the same bundle.

After connecting, fully restart the AI client and verify the connection by asking it to call get_onboarding_status. For details, see the AI runbook INSTALL.md, the human-facing install guide https://careermate.life, the post-install usage flow docs/START_WORKFLOW.md, and the supported-apps matrix docs/SUPPORTED_AI_APPS.md.

B. Develop / contribute from source

git clone https://github.com/osntak/careermate.git && cd careermate
npm install     # no build step — TypeScript runs directly via tsx
npm start       # dashboard at http://127.0.0.1:4319 (falls back to the next free port; Ctrl+C to stop)
npm run seed    # (optional) explore with demo data
npm run init    # register the MCP server with your AI clients, rooted at this folder

When an AI client is connected, saying "open the dashboard" starts the server in the background if needed, so the dashboard is not tied to a terminal session.

If it doesn't work, start here (troubleshooting)

  1. The AI can't see CareerMateFully quit and restart the AI app (including tray/background). Claude Code needs a one-time folder "trust" approval; use the /mcp command to check that careermate is listed.

  2. Not sure what's wrong — Run npx -y careermate doctor in a terminal (checks Node, data folder, DB, tool registration, updates). Or just ask your AI: "run doctor and tell me what's wrong."

  3. Node version error — If node --version is below 22.5, install the latest LTS and open a new terminal before retrying.

  4. The zip won't attach in the Claude chat app — Known issue. Add the extracted folder instead. If that still fails, use the npx -y careermate init path from ②.

  5. Port conflict — It falls back to the next free port automatically; check the actual address printed in the terminal.

More in docs/FAQ.md. For security issues, use the private process in SECURITY.md instead of a public issue.


The 7 dashboard pages

Page

Description

Home

Current status and next steps at a glance.

Profile

Manage profile, experiences, projects, and skills.

Jobs

List and detail of saved postings (posting content + fit analysis).

Applications

A kanban board showing your pipeline across the 8 statuses.

Documents

Cover-letter version timeline and resumes.

Interview

Interview prep materials and interview-stage next steps.

Settings

Export/delete data, environment info.

Dark mode is supported.


MCP tools at a glance

Category

Tools

Onboarding

get_onboarding_status

Profile

save_profile · get_profile · export_profile

Resume

read_document · add_resume · get_resumes · export_resume · delete_resume · open_inbox · read_inbox

Experience / projects / skills

add_experience · get_experiences · delete_experience · add_project · get_projects · delete_project · add_skill · get_skills · delete_skill

Cover letter

get_cover_letters · save_cover_letter_version · delete_cover_letter · export_cover_letter

Job posting

search_jobs · save_job_posting · get_job_posting · list_jobs · prescreen_job · delete_job_posting

Offer

save_offer · compare_offers · get_offer

Core context

get_application_context (gathers all context needed for an application in one call)

Fit analysis

save_fit_analysis

Application status

update_application_status

Interview prep

save_interview_prep

Writing

get_writing_style_guide (rules for human-sounding Korean writing)

Expert knowledge (Career-OS)

get_playbook (16 domain playbooks) · get_verifier (7 pre-save rubrics)

Pre-save check

validate_cover_letter (dry-run preview before saving) · set_verify_mode (check strictness: default/strict)

Dashboard / activity

open_dashboard · open_application · list_recent_activity · get_followups · get_pipeline_stats · get_workflow_guide

Update

check_for_update · update_careermate

On top of these tools, seven workflows are defined so the AI can guide you naturally, step by step: the six core flows (onboarding, analyze_job, write_cover_letter, write_career_description, manage_application_status, prepare_interview) plus build_personal_brand for LinkedIn/portfolio assets.


Project structure

CareerMate/
├─ apps/
│  ├─ web/            # Dashboard + local API server (npm start)
│  └─ mcp/            # MCP stdio server (npm run mcp)
├─ packages/
│  ├─ shared/         # Shared types, zod schemas, utils
│  ├─ db/             # node:sqlite DB access, schema, migrations
│  ├─ core/           # Domain use cases
│  ├─ mcp-tools/      # The MCP tool definitions
│  ├─ knowledge/      # Career-OS expert playbooks & verifier rubrics (serve)
│  ├─ exporters/      # Exporters (cover letters, etc.)
│  ├─ parsers/        # Job-posting parsing
│  ├─ prompts/        # Prompts and guidance copy
│  └─ workflows/      # The 6 workflows
├─ site/      # Install guide page
├─ docs/              # Documentation
├─ scripts/           # migrate / seed / doctor / test, etc.
└─ package.json
  • Stack: TypeScript (ESM), build-free execution (tsx), built-in node:sqlite (no native compilation), zod, @modelcontextprotocol/sdk. The dashboard is framework-free, CDN-free vanilla JS with its own CSS design system.

  • Data store: 12 tables (profile, experiences, projects, skills, documents, cover_letters, cover_letter_versions, jobs, fit_analyses, applications, interview_preps, activities). The two processes (dashboard and MCP) share the same SQLite DB.


npm scripts

Script

Description

npm install

Install dependencies (no build)

npm start

Run the dashboard web server

npm run dev

Run the dashboard (auto-restart on file changes)

npm run mcp

Run the MCP server (stdio)

npm run migrate

Create/upgrade the DB

npm run doctor

Check installation/environment

npm run seed

Insert example data

npm run build

Build the plain-JS distribution bundle (dist/) via esbuild

npm run build:mcpb

Build the Claude Desktop bundle → dist/careermate.mcpb plus unpacked-folder fallback dist/careermate.zip (also copied to site/). Packs manifest + server code for distribution.

npm test

Run E2E tests

npm run test:ui

Playwright UI smoke tests

npm run typecheck

Type check (tsc --noEmit)


Data location & environment variables

  • Default folder: ~/.careermate (Windows: %USERPROFILE%\.careermate).

    • careermate.sqlite — the database file

    • exports/ — exported files

    • backups/ — backups

    • uploads/ — uploaded files

    • server.json — runtime handshake info

    • server.log — background dashboard launch log

  • You can change behavior with environment variables.

    • CAREERMATE_DATA_DIR — change the data folder location

    • CAREERMATE_PORT — pin the dashboard port

    • CAREERMATE_NO_OPEN — disable auto-opening the browser on start


Security / privacy

  • Local-only binding — The dashboard server binds only to 127.0.0.1 (loopback) and is not reachable from outside.

  • DNS-rebinding protection — Validated against a Host allowlist.

  • Mutation-request protection — CSRF session token (injected via an HTML meta tag); external Origins are blocked.

  • Static-file protection — Path traversal (escaping the parent folder) is blocked.

  • Body size limit — Request bodies are capped at 8MB.

  • No sensitive-data leakage — Resume and cover-letter content is never exposed in logs or error responses.

  • No personal-data transmission — CareerMate never sends your personal data (profile, resumes, cover letters) anywhere; all data stays only on your computer. The only outbound network calls are (1) the optional version check and (2) job search (public job boards) — and even then only the search keyword is sent (no personal data), to fetch public postings (no bot-protection bypass, no automated bulk harvesting). Export and delete are available directly in the dashboard Settings.


Documentation


Tests

npm test        # E2E tests (security, workflows, MCP stdio, dashboard↔MCP same-DB round-trip)
npm run test:ui # Dashboard page-render smoke tests (Playwright)
npm run typecheck

Other useful scripts: npm run migrate (create/upgrade DB), npm run seed (example data), npm run doctor (install/environment check).


License

MIT License — see the LICENSE file for the full text.

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
2dRelease cycle
8Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/osntak/careermate'

If you have feedback or need assistance with the MCP directory API, please join our Discord server