프로필 사진
Backend · AI Engineer

모호함을 구조로

사람의 모호한 요구를 믿을 수 있는 AI 시스템으로 바꾸는 엔지니어
배은진 · 1994.11.18 · 010-2659-3671 · nrnoonreport@gmail.com · 서울 성동구 송정동 github.com/zoecodes-dev 학습 기록 (Notion)
해양경찰청 공무원 · 음악 퍼블리싱 A&R을 거쳐 AI · 백엔드 엔지니어로 전향
낯선 도메인을 빠르게 구조화해 검증 가능한 시스템으로 바꾸는 데 강점
FastAPI · LangGraph 기반 멀티에이전트를 설계부터 배포까지 완성
AI 자율성은 최소화하고 판단 근거를 남겨 사람이 믿고 기댈 수 있는 결과를 만듭니다
01기술 스택Skills
Backend
FastAPI (async), Python, SQLAlchemy, Pydantic, ARQ/Redis, Java (기초)
Frontend
React Native (Expo), Next.js, JavaScript, TypeScript, HTML/CSS, Streamlit
AI Agent
LangGraph · LangChain, ReAct, 멀티 에이전트, HITL, Adaptive RAG
AI / LLM
AWS Bedrock, Claude API (tool use), RAG, 임베딩(Ollama), grounding 설계
Infra
AWS (EC2·S3·IAM Role), Docker, GitHub Actions (OIDC), Railway
Data
데이터 모델링, 멱등 파이프라인, Spark, 품질 필터링
Database
PostgreSQL, PostGIS, pgvector (HNSW), MySQL, Supabase
기타 학습
ML/DL 기초, Git, sharding
02프로젝트 · 포트폴리오Portfolio · 눌러서 펼치기
Team · PM🏆 과정 내 최우수상
KIRA
EV 배터리 공급망 컴플라이언스 인텔리전스 플랫폼
+
OEM부터 광산까지 N차 협력사 관계를 tier별로 구조화하고, ESG 규제 자동 판정을 올린 공급망 플랫폼

문제

배터리 공급망은 OEM부터 광산까지 수십 단계 협력사가 연결된 구조. 이 관계를 단계별 데이터로 보유한 기업은 없어, 원산지·지리적 위험을 tier별로 역추적하는 것이 불가능한 상태

해결

N단계 공급망을 탐색하는 데이터 모델을 설계하고, 도메인 간 통신은 ~30종 이벤트 계약으로 연결. 이 구조 위에 지리 감사 → 규제 판정 → 위험 점수 파이프라인이 자동 실행되며, 확신이 낮은 판정은 사람 검토(HITL)로 분기

담당

5인 팀의 PM · 기술 리드 · 인프라를 동시에 맡아 데이터 모델부터 배포·CI/CD까지 시스템의 뼈대와 최종 통합·검증을 책임. 매주 작업량을 분석해 노션 작업 카드로 배분하고 진행을 로그로 추적하는 운영 체계를 만들어 팀 표준 워크플로우로 정착

아키텍처 — AI 사용 2곳 vs 결정론 5곳

"AI 자율성 최소화" — 꼭 필요한 곳에만 AI AI 사용 (2곳) 결정론 · 규칙 기반 (LLM 없음) 문서 업로드 → S3 → document_parse_queue ARQ 워커 · 공급망 PDF · 이미지 supervisor.route() · 결정론 라우터 current_stage 순서로 노드 결정 · LLM 없음 · 매 노드 후 복귀 ① data_gateway · 문서 추출 AI · Bedrock Claude 멀티모달 추출 → JSON (parsed_fields · confidence_map) confidence 낮으면 low_confidence → HITL 분기 ② geo_audit · 지리 감사 결정론 · PostGIS ST_Within 공간쿼리로 고위험 지역 판정 · geographical_risk ③ compliance · 규제 판정 AI · RAG 하이브리드 Cohere 임베딩 + pgvector 검색 → Sonnet judge (cited_clauses) ESG 규제별 verdict 산출 ④ risk_scoring · 위험 점수 결정론 · 가점식 위반+50 · geo+30 · 경고+15 · 70초과 → risk_escalated ⑤ final_judgment · 최종 롤업 결정론 규제·geo·risk 종합 → pass / conditional / fail 판정 기록 completed · 판정 기록 완료 error_reason 발생 시 hitl_interrupt · 사람 검토 승인 후 supervisor 로 복귀

