- Published on
OpenAI 기반 질문 설계와 피드백 고도화
- Authors
- Name
- 김민석
Introduction
서비스 개요
- 사용자가 이력서
파일(PDF, Word, TXT)
을 업로드하면, 서버는 OpenAI를 이용해 해당 이력서의 여러 항목을 분석하고 피드백을 제공하는 서비스이다. - 결과적으로 사용자에게는
개선 사항, 강점, 부족한 부분
등에 대한 피드백이 텍스트 형태로 제공된다.
서비스 동작 흐름

1단계: 이력서 파일 업로드
사용자 동작:
웹사이트에서 사용자는 이력서 파일을 업로드 한다.시스템 동작:
- 파일 형식 및 크기 검증한다.
(PDF, Word, TXT만 허용)
- 파일이 성공적으로 업로드 되면, 서버로 파일이 전송 된다.
2단계: 이력서 분석 시작
사용자 동작:
업로드 후, 사용자는 분석을 요청하는 버튼을 클릭한다.시스템 동작:
- 파일이 서버에 저장되며,
OCR
(광학 문자 인식)이 필요한 경우Tesseract
등을 통해 PDF에서 텍스트를 추출한다. - 텍스트 데이터가 준비되면, 이를 분석하기 위해
OpenAI API
로 전송된다. - 서버에서 이력서의 각 항목
(기본 정보, 기술 스택, 경력 사항, 포트폴리오, 대외활동, 자격증, 자기소개서)
에 대해 질문 리스트를 생성하여 OpenAI에게 질문을 던진다.
3단계: 질문 및 답변 처리
시스템 동작:
- OpenAI는 각 질문에 대해 답변을
생성
하여 서버로응답
을 보낸다. - 서버는 응답을 정리하여 사용자가 이해할 수 있는 형태로 데이터를 가공한다.
- 각 항목별로
강점, 개선할 점, 누락된 정보
등을 포함한 종합적인 피드백을 생성한다.
4단계: 결과 제공
시스템 동작:
- 분석 결과는 웹사이트 상에서 사용자에게 출력한다.
- 항목별
강점
과개선사항
은차트나 점수 형태
로 시각적으로 표시할 수도 있다.
5단계: 사용자가 결과 확인 후 액션
사용자 동작:
결과를 확인한 후, 사용자는 이력서를 개선하거나 피드백을 기반으로 추가 질문을 할 수 있다.시스템 동작:
- 사용자가 이력서를 수정해 다시 업로드하거나, 특정 피드백에 대한 추가 분석을 요청할 수 있다.
1차 분석.

- 기본 정보는 적절한가?
- 기술 스택은 잘 구성되어 있는가?
- 경력 사항은 충분한가?
- 포트폴리오는 잘 작성되어 있는가?
- 대외활동은 관련성이 있는가?
- 자격증은 여부는 어떠한가?
- 자기소개서는 자연스러운가?
2차 분석.
기본 정보

연락처
- 이메일 주소의 형식이 적절한가?
- 전화번호가 국제 형식에 맞춰 작성되었는가?
- 주소가 현재 거주지와 일관성이 있는가?
- 특히 지원하는 직무와의 지리적 거리가 문제되지 않는가?
SNS 및 웹사이트 링크
- LinkedIn 프로필이나 GitHub 등의 링크가 잘 작동하는가?
- LinkedIn 프로필의 헤드라인이 지원 직무와 관련성이 있는가?
- 프로필에 담긴 정보가 이력서와 일관성을 유지하고 있는가?
- GitHub에 올라온 프로젝트들이 지속적으로 업데이트되고 있으며, 최신 기술을 반영하고 있는가?
- 링크된 프로필에서 직무 관련 프로젝트나 성과가 충분히 강조되고 있는가?
기술 스택

기술의 연관성
- 사용된 기술들이 구체적으로 어떤 프로젝트에서 어떤 방식으로 활용되었는지 명확하게 제시되어 있는가?
- 해당 직무에서 기대되는 핵심 기술을 포함하고 있는가?
- 기술의 나열이 중요도 순으로 나열되어 있는가?
숙련도 표기
- 구체적인 사용 경험이 부족한 기술이 과장되어 있지는 않은가?
- 숙련도가 과하게 낮거나, 애매하게 적혀 있지 않은가?
경력 사항

