quest_PoC

내 업무의 적용 지점 도출

대상 업무: 경영기획팀/IR팀의 실적발표(컨퍼런스콜) 관련 업무 (PROBLEM_DEFINITION.md와 동일한 도메인)

1. 후보 목록 (3개 이상)

적은 것 업무 유형 지금 처리 방식 병목 하루·주당 발생량 틀렸을 때
A. 실적발표 음성 → 리스크 브리핑 (지금 구축한 것) 전사 담당자가 컨퍼런스콜 녹음(30~60분)을 처음부터 끝까지 들으며 핵심 리스크를 수기로 메모 청취 속도가 실시간 재생에 묶여 있고, 특정 발언을 나중에 다시 찾기 어려움 분기당 1회 (주당 환산 시 약 0.08건 — 낮음) 내부 보고서 초안 단계, 최종적으로 담당자가 검수 후 사용 → 되돌릴 수 있음. 다만 리스크를 놓쳤을 때 “놓쳤다는 사실 자체”를 알아채기 어려움
B. 공시자료·실적보고서 수치 정합성 검사 검색·검사 보고서 작성 후 사람이 재무제표 표와 본문 서술을 대조하며 검토 숫자가 많은 표와 긴 텍스트를 대조하는 단순반복 작업 — 피로가 쌓이면 놓침 분기 보고서 + 수시 공시 포함 시 주당 여러 건 공시 이후에는 되돌리기 어려움 — 오류가 그대로 투자자/금감원에 노출되고 정정공시가 필요함
C. 투자자·애널리스트 문의 메일 분류/초안 작성 배분·입력 IR 담당자가 메일을 열어 카테고리(재무/사업/ESG/지분 등)를 파악하고 담당자에게 전달하거나 직접 답변 초안 작성 실적발표 직후 1~2주간 문의가 몰려, 반복적인 분류·정형 답변 작성에 시간 소요 실적발표 시즌 하루 5~15건 초안 단계이며 사람이 최종 확인 후 발송 → 되돌릴 수 있음

2. 네 가지 기준으로 판단

기준 A (실적발표 음성) B (공시 검사) C (문의 메일 분류)
판정 기준이 이미 정해져 있다 ✅ 부채비율>200%, 유동비율<100% 등 명확한 임계값 ✅ 표 숫자와 본문 서술 일치 여부는 이진 판정 △ 카테고리 분류는 명확, 답변 “품질”은 주관적
지난 판정 기록으로 채점 자료를 만들 수 있다 △ 과거 녹취록+당시 리스크 메모가 있어야 하는데 비정형으로 흩어져 있을 가능성 ✅ 과거 정정공시 이력이 좋은 채점 자료 ✅ 과거 메일·답변 이력 (제약: 개인정보 마스킹 필요)
틀렸을 때 되돌릴 수 있다 ✅ 내부 초안, 최종 검수 있음 ❌ 외부(투자자)에 직접 노출, 정정 필요 ✅ 발송 전 사람이 확인
발생량이 충분해서 개선 효과가 보인다 ❌ 분기당 1회로 낮음 ✅ 주당 여러 건 ✅ 시즌 중 하루 여러 건

결론: B는 “틀렸을 때” 기준에서 명확히 탈락합니다 — 잘못된 판정이 투자자에게 그대로 나가는 지점이라 이번 PoC 대상에서 제외합니다(템플릿 규칙: “잘못된 판정이 고객에게 그대로 나가거나 사람에게 영향을 주는 지점은 PoC 대상에서 뒤로 미룬다”). A와 C는 각각 4개 중 3개를 만족합니다.

선택: A (실적발표 음성 → 리스크 브리핑)를 유지합니다. 네 기준을 전부 만족하는 후보가 없으므로(“발생량”에서 A가 약함), 템플릿 규칙대로 가장 많이 만족하는 지점을 고르되 약한 항목을 제약으로 남깁니다.

3. 성공 기준 (정량, 한 줄)

실적발표 녹음 1건당, 핵심 재무 리스크(부채비율/유동비율 등 사전 정의된 임계값 기준) 추출까지 걸리는 시간을 사람의 수작업 대비 50% 이상 단축하고, 사람이 실제로 확인했던 핵심 리스크를 100% 재현한다.

정직한 한계: 위 “사람의 수작업 시간” 기준은 템플릿이 권장하는 “실제로 담당자에게 20건을 처리하게 해서 잰 시간”이 아니라, PROBLEM_DEFINITION.md에 적은 가정(녹음 길이의 1.5~2배)을 그대로 쓴 것입니다. 이 프로젝트를 실제 조직에 적용한다면, 이 성공 기준을 확정하기 전에 담당자가 과거 컨퍼런스콜 녹음 20건을 실제로 청취·메모하는 데 걸린 시간과 오류 수를 먼저 재는 작업이 선행되어야 합니다. (현재 PoC는 이 실측 기준선 없이, 가정치로 절감률을 계산했다는 것이 한계입니다 — VALIDATION_RESULTS.md에서도 “1.75배 가정”이라고 명시하고 있습니다.)