기술 스택

FastAPINext.jsLangGraphARQ/RedisAWS (EC2·S3·Bedrock)DockerGitHub Actions (OIDC)PostgreSQL · PostGIS · pgvector
역할 · Tech Lead / PM / Infrastructure
Personal
일기 기반 자기성찰 파인튜닝 AI
답을 주지 않고 되짚어주기만 하는 로컬 파인튜닝 모델 — 파인튜닝부터 실서비스 배포·도그푸딩까지 완주
+
개인 일기·편지 6년치(3,793건)를 원천으로, LoRA 파인튜닝 3세대(2.1B→4B→8B) 모델을 자체 설계 벤치마크로 검증하고, 실사용 도그푸딩 5회전을 거쳐 상시 서비스로 배포까지 완주한 개인 프로젝트

벤치마크를 네 번 다시 만든 이유

  • 결론 문장 탐지 기준을 4차례 재설계 — 31편 → 311편 → 304건 → 289건(최종)으로 정제
  • 충실성 게이트(복원 단어 90% 이상 원문 일치 강제)를 직접 설계해 창작 차단
  • 편지 트랙(438건)은 방법론 한계로 채택 보류 — 안 되는 것도 판단 기준으로 삼음

실사용 도그푸딩 5회전

  • 8B 대화 모델 실사용 검증 5회전 — 1~4차 반복질문·대명사 오류·처방 위반·환각 등 실패 모드 기록 후 5차 최초 합격
  • 배포 후 실사용 로그 기반 2일간 런타임 가드 10건+ 수정·즉시 재배포 — "만들고 끝"이 아닌 실서비스 루프 완주

문제해결 흐름

원천 데이터 6년치 → 학습 데이터셋 일기 2,297편 · 편지 1,496통 2020.03 ~ 2026.06 (6년+) 골드시드 + 규칙채굴 + LLM합성 = 769쌍 검증통과율 100% day2conclusion 벤치마크 — 네 번의 재설계 1차 · 형태 마커 31편 검출 → 실패, 폐기 2차 · 내용 기준 311편 (10배) 오염 텍스트 7건 발견 v3.1 · 오염 제거 304건 train100 · eval204 v4 · 원문복원+게이트 289건 (최종) train81 · eval208 모델 승급 경로 — 2.1B → 4B → 8B Kanana-nano 2.1B 상담가 AI 채택 · 게이트 93% troia-kanana 배포 Qwen3-4B 게이트 97%(최고), 실제품질 열세 숫자 vs 실제 품질 괴리 Kanana-1.5-8B 최종 채택 · 500 iterations → 대화 시스템(P3) 탑재 실사용 도그푸딩 5회전 — 1~4차 불합격 기록 1차 반복질문 · 불합격 2차 대명사 오류 · 불합격 3차 처방 위반 · 불합격 4차 환각 · 불합격 5차 최초 합격 실서비스 배포 — launchd 상시화 모델서버 :8081 + FastAPI :8000 · 크래시 자동복구 · 배포 후 2일간 런타임 가드 10건+ 수정 판별성능 top-1 8.3%(무작위 16배) · MRR 0.1125(3.8배) 최종배포 troia-synth-600 MRR 0.1164 (통과기준 상회)

