구직 전 수정 사항을 알려주는 개인 AI 코치 만들기
요약
JobPilot은 사용자의 로컬 노트북에서 완전히 실행되는 개인 AI 커리어 코치입니다. 이력서와 목표 직무를 입력하면, 지원 전 부족한 기술이나 수정해야 할 부분을 정확히 알려줍니다. Ollama로 구동되는 Gemma 3 모델을 사용하여 데이터 보안과 오프라인 작동이 가능하며, 무료로 제공됩니다.
핵심 포인트
- CV가 로컬 노트북에서만 처리되어 데이터 보안성이 높습니다.
- Ollama와 Gemma 3를 활용하여 개인 AI 코치를 구현했습니다.
- 구독료나 API 비용 없이 완전히 무료로 사용할 수 있습니다.
- 오프라인 환경에서도 작동하는 것이 큰 장점입니다.
내가 만든 것
만약 당신이 대학생이라면, 아마 이 순환 고리를 알고 있을 겁니다:
문제는 노력이 아닙니다. 피드백입니다. 아무도 당신에게 어떤 기술이 부족한지, 어떤 프로젝트를 주도해야 하는지, 또는 면접관이 무엇을 물어볼지 알려주지 않습니다.
가장 당연한 해결책은 CV(이력서)를 AI 챗봇에 붙여넣는 것입니다. 하지만 CV에는 이름, 전화번호, 집 주소, 대학 및 GPA(평점 평균)가 담겨 있습니다. 제 친구는 자신이 내부를 볼 수 없는 서버로 그것을 보내고 싶지 않았습니다. 솔직히 저도 그렇지 않습니다.
해결책: JobPilot 🧭
JobPilot은 사용자의 노트북에서 완전히 실행되는 개인 AI 커리어 코치입니다. 이력서와 원하는 직무를 입력하면, 지원하기 전에 무엇을 수정해야 하는지 정확히 알려줍니다.
- 사용자의 CV는 절대 노트북을 벗어나지 않습니다. AI는 Ollama로 로컬에서 구동되는 Gemma 3입니다.
- 무료입니다. 구독료, API 비용, 가입 절차가 없습니다.
- 오프라인으로 작동합니다. 실시간 구직 활동을 제외한 모든 것이 Wi-Fi가 꺼져도 작동합니다.
- 정직합니다. 기술, 경험 또는 가짜 숫자를 지어내지 않으며, 코드가 이를 확인합니다(자세한 내용은 아래 참조).
- 스리랑카 학생들을 위해 만들어졌습니다. 인턴십, 수습 역할, GPA, A/L 성적을 이해하며 영어를 간단하게 유지합니다.
이것이 무엇을 하는지 보여주기 위해, 저는 샘플 학생인 Nimali를 사용할 것입니다. 그녀는 UCSC의 컴퓨터 과학 학부생이며 세 개의 프로젝트(React 클럽 웹사이트, Python으로 만든 쌀 가격 예측기, Java 라이브러리 시스템)를 가지고 있습니다. 그녀는 콜롬보에서 소프트웨어 엔지니어 인턴 역할을 지원하고 있습니다.
1. 🎯 매칭 및 격차:
한 번의 클릭으로 그녀의 이력서(CV)와 채용 공고를 비교합니다.
먼저, 즉각적인 기술 매칭이 나타납니다. AI가 사용된 것은 아니며, 단순히 빠른 키워드 스캔입니다: 그녀는 해당 직무에서 요구하는 17개 기술 중 4가지(JavaScript, SQL, React, Git)를 보유하고 있습니다.
다음으로 Gemma가 두 문서를 제대로 읽고 다음 정보를 제공합니다:
- 전반적인 적합도 점수 (65%)와 두 줄 요약
- 그녀의 강점. 이력서에서 단어 그대로 복사된 증거를 제시합니다. 예: JavaScript · "Languages: Python, Java, JavaScript, SQL"
- 중요도에 따라 순위가 매겨진 부족한 기술들. 각 기술마다 이를 학습할 구체적인 방법이 제시됩니다. 목록 최상단: Node.js & Express.js (높음): "작은 데이터셋을 사용하여 Node.js와 Express.js로 간단한 API를 구축하세요."
- 그녀가 실제로 수행했던 내용만을 사용한 이력서 수정 사항
- 그녀의 프로젝트와 해당 직무에 맞춰진 5가지 면접 질문
매칭 및 격차 분석: 키워드 매치, AI 적합도 점수, CV 인용을 통한 강점 제시, 순위별 기술 격차 및 면접 질문
2. 🎤 면접 연습: "그 답변이 통할까?"
모든 질문에 대해 '연습하기(Practice)'를 클릭하고, 말하는 방식 그대로 답안을 작성하면 JobPilot이 면접관 역할을 수행합니다.
Nimali는 그녀의 라이브러리 관리 시스템(Library Management System)에 대한 질문에 "...가장 어려웠던 부분은 대여 테이블이었지만, 저희가 수정했어요."라고 답변했습니다. JobPilot은 그녀에게 10점 만점에 4점을 주며 정확히 그 이유를 설명합니다:
"더 많은 세부 정보가 필요해요: 어떤 테이블을 설계했나요? 핵심 필드는 무엇이었나요?"
"'수정했다(we fixed it)'와 같은 모호한 표현은 피하세요."
이후 JobPilot은 그녀의 CV 내용과 그녀가 말했던 내용을만 사용하여, 그녀 자신의 목소리로 더 강력한 답변을 작성해 줍니다.
면접 연습: 맞춤형 질문, 학생의 답변, 10점 만점에 4점 점수, 잘된 부분, 개선 방법 및 더 나은 답변
3. ✍️ 재작성(Rewrite): "웹사이트를 만들었다"에서 CV 항목으로
대부분의 학생들은 프로젝트를 다음과 같이 설명합니다:
대학 동아리를 위해 회원들이 이벤트에 등록하고 알림을 받을 수 있는 웹사이트를 만들었습니다. React와 Firebase를 사용했습니다.
JobPilot은 이를 "클럽 회원들의 이벤트 등록을 관리하고 자동 알림을 보내는 데 Firebase를 활용했습니다."와 같은 세련된 설명과 CV 항목으로 바꿔줍니다.
중요한 점은 JobPilot이 하지 않는 것입니다. 절대 임의로 숫자를 만들어내지 않습니다. 대신 학생에게 진실을 채워 넣도록 요청합니다: "영향력을 수치화하세요. 예를 들어 '클럽 회원 [X]명을 지원했습니다.'와 같이."
다시 작성하기(Rewrite): 한 줄짜리 프로젝트 설명을 세련된 단락, CV 항목 및 제안으로 변환
4. 💬 JobPilot에게 질문하기: 당신의 CV를 읽은 코치
이미 사용자의 CV와 지원할 직무를 알고 있는 채팅 기능입니다. 답변이 단어 단위로 스트리밍되어 스피너(spinner)를 응시하고 있을 필요가 없습니다.
저는 "제가 가진 프로젝트 중 이 직무에 어떤 것을 강조해야 할까요?"라고 질문했고, JobPilot은 캠퍼스 이벤트 허브(React를 사용한 프로젝트이며, 지원하는 직무의 기술 스택과 일치함)를 선택하며 다른 두 프로젝트는 이 특정 역할에 덜 적합하다고 설명해 주었습니다.
JobPilot 채팅이 React 인턴십을 위해 캠퍼스 이벤트 허브 프로젝트를 추천하는 모습
5. 📈 채용 공고 찾기: "다음으로 무엇을 배워야 할까요?"
이것이 제가 가장 자랑스러워하는 기능입니다. 실제 채용 공고(SerpApi를 통해 Google Jobs에서 실시간으로 가져옴)를 검색하면 JobPilot이:
- 각 공고가 사용자의 CV와 얼마나 잘 맞는지 순위를 매기고, 각 공고에 부족한 부분이 무엇인지 보여줍니다.
- 모든 공고에서 고용주들이 어떤 기술을 요구하는지 개수를 세어줍니다. 파란색 막대는 CV에 있는 것이고, 노란색 막대는 아직 없는 것입니다.
- Gemma에게 이 차트를 학습 계획으로 변환하도록 요청합니다: 가장 많이 요구되지만 부족한 기술들, 그리고 이번 주말에 할 수 있는 첫 단계가 각각 제시됩니다.
제가 스리랑카에서 "소프트웨어 엔지니어 인턴"을 검색했을 때, 17개의 실제 공고(Softmint, LSEG, Fidenz, Codimite 등)를 불러왔습니다. 그 결과는 놀라웠습니다:
- 문제 해결 능력(Problem Solving)은 17개 중 10개 공고에서 요구되었으며, 어떤 프로그래밍 언어보다도 높았습니다.
- JavaScript와 React는 17개 중 8개 공고에 등장했습니다.
Gemma의 Nimali를 위한 계획: OOP 학습(17개 중 6개), 다음으로 Node.js (17개 중 5개), 그리고 Agile (17개 중 4개)을 배우고, Python, Java, SQL을 이력서 상단에 배치하는 것입니다.
이것은 시니어 개발자가 해줄 법한 조언이지만, 이번 주 실제 채용 공고를 기반으로 합니다.
채용 정보 찾기: 17개 실시간 공고에 걸친 고용주 기술 수요 차트, Gemma 학습 계획, 그리고 이력서 매칭 순위별 직무 카드
코드
GitHub logo TenathDilusha / jobpilot
스리랑카 학생을 위한 개인 AI 경력 코치. Gemma를 로컬에서 구동하여 이력서를 직무와 비교하고, 기술 격차를 찾아내며, 인터뷰 준비를 도와줍니다.
JobPilot: 스리랑카 학생들을 위한 경력 비서
JobPilot은 인턴십 및 신입직에 지원하는 스리랑카 대학생을 위한 개인 AI 경력 코치입니다. 이력서를 업로드하고, 직무 설명을 붙여넣은 다음 다음과 같이 질문할 수 있습니다:
- "이 인턴십에 필요한 부족한 기술은 무엇인가요?"
- "제 프로젝트 설명을 다시 작성해 주세요."
- "어떤 질문을 할 수도 있나요?"
- "제 이력서와 이 직무 설명을 비교해 주세요."
모든 것이 오픈 웨이트 Gemma 모델이 Ollama에 의해 서비스되는 사용자의 노트북에서 실행됩니다. 귀하의 이력서는 클라우드 AI 서비스에 절대 업로드되지 않습니다.
기능
| 탭 | 기능 설명 |
|---|---|
| 매칭 및 격차 (Match & gaps) | 즉각적인 키워드 기술 매칭, 이후 Gemma의 분석: 적합도 점수, 이력서에서 인용한 증거를 통한 강점, 중요도 순으로 나열된 부족한 기술과 각 기술을 학습하는 방법, 이력서 수정 제안, 맞춤형 인터뷰 질문 |
| ... | |
| … |
MIT 라이선스. Python + FastAPI 백엔드, 일반 HTML/CSS/JavaScript 프론트엔드, 29개 테스트 케이스. 설정은 세 개의 명령어만 필요합니다 (README 참조).
구축 과정
전체 시스템을 한 페이지에 담았습니다:
JobPilot 아키텍처: CV와 직무 기술서가 노트북으로 들어가 텍스트 추출 및 스킬 스캐너를 거쳐 Ollama의 Gemma 3로 전달되고, 다섯 가지 기능으로 출력됩니다. SerpApi는 검색어만 받습니다.
백엔드: FastAPI를 사용합니다. PDF 파일(pypdf)과 Word 파일(python-docx)을 읽고, 각 기능별로 하나의 엔드포인트를 노출합니다.
AI: Ollama의 /api/chat을 통해 Gemma 3를 사용하며, 모든 분석에는 JSON 스키마 구조화 출력을 사용하고 채팅 시 토큰 스트리밍(token streaming) 기능을 활용합니다.
스킬 스캐너: 별칭(alias)이 포함된 100가지 스킬 목록을 가지고 있습니다 (ReactJS, React.js, react 모두 계산되지만 Java는 JavaScript와 일치하지 않습니다).
직무 검색: SerpApi의 Google Jobs 엔진을 사용하며, 결과 두 페이지를 캐시하여 6시간 동안 유지함으로써 무료 검색 크레딧을 아낄 수 있습니다.
프론트엔드: 프레임워크를 사용하지 않았습니다. 모델 출력의 모든 부분은 HTML이 아닌 일반 텍스트로 삽입됩니다.
레슨 1: 작은 모델에게는 지침(instructions)뿐만 아니라 가드레일(guardrails)이 필요합니다 🛡️
Gemma 3 4B는 크기에 비해 인상적이지만, 작은 모델들은 사실을 꾸며내는 경향이 있습니다. 제가 초기 테스트를 했을 때, 이 모델은 Nimali가
분석 및 면접 질문은 순차적으로 나타나는 별도의 작은 호출(call)이며, 각각 실시간 타이머가 제공됩니다.
채팅은 단어별로 스트리밍됩니다.
출력은 의도적으로 짧습니다. 추가적인 모든 단어는 시간이 소요됩니다.
⚡ 빠른 모드 스위치(Fast mode switch)를 사용하면 서두를 때 Gemma 3 1B로 전환할 수 있습니다.
클라우드 모델이 더 빠르겠지만, 지원서 제출 시 한 번 정도 사용하는 기능이라면 몇 분의 시간은 CV 개인 정보를 유지하는 데 충분한 비용입니다.
Open(오픈)이 중요한 이유
일반적인 AI CV 도구는 사용자의 CV를 다른 사람의 서버로 전송합니다. JobPilot은 이를 사용자 노트북에 보관하며, SerpApi는 검색어만 볼 수 있습니다.
이 프로젝트가 작동하는 이유는 Gemma가 오픈(open)이기 때문입니다:
약속이 아닌 설계 단계부터의 개인 정보 보호(Privacy by design)입니다. 모델은 학생 자신의 기기에서 실행되므로, 신뢰해야 할
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기




