
이력서는 쓰기 전용입니다. 저는 제 이력서를 질문 가능한 형태로 만들었고, 그것은 비밀리에 제 면접을 코칭해 줍니다.
요약
정적인 이력서를 AI와 대화 가능한 형태로 변환하는 'Signal Sifter' 프로젝트를 소개합니다. JSON 데이터와 스토리 파일을 기반으로 답변하며, AI가 근거를 인용하고 모르는 정보는 솔직하게 답변하도록 설계하여 신뢰성을 높였습니다.
핵심 포인트
- 이력서를 질문 가능한(interrogable) 형태로 변환하여 면접 코칭 가능
- JSON 구조화 데이터와 스토리 파일을 기반으로 한 결정론적 답변
- 출처 배지를 통해 AI 답변의 근거를 즉시 확인할 수 있는 감사 가능성 확보
- 할루시네이션을 방지하기 위해 모르는 정보는 모른다고 답하는 시스템 프롬프트 설계
이력서는 쓰기 전용 (write-only) 문서입니다. 당신은 주장을 다듬는 데 수 시간을 소비하지만, 그것을 읽는 사람은 단 하나의 후속 질문도 던질 수 없습니다. 그들은 "부서 간 협업 데이터 팀을 이끌었음"이라는 문장을 믿거나 믿지 않거나 둘 중 하나일 뿐입니다. 몇 주 후 두 사람이 한 방에 모이기 전까지는 그것을 조사할 방법이 없습니다.
그래서 저는 제 이력서를 질문 가능한 (interrogable) 형태로 바꾸었습니다. 여기에서 라이브로 확인하실 수 있습니다:
Signal Sifter 데모, 그리고 전체 내용은 당신이 포크(fork)할 수 있는 MIT 라이선스 템플릿입니다:
repo.
이 포스트는 "어떻게 만들었는가"에 대한 내용입니다 — 아키텍처 (architecture), 제가 가장 강력하게 옹호할 단 하나의 설계 결정, 그리고 메인 기능보다 더 유용하다고 밝혀진 숨겨진 모드에 대해 다룹니다.
한 화면에 담긴 아이디어
당신은 일반적인 채팅 앱처럼 보이는 곳에 도착합니다. 당신은 이력서를 결정론적 (deterministically)으로 탐색하거나 (완전 정적이며, 모델이 관여하지 않음), AI 모드로 전환하여 그냥 질문할 수 있습니다: "Fabric 마이그레이션에서 가장 어려웠던 부분은 무엇이었나요?" "이 사람은 이해관계자(stakeholders)와 잘 지내나요, 아니면 그냥 말만 그렇게 하나요?" 모델은 다음 두 가지에 엄격하게 근거하여 지원자로서 답변합니다:
- 구조화된 이력서 (JSON),
- "스토리 파일 (story file)" — 동기, STAR 방식의 에피소드, 그리고 공개 설문지를 통해 스스로 점수를 매긴 몇 가지 문헌 기반 자기 평가 (예: Thomas–Kilmann 갈등 스타일).
모든 답변은 기계가 읽을 수 있는 인용 헤더 (citation header)와 함께 스트리밍되며, UI는 이를 **소스 배지 (source badges)**로 렌더링합니다. 배지를 탭하면 해당 주장이 선언된 데이터의 정확히 어느 부분에서 왔는지 확인할 수 있습니다.
제가 가장 강력하게 옹호할 설계 결정: AI가 증명할 수 없는 것을 인정하게 만들기
이 프로젝트의 쉬운 버전은 하이프 머신 (hype machine) — 즉, 지원자를 놀랍게 들리게 만드는 모델입니다. 그것은 가치가 없습니다. 왜냐하면 모두가 모델이 그렇게 하고 있다는 것을 알고 있기 때문입니다.
따라서 시스템 프롬프트 (system prompt)는 정반대로 동작합니다. 만약 "이 평가들이 인증된 것인가요?"라고 묻는다면, 모델은 정직하게 대답합니다: "아니요 — 이것들은 공개 설문지를 통해 스스로 점수를 매긴 것이며, 여기 그 프레임워크 (framework)가 있습니다." 모델은 데이터에 없는 숫자를 지어내기를 거부합니다. 신뢰는 AI가 인상적이기 때문에 생기는 것이 아니라, AI가 감사 가능하며 (auditable) "그 정보는 가지고 있지 않습니다"라고 말할 의지가 있기 때문에 생겨납니다.

