이커머스 통합 솔루션이 다루지 않는 리뷰 데이터를 AI로 처리하는 프로젝트입니다.
상품·주문·문의는 이미 통합 관리되지만 리뷰는 사각지대였습니다. 그 빈 카테고리를 채우는 것이 출발점이었고, 지금은 실제 배달 매장에 도입하는 단계입니다.
🔗 리뷰 답글 생성기 (운영 중) — https://reply.ontoreview.com
이커머스 통합 솔루션은 셀러가 여러 판매 채널의 상품 · 주문 · 문의를 한 곳에서 관리하게 해줍니다. 그런데 리뷰는 빠져 있습니다.
리뷰는 셀러에게 두 가지 이유로 중요합니다.
- 상품의 실제 문제가 가장 먼저 드러나는 곳입니다. CS 문의로 올라오는 건 이미 늦은 경우가 많습니다.
- 답글을 달아야 하는데, 물량이 많아지면 사람이 감당하지 못합니다.
"통합 관리에 리뷰 카테고리를 하나 더 만든다" 는 방향으로 사내 AI 도입 과제를 잡고 혼자 개발했습니다.
쿠팡 상품 페이지 크롤링, CSV 업로드, Firecrawl 기반 범용 수집. 플랫폼은 URL로 자동 판별합니다.
- 부정 리뷰에서 가장 빈번한 문제 TOP 3 자동 도출
- 이전 기간 대비 급증한 이슈 탐지
- 즉시 실행 가능한 개선 액션 제안
별점 · 리뷰 길이 · 심각 키워드(환불/파손/지연) · 최신성을 조합해 점수를 매기고, 먼저 대응해야 할 리뷰부터 정렬합니다.
셀러용 분석을 미국 시장에 진출하는 브랜드 쪽으로 확장한 갈래입니다. "리뷰에 문제가 있다"에서 멈추지 않고 금액과 근거까지 내놓는 것이 목표였습니다.
리뷰에서 탐지한 리스크를 미국 판례와 매칭해 예상 손실액을 추정합니다.
- OpenAI
text-embedding-3-small코사인 유사도로 판례 매칭 - 임베딩을 쓸 수 없으면 가중 TF 키워드 스코어링으로 폴백
- 리스크 카테고리별 가중 심각도로
overall_risk_score산출 - 매칭된 판례의 합의금 통계로
total_legal_exposure_usd계산
⚠️ backend/data/legal_cases.json은 판례 3건짜리 시드 데이터입니다. 파이프라인 검증용이고 실제 법률 자문으로 쓸 수 없습니다.
리뷰 → 이슈 → 리스크 → 판례의 연결을 @xyflow/react 인터랙티브 그래프로 보여줍니다. SQLite(SQLAlchemy)에 영속화해 재분석 없이 다시 열 수 있습니다.
탐지된 리스크마다 LLM이 3가지 시나리오의 대응 전략을 생성합니다. 컴플라이언스 보고서와 회의 안건도 같은 데이터에서 뽑습니다.
YouTube Data API v3 로 리스크 트리거 키워드를 검색해 댓글에서 리스크를 탐지합니다. Amazon 은 mock 수집이라 데모용 데이터가 들어갑니다 — 수집된 리뷰는 판례 매칭을 거쳐 KPI 대시보드와 리스크 타임라인에 바로 반영됩니다.
화면은 한국어·영어를 지원합니다 (frontend/src/i18n.js).
셀러용으로 만든 것을 실제 중식 배달 매장에 도입해 보는 단계입니다. 여기서 문제가 처음 예상과 다르다는 것이 드러났습니다.
매장 리뷰 441건을 실제로 세어봤습니다.
| 항목 | 수치 |
|---|---|
| 별점 5점 | 405건 (92%) |
| 3점 이하 | 17건 (4%) |
| 리뷰 본문 없음 | 119건 (27%) |
| 답변 첫 줄이 같은 인사말 계열 | 131건 (31%) |
문제는 불만 처리가 아니었습니다. 사과할 일이 없는 리뷰가 대부분이라 쓸 말이 없고, 그래서 같은 인사말이 반복되고 있었습니다. 손님이 보기엔 매크로입니다.
답변을 서로 다르게 만들 재료는 사실상 주문한 메뉴 하나뿐입니다.
주문 메뉴를 파싱해 메뉴별 표현을 답글에 녹이고, 도입·끝맺음 방식을 매번 바꿔 반복을 피합니다. 자체 검사에 걸리면 다시 생성합니다.
낮은 별점 리뷰가 달리면 사장님에게 바로 알리는 기능. 개발 예정입니다.
┌───────────────┐ ┌──────────────────────────────────┐
│ React + Vite │ │ FastAPI │
│ │ │ │
│ ReplyStudio ├────►│ /reply 답글 생성·검증·가이드 │
│ AccessGate │ │ /analysis 분석 실행 │
│ App(대시보드) │ │ /data 업로드·크롤·조회 │
│ #dashboard │ │ /risk 온톨로지·플레이북 │
│ │ │ /kpi 지표·리스크 타임라인 │
│ │ │ /youtube 댓글 리스크 탐지 │
│ │ │ /evaluate 모델 품질 평가 │
└───────────────┘ └───────┬──────────────────────────┘
│
┌─────────────────────┴──────────────────────┐
│ │
┌───────▼──────────────────┐ ┌────────────────▼─────────┐
│ core/ │ │ backend/services/ │
│ analyzer.py │ │ legal_rag_service.py │
│ reply_generator.py │ │ risk_service.py │
│ menu_profiles.py │ │ playbook_service.py │
│ data_loader.py │ │ priority_service.py │
└──────────────────────────┘ │ crawler_service.py │
│ amazon_service.py │
│ youtube_service.py │
└────────────┬─────────────┘
│
┌────────────▼─────────────┐
│ SQLite (SQLAlchemy) │
│ 온톨로지 그래프 영속화 │
└──────────────────────────┘
| 영역 | 사용 기술 |
|---|---|
| 백엔드 | Python, FastAPI, SQLAlchemy (SQLite) |
| 프론트엔드 | React, Vite, Tailwind, @xyflow/react, Recharts |
| LLM | OpenAI (GPT-4o-mini / GPT-4.1-mini), text-embedding-3-small |
| 배포 | Docker, Fly.io, Render, Cloudflare Tunnel, 맥 홈서버(launchd) |
| 품질 | pytest, vitest, pylint, pre-commit, GitHub Actions, CodeRabbit |
Python 약 11,300줄 / JavaScript 약 5,100줄, 테스트 파일 24개.
# 1. 의존성
pip install -r requirements.txt
cd frontend && npm install && cd ..
# 2. 환경변수
cp .env.example .env # OPENAI_API_KEY 등 입력
# 3. 백엔드
uvicorn backend.main:app --reload
# 4. 프론트엔드
cd frontend && npm run dev배포 방법은 deploy/DEPLOY.md, 답글 생성기 상세는 REPLY_GENERATOR.md를 참고하세요.
core/experiments/ 에 분석 정확도를 끌어올리기 위한 코드가 들어 있습니다.
- 멀티 에이전트 분석기 (
multi_agent_analyzer.py) - RAG 기반 분류 (
rag_system.py) - 프롬프트 엔지니어링 비교 (
prompt_engineering.py) - 파인튜닝 데이터 준비 및 평가 (
prepare_training_data.py,evaluate_finetuned.py) - 에러 분석 (
error_analysis.py)
⚠️ 평가 데이터셋 라벨링이 완료되지 않아 정확도는 아직 측정 전입니다. 코드는 작성돼 있으나 수치로 검증된 개선폭은 없습니다.
- 답글 생성기는 실제 매장 대상으로 운영 중이며, 접속 코드로 보호됩니다.
- 부정 리뷰 알림은 아직 구현되지 않았습니다.
- 분석 파이프라인은 동작하지만 정확도가 정량 검증되지 않았습니다.
- 회원 관리·결제 기능은 없습니다.
- 크롤링은 쿠팡 DOM 구조에 의존하므로 페이지 개편 시 깨질 수 있습니다.
- 판례 데이터가 3건뿐이라 법적 노출 금액은 파이프라인 시연 수준입니다. 법률 자문이 아닙니다.
- Amazon 수집은 mock 입니다. 실제 상품 페이지를 읽지 않습니다.
MIT