본문으로 건너뛰기
홈으로블로그
‹ 블로그

개발기

BriefMe 개발기 — 한국어·영어 섞인 회의록을 직접 만들어 굴리기

개발 발행 3분 읽기

#BriefMe#개발기#AI

BriefMe 프로젝트 보기

BriefMe는 한국어와 영어가 섞인 회의를 녹음하면 실시간 자막·번역·누적 요약을 보여주고, 끝나면 화자를 분리한 대화록과 회의자료(요약·결정사항·액션아이템)를 만들어 Notion에 정리해 주는 웹앱입니다. 출발점은 단순했습니다 — 한국어와 영어가 오가는 회의를 그대로 알아듣고, 회의가 끝나는 즉시 정리까지 끝나 있는 흐름을 원했습니다. 그래서 딱 그 흐름만 제대로 하는 도구를 목표로 범위를 좁혀 시작했습니다.

가장 큰 리스크는 코드가 아니라 설계에서 풀렸다#

착수 전 검토에서 최상위 리스크는 "iPhone Safari에서 2~3시간 브라우저 녹음이 버틸까"였습니다. 결론은 기술로 싸우지 않기 — iPhone에서는 기본 음성 메모로 녹음한 파일을 가져오는 것을 기본 경로로 삼고, 실시간 자막은 Mac 브라우저에서만 제공하기로 했습니다. 치명적 리스크 하나가 설계 결정으로 사라졌습니다.

운영이 가르쳐 준 버그들#

기획 다음 날 MVP 전체 구현 커밋이 올라갔고 열흘간 60커밋을 쌓았지만, 진짜 이야기는 버그에 있습니다.

  • 재배포마다 데이터가 사라지던 사건 — 데이터 경로에 절대경로를 줬는데 코드가 상대경로처럼 이어붙여, 영속 볼륨 바깥에 쓰고 있었습니다. 경로 해석기를 고치고 재배포 후 데이터 생존을 검증했습니다.
  • 마지막 3~5초 유실 — 로컬에서는 아무리 돌려도 재현되지 않아, 실환경 데이터를 뒤져 녹음이 정확히 15초 청크 경계에서 끝난다는 걸 찾아냈습니다. 서버가 '중간 누락'만 감지하고 '마지막 청크 미도착'은 모르는 구조적 사각지대였고, 종료 시 시퀀스 대조와 재업로드 안전망으로 막았습니다.
  • iPhone에서 재생이 00:00에 멈추던 문제 — 브라우저 녹음이 만드는 webm에는 길이 메타데이터가 없어 iOS 오디오 태그가 거부합니다. 전사가 끝나면 ffmpeg로 m4a로 변환하는 것으로 해결했습니다.
  • 실시간 자막이 안 뜨던 원인은 STT SDK의 콜백을 생성자가 아니라 start()에 넘겨야 세션에 연결된다는 함정이었습니다.

에이전트 감사로 다듬기#

MVP 이후에는 AI 에이전트 여러 개를 동원해 코드베이스를 다각도로 감사하고, 확인된 항목을 우선순위대로 하나씩 구현→검증→배포하는 루프로 다듬었습니다. 백업은 SQLite의 VACUUM INTO 방식을 골라 매일 자동 백업과 복원 사이클까지 검증했고, 전사가 끝난 청크를 정리해 회의당 저장 용량을 정확히 절반으로 줄였습니다.

지금은#

가족과 함께 실사용하며 비공개로 운영 중입니다. 공개 시점이 되면 이곳에서 가장 먼저 소식을 전할게요.

이런 프로젝트, 같이 만들어볼까요?

웹 서비스 · 도구 · 자동화 의뢰를 받고 있어요.

문의 보내기