4. 만들기 — 코딩 에이전트 지시문 다섯 가지 대비, 현재 코드 점검

지금까지 만든 notebooks/earnings_call_briefing_poc.ipynb가 아래 다섯 항목을 실제로 지키고 있는지 점검한 결과입니다.

# 요구사항 현재 상태 판정
1 모델 이름·실행 위치·자료 외부 전송 금지 조건 모델(Whisper small, Claude claude-sonnet-5)과 실행 위치(로컬 CPU/Colab)는 명시됨. STT는 로컬 처리라 음성이 외부로 안 나감. 다만 실제 Claude 호출 시에는 세그먼트 텍스트가 Anthropic API로 전송됨 — 실제 기밀 실적발표라면 이 조건과 충돌할 수 있는 미해결 지점 ⚠️ 부분 충족
2 판정에 쓰는 값을 전부 인자로 받고 코드에 숫자를 박지 말 것 mock_extract_risks 내부에 임계값이 하드코딩 → 수정 완료: mock_extract_risks(transcript, debt_ratio_threshold=200, current_ratio_threshold=100)로 인자화, 값은 셀 상단 DEBT_RATIO_THRESHOLD/CURRENT_RATIO_THRESHOLD 상수로 분리 ✅ 충족 (2026-09-26 수정)
3 결과에 점수/신뢰도를 남기고 반올림하지 말 것 명시적 수치 신뢰도 없음 → 수정 완료: Whisper가 세그먼트마다 내주는 avg_logprob/no_speech_prob을 그대로 segment_confidence에 남기고, 낮은 신뢰도 세그먼트를 근거로 쓰면 경고. 다만 이번 클린 TTS 음성에서는 실제로 낮은 신뢰도가 관측되지 않아, 이 경고 로직 자체가 발동하는 것은 아직 확인 못함 ✅ 충족 (2026-09-26 수정, 경고 발동은 미검증)
4 중간 산출물을 파일로 남기고 다시 돌려도 덮어쓰지 말 것 AUDIO_PATH = "earnings_call.mp3" 고정 파일명 → 수정 완료: 실행마다 RUN_ID(타임스탬프)로 runs/<RUN_ID>/ 폴더를 새로 만들고, 그 안에 음성(earnings_call.mp3)·STT 결과(stt_result.json)·리스크 판정(risks.json)을 보존. 문서용 고정 경로(notebooks/earnings_call.mp3)는 매 실행 최신본을 복사하는 별도의 “편의용 스냅샷”이며, 감사 기록의 원본은 runs/ 쪽 ✅ 충족 (2026-09-26 수정)
5 결과를 눈으로 확인할 수 있는 형태로 함께 저장 근거 구간 재생 기능 없음 → 수정 완료: 노트북 10번 섹션에서 리스크별 근거 세그먼트만 잘라 runs/<RUN_ID>/evidence_*.mp3로 저장하고 재생. 이 기능을 만드는 과정에서 실제로 근거 타임스탬프가 잘못된 발언을 가리키던 버그를 발견해 고쳤습니다 — “검산 기능을 만드는 행위 자체가 검산이었다”는 사례 ✅ 충족 (2026-09-27 수정)

2번과 4번은 2026-09-26에 실제로 수정하고 재실행해 확인했습니다. 같은 날, 다른 두 PoC 예시(사진 검색기·스쿼트 보조도구)를 검토하다가 “모델이 이미 내주는 신뢰도를 계산에 안 쓰면, 모델이 ‘모른다’고 말한 것을 읽지 않은 셈”이라는 지적이 우리 3번 항목과 정확히 겹친다는 것을 발견해 3번도 같은 날 수정했습니다. 5번(근거 구간만 재생)은 2026-09-27에 구현했고, 그 과정에서 근거 타임스탬프 자체가 잘못된 발언을 가리키던 진짜 버그를 발견해 함께 고쳤습니다(VALIDATION_RESULTS.md 0-1번 섹션 참고). 이제 5개 중 4개(2·3·4·5번)가 충족됐고, 1번(자료 외부 전송)만 실전 적용 시 남은 과제로 남아 있습니다 — Claude 실제 API 호출 시 세그먼트 텍스트가 외부로 전송되는 것은 로컬 STT만으로는 해결되지 않는 구조적 제약입니다.

5. 핵심 정리

