이남기 — 프로젝트 포트폴리오
여행 플랫폼에서 7년. 최근 2년은 LLM 기반 상담·자동화 시스템과 호텔 검색을 프로덕션에 올렸습니다.
이 문서는 이력서의 각 줄이 실제로 무엇이었는지를 설명합니다.
측정된 결과
| 무엇 | 전 | 후 | 어떻게 쟀나 |
|---|---|---|---|
| 항공권 수수료 응답시간 (p50) | 27.9초 | 104ms | 운영 로그 189,131건. 경로 태그를 함께 적재해 1년 뒤 경로별 비교 |
| 상담 에이전트 자동 응답률 | 상담 운영시간 외 응대 없음 | 89.1% | 대화 로그 28,017턴 / 사용자 10,457명 |
| 호텔 자동완성 결과 0건 요청 비율 | 15.5% · 18.6% | 0.26% · 0.84% | 브라우저 실측(프리비아 · 투어비스), 글자 입력마다 한 번씩 센 요청. 배포 전 14일 vs 후 27시간 |
호출당 토큰은 2,709에서 302로(88.9%↓) 줄었고, 상담사 이관율은 14.1%에서 8.9%로(37%↓) 내려갔습니다.
POI 지도 검색은 없던 검색 축을 새로 내 지금 월 21.9만 회 호출로 쓰이고 있습니다.
목차
깊게 다루는 것
| # | 케이스 | 한 줄 |
|---|---|---|
| 1 | 항공권 취소 수수료 자동 산출 | 상담사가 규정을 읽어 계산하던 문의를 고객이 직접 조회하게. 규정을 읽는 일을 LLM에서 파서로 한 항공사씩 옮겼습니다 |
| 2 | POI 지도 검색 | "에펠탑 근처 호텔"이 검색되지 않던 상태에서 문장 검색을 새로 냈습니다. 자연어 의도 분류 · 1,000건 지도 표시 · 가격 수급 · 상태 관리 네 문제로 풉니다 |
| 3 | AI 상담 에이전트 2종 | 상담사가 받던 1차 응대를 봇에게. 봇에게는 조회와 안내만 맡기고, 답의 내용은 서버가 확정하고 모델은 문장으로만 옮깁니다 |
중간 깊이로 다루는 것
| # | 케이스 | 한 줄 |
|---|---|---|
| 6 | 챗봇 인시던트 대응 에이전트 | 상담사 제보가 올라오면 에이전트가 받아 확인·분석·수정·검증을 돌립니다. 고쳤다는 증명은 고객이 받을 문장으로, 머지와 배포는 사람이 합니다 |
| 7 | 호텔 검색 자동완성 완화 | 이름을 조금만 다르게 쳐도 0건이던 자동완성을, 정확히 맞는 결과는 그대로 두고 그 아래에만 비슷한 이름을 붙이게 고쳤습니다. A/B 없이 배포 전 색인·쿼리를 보존해 효과와 회귀를 갈랐습니다 |
짧게 다루는 것
| # | 케이스 | 한 줄 |
|---|---|---|
| 4 | 팀 배포 체계 구축 | 없던 배포 체계를 세워 한 곳으로 모았습니다. 그 표준이 장애도 하나 퍼뜨렸습니다 |
| 5 | 여행 예약 플랫폼 프론트엔드 | 호텔·항공 예약과 결제 플로우를 화면 단위로 만들었습니다. 성과 수치는 없고, 없는 이유를 적었습니다 |
읽는 법
케이스마다 같은 순서입니다 — 배경 → 문제정의 → 해결방안 → 결과 → 정직하게. 이력서의 각 프로젝트 절과 같은 틀이라, 이력서에서 읽은 줄이 여기서 그대로 펼쳐집니다. 깊은 3편과 중간 2편(케이스 6·7)은 소문제 3~4개로, 짧은 2편은 요지 ①②③으로 씁니다.
정황인 것과 확인된 것을 구분해 적었고, 아직 못 잰 것은 못 잰 이유와 함께 남겼습니다.
기술 스택
Frontend Next.js 14~16 · React 19 · TypeScript · Tailwind · Zustand · TanStack Query
Backend FastAPI · SQLAlchemy 2.0(async) · Pydantic · Node.js
AI LangGraph · LangChain · OpenAI · Gemini
Data PostgreSQL(Supabase) · Elasticsearch · BigQuery
Infra GCP Cloud Run · Vercel · Docker · GitHub Actions(Reusable Workflow)
Test pytest · Vitest · Playwright