dev.to

I built a Tool for helping my friend next interview

친구의 면접 복기를 돕는 도구를 만들었습니다

면접에서 탈락한 뒤 피드백을 받지 못하는 친구를 위해 면접 복기 도구 Duster를 만들었습니다. 답변의 약점을 태그로 기록하고 면접마다 반복되는 패턴을 보여주며, 해당 약점을 겨냥한 연습 문제를 제공합니다. 로컬 모델과 규칙 기반 분석기를 지원해 민감한 면접 정보를 다루는 방식도 선택할 수 있습니다.

AI 요약

Duster는 면접을 마친 뒤 질문과 답변을 기록하고, 반복되는 약점을 찾아 연습으로 연결하는 개인용 면접 복기 도구입니다. 개발자는 면접에 여러 번 응시했지만 피드백을 받지 못해 무엇이 잘못됐는지 알기 어려워하는 친구를 위해 이 앱을 만들었습니다. 인터뷰 내용을 기억나는 대로 적으면 답변을 분석해 장황한 설명이나 수치 부족 같은 약점을 표시하고, 이후 면접에서도 같은 문제가 나타나는지 집계합니다.

세 부분으로 나눈 면접 복기

Debrief에서는 회사, 직무, 면접 결과와 질문·답변을 기록합니다. 면접 직후 녹음한 .m4a 또는 .mp3 파일도 올릴 수 있습니다. faster-whisper가 서버에서 음성을 텍스트로 바꾸고, 변환이 끝나면 오디오 파일을 삭제합니다. 개발자는 로컬 전사 기능을 쓰면 오디오가 기기 밖으로 나가지 않는다고 설명합니다.

Patterns는 면접 기록에서 약점 태그를 모아 횟수와 추세를 보여줍니다. 예를 들어 수치가 들어가지 않은 답변을 no_metrics로 분류하고, 여러 면접에서 반복되는지 확인합니다. Drill은 연습 질문 다섯 개를 제시하고 답변을 점수화한 뒤, 사용자가 실제로 한 말을 바탕으로 더 나은 답변을 작성합니다.

분석기 선택과 오류 대응

앱은 .env의 ANALYZER 설정에 따라 분석기를 고릅니다. Ollama를 선택하면 Qwen2.5-7B를 노트북에서 실행해 답변을 로컬에서 분석합니다. 모델 응답은 JSON으로 파싱하고 Pydantic으로 검증합니다. 응답 형식이 잘못됐거나 네트워크 오류가 나면 규칙 기반 분석기로 전환해 앱이 멈추지 않도록 했습니다. API 키를 설정하지 않아도 기본 규칙 분석기를 쓸 수 있습니다.

Backboard는 두 가지 역할을 맡습니다. 분석기로 설정하면 메모리 저장을 끄고 JSON 출력을 켜 답변에 약점 태그를 붙입니다. 이때 전체 복기 내용을 스레드에 기록하지는 않습니다. 별도로 연습 문제를 채점할 때는 선택한 분석기와 관계없이 질문, 점수, 주요 태그를 하나의 지속형 Backboard 스레드에 추가합니다. Patterns 화면은 이 스레드를 읽어 연습 기록을 이어 보여줍니다. 원문 복기 전체가 아니라 질문과 점수, 주요 태그만 원격에 저장한다고 설명합니다.

파인튜닝과 데이터 보호

개발자는 Tinker로 친구가 라벨링한 면접 답변을 사용해 Qwen3-8B를 LoRA 파인튜닝했습니다. 로컬 Ollama에서 쓰는 Qwen2.5-7B가 Tinker에서 제공되지 않아 Qwen3-8B를 골랐습니다. ANALYZER=tinker를 설정하면 저장한 체크포인트로 답변을 분석합니다. 작성자는 테스트 세트에서 파인튜닝 모델의 precision이 0.50, 규칙 기반 기준선이 0.35였다고 적었습니다. 데이터가 작아 결과를 벤치마크로 봐서는 안 된다고 덧붙였으며, recall 수치는 문서에 값이 채워져 있지 않습니다.

이 도구가 다루는 면접 복기에는 비공개 질문, 연봉 대화, 개인적인 실수처럼 민감한 내용이 담길 수 있습니다. 로컬 설정에서는 Ollama와 로컬 Whisper를 사용해 원문 텍스트와 오디오를 외부 모델 제공자에게 보내지 않습니다. Backboard를 선택해도 원문 전체 대신 연습 질문과 점수, 주요 태그만 저장합니다. Backboard와 Tinker는 선택 기능이며, 로컬 실행과 기본 규칙 분석에는 API 키나 토큰 비용이 필요하지 않습니다.

dev.to 반응

  • @respect17 — 면접 준비는 이 챌린지에 잘 어울리는 주제입니다. 면접은 충분히 스트레스가 큰 일이라 실질적인 도움이 된다면 의미가 있습니다. 친구가 좋은 일자리를 얻기를 바랍니다.
    • @aarishmansur — 요즘 신입 구직 시장이 정말 좋지 않아서, 저도 그러길 바랍니다 😓
  • @sneha_singh_25 — 정말 좋은 아이디어입니다. 실제 면접에서 겪는 문제를 실행 가능한 도움으로 바꾼 점이 마음에 듭니다.
    • @aarishmansur — 고맙습니다, Sneha.
  • @harshit_parihar_65bae918e — 노출을 위한 댓글입니다.
  • @xlr8_jay — 저도 도와주세요.
  • @halwaii_ — 정말 좋은 아이디어입니다. 실제 면접에서 겪는 문제를 실행 가능한 도움으로 바꾼 점이 마음에 듭니다.

원문: dev.to / 번역·요약: Trawling