항목 한 줄 정리 이 프로젝트에서는
출발점 도구가 아니라 업무에서 출발한다 문제 정의서(PROBLEM_DEFINITION.md)를 먼저 쓰고, 그 다음에 Whisper/Claude를 골랐다
업무 유형 검색·검사 / 판독·분류 / 배분·입력 / 전사 — 유형마다 병목·근거가 다르다 A는 전사, B는 검색·검사, C는 배분·입력으로 분류해 서로 다른 병목을 확인했다
적용하지 않을 업무 판정 기준이 사람마다 다른 일, 되돌릴 수 없는 일, 판정 기록이 없는 일 B(공시 검사)를 “되돌릴 수 없는 일”이라 판단해 제외했다
성공 기준 만들기 전에 정량으로, 근거는 지금 사람이 하는 수준으로 정량 기준은 적었지만, 근거(사람 수준)는 실측이 아니라 가정치를 썼다 — 한계로 명시
후보 구성 크기가 아니라 종류로 벌린다(실행 위치/목적/결과 형태) A/B/C는 업무 유형이 서로 다르지, 같은 일의 큰/작은 버전이 아니다
기준선 지금 처리 방식도 후보에 넣는다 — 그것이 이기면 그것도 결과다 “사람이 그대로 듣고 메모”가 기준선. 이번엔 AI 경로가 이겼지만(처리시간 83.5%↓), 기준선 자체를 실측하지 않아 이 승리도 가정 위에 있다
제외 조건 실행 위치·라이선스로 먼저 거르고, 점수와 섞지 않는다 세 후보 모두 로컬/오픈소스 실행이 가능해 이번엔 이 필터에 걸린 후보가 없었다(6번 회고 참고)
임계값 값 아래를 잘라내는 경계 — 순위용 점수여선 안 된다 부채비율 200%, 유동비율 100%를 순위가 아니라 이진 임계값으로 쓰고, 이번에 코드에서 인자로 뺐다
신뢰도 모델이 내주는 확신 정도 — 안 읽으면 없는 셈 아직 명시적 신뢰도 점수는 안 남기고 있다(4번 표의 남은 과제)
값의 검증 값을 넣을 때마다 의도한 것을 재는지 따로 확인한다 정량 지표(문자유사도)와 별개로 WER을 추가했더니 오히려 한국어에 안 맞는 지표라는 게 드러났다 — “새 값을 넣었다고 더 정확한 게 아니다”를 직접 겪었다
촬영·입력 조건 판정 항목을 정하면 자료 수집 방식도 같이 정해진다 — 모델 교체로 해결 안 됨 회계 용어 오인식은 모델을 키워도(medium) 안 풀렸고, initial_prompt(입력 조건 조정)로 일부만 풀렸다
PoC의 산출물 작동하는 물건이 아니라 판단이다 — 기준을 못 넘은 이유도 결과다 “발생량이 낮다”는 기준 미달도 결과로 남겼지, 숨기지 않았다

6. 오늘의 회고

1. 적은 세 지점 중에서 고른 것과 뺀 것의 차이는 무엇이었습니까? 뺀 것(B, 공시자료 검사)은 “틀렸을 때 되돌릴 수 있다” 기준에서 탈락했습니다 — 오류가 그대로 투자자에게 노출되고 정정공시가 필요합니다. 고른 것(A)과 남겨둔 대안(C)은 둘 다 “내부 초안 → 사람이 최종 확인 후 사용”이라는 구조라 되돌릴 수 있습니다. 즉 차이는 정확도나 기술적 난이도가 아니라 오류가 났을 때 그 오류가 조직 밖으로 그대로 나가는지 여부였습니다.

2. 성공 기준의 숫자를 어디서 가져왔습니까? 현행 수준을 실제로 재 보았습니까? 아닙니다. PROBLEM_DEFINITION.md에 적은 가정(청취+메모는 녹음 길이의 1.5~2배)을 그대로 가져다 썼습니다. 담당자에게 실제로 20건을 처리하게 하고 시간·오류 수를 잰 적은 없습니다. 이번 PoC의 “처리 시간 절감률 83.5%” 같은 수치는 전부 이 가정 위에 있다는 것이 정직한 한계입니다.

3. 실행 위치나 라이선스 때문에 제외한 후보가 있었습니까? 그 후보가 점수로는 몇 위였습니까? 해당 없음입니다. A/B/C 세 후보 모두 로컬 실행(오픈소스 Whisper) 또는 Colab에서 계정·과금 없이 실행 가능해, 이 필터에 걸려 제외된 후보는 없었습니다. 다만 A의 리스크 추출 단계에서 실제 Claude API를 쓰면 세그먼트 텍스트가 외부로 전송되는데, 이 조건이 “실행 위치·자료 외부 전송 금지”를 완전히 만족하지는 못한다는 점은 4번 표의 1번 항목에 미해결 과제로 남겨뒀습니다.

4. 기준을 넘지 못한 항목이 있다면, 다음에 무엇을 바꿔 다시 확인하겠습니까? A는 “발생량”(분기당 1회) 기준을 넘지 못했습니다. 다음엔 두 방향을 검토하겠습니다: (a) A의 입력 범위를 분기 실적발표뿐 아니라 수시 IR 미팅·개인 미팅 녹음까지 넓혀 발생량 자체를 높이거나, (b) 발생량 기준을 이미 충족하는 C(문의 메일 분류)를 별도 PoC로 만들어 두 후보를 나란히 비교하겠습니다.