품질·안전 장치

  • 형태소 분석기(kiwipiepy) 기반 실명 토큰 매칭으로 오탐 방지, 위기 신호(자해·자살)는 학습 데이터에서 배제하고 룰 기반으로 전문 자원 안내에 라우팅
  • 인칭·시제·서법 보존 게이트로 왜곡 3종 정본화, DPO 파이프라인(rejected vs chosen) 다음 단계 설계 완료

기술 스택

PythonPyTorchQLoRAKanana 2.1B / 1.5-8BQwen3-4BkiwipiepyOllamalaunchdFastAPI
역할 · 기획 · 데이터 채굴·정제 · 파인튜닝(3세대) · 벤치마크 설계 · 도그푸딩 검증 · 실서비스 배포·운영 단독 수행  |  launchd 상시 서비스 운영 중
Personal
음악 트렌드 리서치 에이전트
흩어진 글로벌 음악 시장 신호를 수집, A&R이 직관으로 읽던 트렌드를 명시적 리포트로 바꾸는 멀티 에이전트 시스템
+
흩어진 글로벌 음악 시장 신호를 수집·통합해, A&R이 직관으로 읽던 트렌드를 명시적 리포트로 바꾸는 멀티 에이전트 시스템

멀티 에이전트 오케스트레이션

독립 수집 에이전트 4종(크로스플랫폼 · 프로듀서 · 커뮤니티 · 히스토리)을 ThreadPoolExecutor로 병렬 실행하고 결과를 통합하는 오케스트레이터 설계

Grounding 설계

분석 에이전트에서 의도적으로 웹 검색을 제거해 수집된 스냅샷만을 근거로 추론하도록 강제, AI가 근거 없이 지어내는 것을 구조로 차단

통합 · 운영

YouTube · Apple Music · Last.fm 등 18개 소스를 통합하되 한 소스가 죽어도 나머지로 리포트가 나오는 내결함 구조. cron으로 매일 자동 실행되며 플래그 기반 장애 복구 보유

아키텍처