이것이 전체 논지입니다: 투명성이 설득보다 강력합니다. 채용 담당자에게 필요한 것은 더 매끄러운 피칭 (pitch)이 아닙니다. 그들은 확인할 수 있는 능력이 필요합니다.
스택 (stack)은 의도적으로 $0입니다
데모 규모로 실행하는 데 비용이 전혀 들지 않습니다:
- 프론트엔드 (Frontend): GitHub Pages에 호스팅된 vanilla JS + Vite. 프레임워크를 사용하지 않았습니다 — 대화형 이력서는 작은 상태 머신 (state machine)이며, 의존성을 가볍게 유지함으로써 포크 (fork) 후 몇 분 만에 배포가 가능합니다.
- 백엔드 (Backend): 약 250줄 정도의 단일 Cloudflare Worker. 이는 LLM (대규모 언어 모델)을 위한 얇고 강화된 프록시 (proxy) 역할을 합니다 — CORS/오리진 잠금 (origin locking), IP당 속도 제한 (rate limit)을 수행하고, 시스템 프롬프트와 선언된 데이터를 주입하며, 응답을 스트리밍 (streaming)하여 다시 보냅니다. 브라우저는 API 키를 절대 볼 수 없습니다.
- 모델 (Model): 어떤 OpenAI 호환 엔드포인트 (endpoint)든 가능합니다. 템플릿은 무료 Llama 티어를 가리키도록 배포되며, 라이브 데모는 저렴한 호스팅 모델에서 실행됩니다. 제공업체를 바꾸는 것은 환경 변수 (environment variables) 두 개만 수정하면 됩니다.
인용 메커니즘 (citation mechanism)은 의도적으로 단순합니다: 모델은 각 답변 앞에 출처를 명시하는 간결한 헤더 (예: §SRC:story.conflict_style§)를 붙이도록 지시받으며, Worker는 이를 수정 없이 스트리밍하고, 클라이언트는 본문을 렌더링하기 전에 헤더를 파싱 (parsing)하여 배지 (badge)로 변환합니다. 임베딩 (embeddings)도, 벡터 DB (vector DB)도 없습니다 — "검색 (retrieval)"은 단지 지원자가 직접 선언한 JSON일 뿐이며, 전체를 전달하기에 충분할 만큼 작습니다. 디버깅도 쉽습니다: 잘못된 인용은 알 수 없는 코사인 유사도 (cosine score)의 문제가 아니라 잘못된 문자열의 문제입니다.
내가 예상치 못하게 좋아하게 된 숨겨진 모드: ?practice=1
URL에 ?practice=1을 추가하면 역할이 뒤바뀝니다. 이제 AI가 _면접관 (interviewer)_이 됩니다. AI는 당신의 스토리 파일 (story file)을 읽고 약점을 찾아냅니다. 즉, 측정되지 않은 결과, 소유권이 불분명한 "우리가 X를 했다" 식의 모호함, 실제 갈등이 없는 갈등 사례 등을 찾아내어 정확히 그 빈틈을 겨냥한 행동 질문 (behavioral questions)을 던집니다. 각 답변이 끝나면 AI는 STAR 구조, 소유권 언어 (ownership language), 어조 (tone) 등에 대해 짧은 코칭 노트를 남깁니다.
저를 놀라게 한 부분은 바로 이것입니다. 스토리 파일을 정직하게 작성하는 것 자체가 면접 준비입니다. 근거 기반 AI (grounded-AI) 모드에 데이터를 공급하려면, 당신은 실제 STAR 스토리들을 직접 적어야 하며 실제 프레임워크 (frameworks)에 따라 스스로를 평가해야만 합니다. 데모를 보여줄 수 있을 만큼 데이터가 충분히 좋아질 때쯤이면, 당신은 이미 대부분의 사람들이 면접 전날 밤에 급하게 하는 성찰 (reflection) 과정을 마친 상태가 됩니다. 연습 모드 (practice mode)는 그 과정을 완성해 줄 뿐입니다.
포크하기 (Fork it)
이 템플릿은 MIT 라이선스입니다. 자신만의 것으로 만들려면:
- 리포지토리 (repo)를 포크 (Fork) 하세요.
- 데이터를 채우세요:
content/en/resume.json및content/en/story.json(content/en/과content/tr/아래에 영어와 터키어 템플릿이 포함되어 있습니다)을 작성하고,content/config.json이 배포된 Worker를 가리키도록 설정하세요. - 정적 사이트 (static site)는 GitHub Pages에 (Actions 워크플로우가 있습니다), Worker는 Cloudflare에 (둘 다 무료 티어 사용 가능) 배포하세요.
그게 전부입니다. 소스 배지 (source badges)가 달린 질문 가능한 이력서와 개인 면접 코치를 0달러에 갖게 됩니다.
저는 진심으로 피드백을 받고 싶습니다. 특히 채용 담당자분들께 여쭙고 싶습니다: 출처를 인용하고 한계를 인정하는 AI가 잘 다듬어진 PDF보다 실제로 더 많은 신뢰를 구축할까요, 아니면 덜할까요? 그 질문이 제가 이 프로젝트를 만든 이유 전체이며, 저도 아직 답을 확신하지 못하고 있습니다.
— Repo: https://github.com/EnigmaDevelop/resume-signal-sifter
Demo: https://enigmadevelop.github.io/resume-signal-sifter/
Practice mode: https://enigmadevelop.github.io/resume-signal-sifter/?practice=1
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기