성과와 책임 구분
- 프로젝트에서 주도적으로 해결한 문제나 도전에 대해 구체적인 사례가 제시되어 있는가?
- 직무 설명에서 단순한 업무 나열 대신, 눈에 띄는 성과나 기여도가 충분히 강조되고 있는가?
- 각 직무에서 중요한 프로젝트나 업무를 구체적으로 설명하고 있는가?
- 팀과의 협업 방식이 상세히 설명되어 있는가?
수치화된 성과
- 성과가 수치화되어 있는가?
- 성과 달성 과정에서 사용된 구체적인 전략이나 접근 방식이 설명되어 있는가?
- 구체적인 성과 지표를 제시하고, 어떻게 달성했는지 설명하고 있는가?
- 성과가 회사의 전반적인 목표와 얼마나 일치하는지?
경력의 일관성
- 이력서에 나열된 경력들이 지원하는 직무와 관련성이 있는가?
- 경력의 순서가 역순으로(최근 경력부터) 나열되어 있는가?
- 중간에 경력 공백이 있는 경우, 그 공백의 이유가 설명되어 있는가?
- 각 직장에서의 직무가 단계적으로 발전하고 있는가?
포트폴리오

프로젝트 설명
- 프로젝트의 어려움을 해결한 방법이나 접근 방식이 명확하게 기술되어 있는가?
- 프로젝트의 초기 목표와 그 결과물이 어떻게 연결되었는지 설명하고 있는가?
- 각 프로젝트의 목표와 결과가 명확하게 설명되어 있는가?
- 프로젝트에서 자신의 역할이 명확하게 드러나는가?
- 프로젝트의 결과가 실제 사용자에게 어떤 영향을 줬는지 구체적으로 설명하고 있는가?
기술 및 도구 사용
- 프로젝트에서 사용한 기술들이 직무와 관련성이 높은가?
- 프로젝트에서 사용한 기술 스택과 도구들이 명확하게 기재되어 있는가?
- 특정 도구나 라이브러리가 실제 문제 해결에 어떻게 기여했는지 제시하고 있는가?
프로젝트의 완성도
- 프로젝트가 실제로 배포되었거나, 공개된 링크가 있는가?
- README 파일이 충분히 상세히 작성되어 있는가?
- 프로젝트가 프로덕션 환경에서 사용 가능한 수준으로 완성되었는가?
- 사용자가 프로젝트를 이해하고 쉽게 실행할 수 있도록 충분한 문서화가 되어 있는가?
대외활동

관련성
- 대외활동이 지원자의 경력 개발과 어떻게 연결되는지를 설명하고 있는가?
- 이 활동이 단순히 취미 수준이 아니라, 실제로 실무에 도움이 되는지를 평가할 수 있는가?
소프트 스킬 강조
- 대외활동을 통해 배운 소프트 스킬이 업무에서 어떻게 적용될 수 있는지 설명하고 있는가?
- 활동 중 직면한 도전과 그 해결 방법이 상세히 설명되어 있는가?
- 이러한 활동이 지원자의 성격이나 역량을 증명하는지를 설명하고 있는가?
자격증

기술과 연관성
- 자격증이 지원하는 직무와 밀접하게 연관되어 있는가?
- 오래된 자격증이 있는 경우, 그 자격증이 여전히 가치가 있는지를 평가할 수 있는가?
추가 자격증
- 취득하지 않은 자격증 중에서, 해당 직무를 위해 추천할 만한 자격증이 있는가?
자기소개서

문단 구성
- 각 문단이 하나의 주제를 명확히 전달하고 있으며, 서론-본론-결론이 논리적으로 구성되어 있는가?
- 불필요한 중복이나 주제의 흐름을 방해하는 문장이 없는가?
- 자기소개서가 너무 장황하거나, 읽는 이가 지루해하지 않도록 적절한 길이를 유지하고 있는가?
문장 및 단어 수준
- 문장이 너무 길거나, 불필요하게 복잡하지 않은가?
- 사용된 단어들이 직무에 맞는 전문 용어와 적절한 표현을 사용하고 있는가?
- 너무 과장된 표현이 있는지, 아니면 너무 겸손해서 자기 어필이 약하지는 않은지?
- 직무와 관련된 키워드를 사용하여 채용 담당자가 쉽게 이해할 수 있도록 작성되었는가?
핵심 메시지 전달
- 자기소개서가 강점을 명확하게 전달하고 있는가?
- 문장이 지루하지 않고, 읽는 사람에게 관심을 끌만한 포인트가 있는가?
- 자기소개서가 단순한 사실 나열이 아니라, 개인적인 동기와 열정을 충분히 전달하고 있는가?
- 자기소개서에서 전달하려는 핵심 메시지가 명확히 드러나며, 해당 직무와의 연결성을 나타내고 있는가?
각각의 설명 항목.