① 수집 레이어 pipeline/daily_snapshot.py · 결정론적 차트 수집기 YouTube · Apple · Melon Deezer · Last.fm · Kworb 인텔 수집기 (Tavily) Comeback · Media Emerging 커뮤니티 수집기 Reddit (+Haiku 아티스트 추출) snapshot_YYYY-MM-DD.json 18 sources + velocity ② 발굴 레이어 orchestrator.py · 병렬 Discovery Agents · Sonnet cross_platform 플랫폼 교차 신호 producer 프로듀서·피처링 community 언급·화제성 history 검증·중복 감지 taxonomy agent (월 1회) discovery_results/*.json ③ 종합 레이어 — Analysis Agent Opus 4.8 18소스 + 발굴결과 종합 → 교차신호 → Tavily 검증 → watchlist 갱신 → 리포트 생성 report_YYYY-MM-DD.md A&R 뉴스레터 (8개 섹션)

기술 스택

PythonClaude API멀티 에이전트프롬프트 캐싱18-source 통합cron 운영
역할 · 기획 · 단독 개발
Personal
SoundTag
K-pop 데모 평가·레퍼런스 추천 AI — 측정 체계를 다시 세운 경험
+
K-pop 데모를 평가하는 오디오 장르 분류 모델. 좋아 보이던 정확도를 의심해, 측정 방법 자체의 결함을 진단하고 재설계한 문제해결 사례

발견

여러 번의 학습 중 가장 높은 검증 정확도가 77.6%까지 나왔으나, 모델이 학습한 것이 ‘장르’가 아니라 ‘데이터의 출처 유형’이라는 사실을 발견. 정확도는 실력이 아니라 source-type leakage에 의한 가짜 신호였음

재설계

모델을 소스 타입별로 분리(드럼루프(Model A)와 풀트랙(Model B))하고, 성능 기준을 학습 내부 점수에서 별도 K-pop 평가셋으로 옮기는 데이터·모델 구조

문제해결 흐름

BEFORE — 잘못된 측정 AST 오디오 장르 분류 모델 · 5회 학습 검증 정확도: 77.6% → 46% (소스 갭 제거할수록 하락 = 진짜 난이도) train 99% 77.6 46 1차 2차 3차 4차 5차 train은 99% 고정 — val만 하락 = 외울 소스 단서가 사라진 것 발견 — 가짜 신호 모델이 학습한 것은 '장르'가 아니라 '드럼루프냐 풀트랙이냐(데이터 출처)'였음 source-type leakage 증거: 드럼루프 출신 장르 recall 0.94 vs 풀트랙 출신 장르 recall 0.32 → 장르가 아닌 소스 타입을 구분한 것 근본 원인 진단 "무엇을 성능이라 부를지"부터 잘못 정의 — K-pop 성능은 한 번도 평가 안 됨 AFTER — 측정 체계 재설계 K-pop hold-out 평가셋 학습 분포 밖에서 실제 목표 성능을 직접 측정 → 숫자에 속지 않음 반증 가능한 가설 모든 실험 전 가설을 먼저 문서화 → 틀렸는지 확인 → 반복 실패 차단 dual-model 분리 소스 타입별 모델 분리로 leakage 재발 차단 → 아키텍처로 해결 dual-model 아키텍처 (소스 갭을 데이터로 섞지 않고 모델로 분리) K-pop demo Demucs stem 분리 Model A · 드럼루프 (drums) Model B · 풀트랙 (planned) K-pop hold-out 유일한 성능 기준

기술 스택

PythonPyTorchASTCLAPDemucsKaggle GPU
역할 · 기획 · 단독 개발  |  측정 체계 재설계 완료 · Model B 학습 예정
Personal
WanderWise
무드 기반 여행 일정 생성 앱 — 이름 숨김을 아키텍처로 보장
+
무드를 고르면 동선을 추천하되, 장소의 실제 이름은 도착하는 순간에야 공개되는 여행 앱. “이름 숨김”을 프롬프트가 아니라 구조로 보장한 것이 핵심

핵심 설계

LLM은 장소 선별 · 순서 · 시간만 결정하고 실제 이름과 좌표는 DB에서 join하는 구조로 환각과 실명 노출을 원천 차단. AI에게 “하지 말라”고 부탁하는 대신, 실명을 응답의 reveal 블록에만 격리해 “할 수 없는 구조”로 구현

백엔드 · AI

FastAPI로 일정 생성 API를 구현하고 Pydantic으로 엣지케이스를 상태코드로 명확히 처리. Claude의 tool use로 JSON 출력을 스키마 강제해 파싱 실패를 제거하고 재시도 · 폴백으로 안정성 확보. 자주 쓰는 무드 임베딩은 사전 계산 · 캐싱해 호출 비용과 지연을 절감

데이터 · 검색

카카오 로컬 API로 서울 16개 동네를 수집하고 품질 필터와 동네×카테고리 균형 선별을 거치는 다단계 파이프라인 설계. 각 단계를 멱등(idempotent)하게 만들어 중단·재개가 안전하며, PostGIS 거리 필터와 pgvector 유사도 검색을 단일 SQL 함수로 결합

아키텍처

앱 · React Native Expo · expo-router · expo-location · maps · 무드 선택 → 힌트 화면 · 도착 시 이름 공개(reveal) · reveal 연출 (Animated) expo-haptics 도착 햅틱 POST /itinerary 백엔드 · FastAPI Railway 배포 · Pydantic 검증 1. 무드 임베딩 — precompute 캐시 2. pgvector 유사도 검색 — Supabase 3. 결정적 플래너 — 선택·순서·시간·방향 4. 응답: 동선(이름 숨김) + reveal 분리 실명은 reveal 블록에만 격리 — "할 수 없는 구조" 오프라인 파이프라인 (별도 · 멱등) 장소 수집 카카오 로컬 · 16개 동네 Claude 생성 시적 힌트 · reveal 문구 OpenAI 임베딩 무드 벡터화 Supabase pgvector 적재 적재된 장소 → 검색 대상

기술 스택

React Native (Expo)FastAPISupabase · PostGIS · pgvectorClaude API (tool use)Docker · RailwayTypeScript
역할 · 기획 · 풀스택 개발 (프론트엔드 · 백엔드 · AI · 배포) 단독 수행
03경력Experience
2024.03 – 2025.11

나인뮤직

퍼블리싱 실장 · A&R
  • 목표(6개월 1곡)를 넘어 재직 중 6곡 판매, 곡당 단가는 통상의 2배 이상 협상
  • 해외 작가·퍼블리셔 직접 발굴 — 레이블(SM·HYBE 등) A&R 17명 연결, 피칭 기회 24건, 퍼블리셔 8개사 협업
  • 1~2주 단위 프로젝트를 주당 4~5건 동시 운영, 수십 명의 이해관계자를 기록·문서화로 조율
  • 총 27곡 퍼블리싱·저작권 관리, 조건부 양도 26건, 해외 프로듀서 국내 계약 3건 성사
판매곡ME:I «Best Match» · FIFTY FIFTY «Oops, My Bad» · PRIMROSE «Love Your Flower» · NAZE «Pretty Pink Socks» · KEYVITUP «POLAROID»
작사TEEN TOP «Home Alone (But U)»
미발매TOP MEDIA «ODD YOUTH»
2023.06 – 2023.08

월등한 복숭아 (D2C 브랜드)

브랜드 기획 · 운영 (프리랜서)

스토어 관리, 상세페이지 제작, 패키지 디자인, 브랜드 SNS, 메타 퍼포먼스 마케팅, CS 단독 수행 — 클릭당 결제율 5%+, 리뷰 4.9★, 매출 약 700만 원 달성

이전 경력
2022.10 – 2023.03
호주 워킹홀리데이현지 직장 근무 (RWB Marine Australia Pty Ltd) · 영어 실전 경험
2021.12 – 2022.08
목포해양대학교 승선생활관조교 · 학생 상담, 코로나 확진 200명 관리
2018.08 – 2021.10
여수해양경찰서행정팀장 · 화학방제2함 신조선 인수 및 행정 총괄
2017.12 – 2018.08
완도해양경찰서해양오염방제 · 연간계획 수립, 교육·시설점검
04교육 · 학력Education
2025.12 – 2026.07

[삼정] ESG 데이터 활용 AX Academy with AI Agent

삼정회계법인 · AI Agent 풀스택 개발 과정
🏅 우수훈련생 선발 · 팀 프로젝트 KIRA 과정 내 최우수상 수상

FastAPI · PostgreSQL · MySQL · LangGraph · LangChain · RAG · AWS · Docker · Spark를 학습. ReAct 워크플로우, 멀티 에이전트, HITL, Adaptive RAG, Ollama 임베딩, Streamlit 등 AI 에이전트 설계 전반을 다루고, KIRA를 비롯한 본 프로젝트와 개인 프로젝트를 직접 구현하며 익힘

2022.10 – 2024.08

심리학사 (학점은행제)

심리학 전공 · 학점 4.3 / 4.5

사람의 요구와 동기를 이해하는 관점을 더하기 위해 취득

2013.03 – 2017.01

목포해양대학교

국제해사수송과학부 (항해학) · 물류시스템학과 복수전공 · 학점 4.04 / 4.5
05자격증 · 어학 · 활동More
데이터 분석 준전문가 (ADsP)2026.06 합격
정보처리기사필기 합격
영어 — 업무 회화 가능호주 워킹홀리데이 6개월
RCY 봉사 동아리2013 – 2017
K P&I 인턴 (선박보험)2016
TMS 인턴 (선박 인적관리)2014