1차 분석
기본 정보는 적절한가?
가치:
지원자의 첫인상을 결정하고, 채용 담당자가 연락을 쉽게 할 수 있도록 보장한다.이유:
기본 정보는 채용 과정에서 가장 중요한 단계로, 연락처의 정확성이 확보되지 않으면 채용 프로세스가 중단될 수 있기 때문이다.엣지 케이스:
이메일 주소나 전화번호가 없는 경우,"연락처 정보가 누락되어 있습니다."
라는 메시지 제공. 주소가 없다면, 지역 정보가 중요한 직무인지 확인한 후 관련 피드백을 제공한다.
기술 스택은 잘 구성되어 있는가?
가치:
직무에 필요한 기술적 역량을 빠르게 파악할 수 있다.이유:
직무에 맞는 기술 스택이 포함되어 있는지 확인하면, 지원자의 실무 능력을 신속하게 판단할 수 있기 때문이다.엣지 케이스:
기술 스택이 누락되었거나 불충분한 경우,"기술 스택이 누락되었거나 더 구체적으로 작성해야 합니다."
라는 피드백을 제공한다.
경력 사항은 충분한가?
가치:
지원자의 업무 경험과 실질적인 기여도를 확인할 수 있다.이유:
경력 사항은 지원자가 실제로 업무에서 어떤 성과를 냈는지를 보여주는 중요한 지표이기 때문에, 이를 통해 직무 적합성을 판단할 수 있기 때문이다.엣지 케이스:
경력이 없거나 제한적인 경우,"경력 사항이 부족하거나 작성되지 않았습니다. 인턴 경험 등을 추가해 보세요."
라는 피드백을 제공해준다.
포트폴리오는 잘 작성되어 있는가?
가치:
지원자의 실무 능력과 기술을 실제로 어떻게 적용했는지 평가할 수 있다.이유:
포트폴리오는 지원자의 기술력을 보여주는 자료이므로, 프로젝트 설명과 결과가 명확해야 하기 때문이다.엣지 케이스:
포트폴리오가 없을 경우,"포트폴리오가 제출되지 않았습니다. 중요한 프로젝트나 작업물을 포함하는 포트폴리오를 추가해 보세요."
라는 피드백을 제공해준다.
대외활동은 관련성이 있는가?
가치:
직무 외 활동에서 개발된 소프트 스킬(리더십, 팀워크)을 평가할 수 있다.이유:
대외활동은 직무와 관련된 추가적인 역량을 보여줄 수 있으며, 특히 소프트 스킬을 증명하는 데 중요한 역할을 할 수 있기 때문이다.엣지 케이스:
대외활동이 없거나 관련성이 낮은 경우,"대외활동이 부족하거나 직무와 관련성이 적습니다. 직무와 관련된 활동을 추가하거나 강조해 보세요."
라는 피드백을 제공한다.
자격증 여부는 어떠한가?
가치:
해당 직무에 필요한 기술적 인증을 확인할 수 있음.이유:
자격증은 직무에서 요구하는 특정 기술이나 지식을 증명하는 중요한 요소로 작용함.엣지 케이스:
자격증이 없는 경우,"자격증 정보가 누락되었습니다. 직무에 필요한 자격증이 있는 경우 추가해 보세요."
라는 피드백 제공.
자기소개서는 자연스러운가?
가치:
지원자의 의사소통 능력과 자기 표현 능력을 평가할 수 있다.이유:
자기소개서는 자신의 강점과 동기를 어떻게 표현하는지를 보여주기 때문에, 자연스럽고 일관성 있게 작성되어야 한다.엣지 케이스:
자기소개서가 작성되지 않은 경우,"자기소개서가 누락되었습니다. 직무에 대한 지원 동기와 자신만의 강점을 중심으로 작성해 보세요."
라는 피드백 제공.
2차 분석
기본 정보는 적절한가? (=1차 질문 내용)
이메일 주소와 연락처가 적절한가?
가치:
연락처의 정확성은 채용 과정에서 필수적인 요소이며, 실수나 누락이 있으면 채용 프로세스가 중단될 수 있다.이유:
이메일이나 전화번호는 지원자가 회사와 연결되는 가장 중요한 정보 중 하나이기 때문이다.엣지 케이스:
- 이메일 주소나 연락처가 없는 경우:
"이메일 또는 연락처 정보가 누락되었습니다. 반드시 이메일과 전화번호를 기재해 주세요."
- 이메일 주소나 연락처가 없는 경우:
- LinkedIn 및 GitHub 링크가 유효하고 최신인가?
가치:
최신 상태의 링크는 지원자의 최신 프로젝트나 활동을 확인하는 중요한 정보이다.이유:
온라인 프로필은 지원자의 최신 기술과 경력을 보여주는 자료이므로, 링크가 유효하지 않으면 제대로 평가하기 어렵기 때문이다.엣지 케이스:
- 링크가 누락되었거나 잘못된 경우:
"LinkedIn 또는 GitHub 링크가 유효하지 않습니다. 최신 상태로 업데이트해 주세요."
기술 스택은 잘 구성되어 있는가? (=1차 질문 내용)
- 기술 스택이 직무 요구사항과 일치하는가?
가치:
직무에 필요한 기술 역량을 빠르게 확인하여 지원자의 적합성을 평가할 수 있다.이유:
기술 스택이 직무 요구와 맞지 않으면 채용 담당자가 지원자를 적절하게 평가하기 어렵기 때문이다.엣지 케이스:
- 기술 스택이 적절히 기재되지 않은 경우:
“기술 스택이 누락되었거나 불충분합니다. 직무에 필요한 기술을 추가해 주세요."
경력 사항은 충분한가? (=1차 질문 내용)
- 성과 중심의 경력 설명이 있는가?
가치:
지원자가 단순히 일을 수행한 것이 아니라, 성과를 냈는지 확인할 수 있다.이유:
성과를 기반으로 한 설명이 있으면 지원자가 직무에서 실질적으로 기여할 수 있는지 평가 가능하기 때문이다.엣지 케이스:
- 성과 중심 설명이 없는 경우:
“경력 설명이 성과 중심으로 작성되지 않았습니다. 달성한 성과를 구체적으로 추가해 주세요."
- 경력 간 일관성이 있는가?
가치:
경력의 일관성이 직무 적합성을 판단하는 데 중요한 역할을 한다.이유:
일관된 경력 발전이 없다면, 지원자의 경력 방향이 불명확해 보일 수 있음.엣지 케이스:
- 경력 간 일관성이 없거나 공백이 있는 경우:
"경력의 일관성이 부족하거나 경력 공백이 있습니다. 이유를 설명해 주세요."
포트폴리오는 잘 작성되어 있는가? (=1차 질문 내용)
- 프로젝트 목표와 결과가 명확히 설명되어 있는가?
가치:
지원자가 프로젝트에서 어떤 문제를 해결했고, 그 결과가 어땠는지를 명확히 확인할 수 있다.이유:
프로젝트 목표와 결과가 명확하지 않으면, 지원자의 기여도를 평가하기 어렵기 때문이다.엣지 케이스:
- 포트폴리오가 없는 경우:
"포트폴리오가 제출되지 않았습니다. 중요한 프로젝트나 작업물을 포함하는 포트폴리오를 추가해 주세요."
- 프로젝트 설명이 불충분한 경우:
"프로젝트 목표와 결과가 충분히 설명되지 않았습니다. 프로젝트의 목적과 결과를 구체적으로 작성해 주세요."
대외활동은 관련성이 있는가? (=1차 질문 내용)
- 대외활동이 직무와 관련성이 있는가?
가치:
직무 외 활동을 통해 지원자가 리더십, 팀워크, 문제 해결 능력을 어떻게 개발했는지 확인할 수 있다.이유:
대외활동이 직무와 관련되지 않는다면, 그 활동은 채용 담당자에게 지원자의 직무 적합성을 증명하는 데 있어 가치가 낮을 수 있기 때문이다. 또한, 직무와 관련된 대외활동은 지원자의 다면적인 역량을 보여주고, 실무 경험과 연관될 수 있어 직무 적합성을 강화할 수 있다고 생각한다.엣지 케이스:
- 대외활동이 없는 경우:
"대외활동이 누락되었습니다. 직무와 관련된 활동이나, 소프트 스킬을 발휘한 활동을 추가해 주세요."
- 대외활동의 직무 관련성이 낮은 경우:
"대외활동이 직무와 관련성이 부족합니다. 직무와 관련된 활동을 강조해 보세요."
자격증 여부는 어떠한가? (=1차 질문 내용)
- 자격증이 최신이고 직무와 연관성이 있는가?
가치:
자격증은 지원자의 기술과 전문성을 증명하는 중요한 요소로, 특히 최신 자격증이라면 직무와 관련된 능력을 가지고 있음을 보여준다.이유:
오래된 자격증이나 직무와 관련 없는 자격증은 채용 담당자에게 그다지 가치 있게 평가되지 않을 수 있다.엣지 케이스:
- 자격증이 없는 경우:
"자격증 정보가 누락되었습니다. 직무와 관련된 자격증이 있는 경우 추가해 주세요."
- 자격증이 직무와 관련성이 낮은 경우:
"현재 기재된 자격증은 직무와의 연관성이 적습니다. 직무와 연관성 있는 자격증을 추가해 보세요."
자기소개서는 자연스러운가? (=1차 질문 내용)
- 자기소개서가 지원자의 강점을 효과적으로 전달하는가?
가치:
자기소개서는 지원자가 자신의 강점과 직무에 대한 열정을 표현하는 중요한 요소로, 직무와의 적합성을 나타낼 수 있는 기회이다. 자기소개서가 명확하게 구성되고 강점을 잘 어필하면, 채용 담당자는 지원자의 동기와 능력을 빠르게 파악할 수 있다.이유:
자기소개서가 너무 장황하거나, 핵심 메시지가 명확하지 않으면 채용 담당자가 지원자의 강점을 이해하기 어렵다. 직무와 관련된 자신만의 강점과 열정을 강조하면, 지원자가 다른 지원자들과 차별화될 수 있어야 한다.엣지 케이스:
- 자기소개서가 없는 경우:
"자기소개서가 누락되었습니다. 직무에 대한 지원 동기와 강점을 중심으로 자기소개서를 작성해 주세요."
- 자기소개서가 너무 장황한 경우:
"자기소개서가 지나치게 장황합니다. 직무와 관련된 핵심 메시지를 간결하고 명확하게 전달하는 것이 중요합니다."
- 자기소개서의 핵심 메시지가 불명확한 경우:
"자기소개서에서 강점과 지원 동기가 명확하게 드러나지 않습니다. 자신만의 경험과 직무 적합성을 강조하는 내용을 추가해 주세요."
- 자기소개서의 문장 구조가 논리적이지 않은 경우:
"문단의 흐름이 논리적이지 않거나, 연결이 자연스럽지 않습니다. 서론, 본론, 결론 구조로 논리적인 흐름을 유지해 주세요."
결과 예시
- 경력 사항:
질문:
"성과 중심의 경력 설명이 있는가?"결과:
"경력 설명에 성과가 구체적으로 제시되지 않았습니다. '매출 15% 증가'와 같은 구체적인 성과 지표를 추가해 보세요."
- 포트폴리오:
질문:
"프로젝트 목표와 결과가 명확히 설명되어 있는가?"결과:
"프로젝트 목표는 명확하지만, 결과가 불충분합니다. 프로젝트의 성과나 사용자 피드백 등을 추가하세요."
- 대외활동:
질문:
"대외활동이 직무와 관련성이 있는가?"결과:
"대외활동이 직무와 직접적인 연관은 없지만, 팀워크와 리더십을 보여줄 수 있는 활동으로서 강점이 있습니다."
- 자기소개서:
질문:
"자기소개서가 지원자의 강점을 효과적으로 전달하는가?"결과:
"강점이 잘 드러나지 않으며, 구체적인 프로젝트 경험과 지원 동기를 명확히 전달할 필요가 있습니다."
엣지 케이스 처리
파일 형식 오류:
사용자가 PDF가 아닌 파일을 업로드할 경우,"지원되지 않는 파일 형식입니다. PDF, Word, TXT 파일만 지원됩니다."
라는 에러 메시지를 제공한다.필수 정보 누락:
- 만약 이력서에서 필수 정보(기본 정보, 경력 사항 등)가 누락되었을 경우, 분석 단계에서
"해당 항목이 누락되었습니다."
라는 경고 메시지와 함께 구체적인 지침 제공해준다. - 예를 들어, 기술 스택이 누락되었다면,
"기술 스택이 없습니다. 지원하는 직무에 필요한 기술을 추가해 주세요."
라는 안내 제공하는 것이다.
- 만약 이력서에서 필수 정보(기본 정보, 경력 사항 등)가 누락되었을 경우, 분석 단계에서
서버 오류:
OpenAI API나 서버 자체에서 오류가 발생한 경우,"현재 분석을 진행할 수 없습니다. 잠시 후 다시 시도해 주세요."
라는 메시지를 제공한다.불충분한 텍스트 데이터:
OCR로 추출된 텍스트가 불충분할 경우,"파일 내 텍스트가 불완전합니다. 텍스트가 명확하게 포함된 파일을 업로드해 주세요."
라는 피드백 제공한다.