Skip to content

Latest commit

 

History

164 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

analyze-review

이커머스 통합 솔루션이 다루지 않는 리뷰 데이터를 AI로 처리하는 프로젝트입니다.

상품·주문·문의는 이미 통합 관리되지만 리뷰는 사각지대였습니다. 그 빈 카테고리를 채우는 것이 출발점이었고, 지금은 실제 배달 매장에 도입하는 단계입니다.

🔗 리뷰 답글 생성기 (운영 중)https://reply.ontoreview.com


배경

이커머스 통합 솔루션은 셀러가 여러 판매 채널의 상품 · 주문 · 문의를 한 곳에서 관리하게 해줍니다. 그런데 리뷰는 빠져 있습니다.

리뷰는 셀러에게 두 가지 이유로 중요합니다.

  • 상품의 실제 문제가 가장 먼저 드러나는 곳입니다. CS 문의로 올라오는 건 이미 늦은 경우가 많습니다.
  • 답글을 달아야 하는데, 물량이 많아지면 사람이 감당하지 못합니다.

"통합 관리에 리뷰 카테고리를 하나 더 만든다" 는 방향으로 사내 AI 도입 과제를 잡고 혼자 개발했습니다.


1단계 — 셀러용 리뷰 분석

리뷰 수집

쿠팡 상품 페이지 크롤링, CSV 업로드, Firecrawl 기반 범용 수집. 플랫폼은 URL로 자동 판별합니다.

리뷰 분석

  • 부정 리뷰에서 가장 빈번한 문제 TOP 3 자동 도출
  • 이전 기간 대비 급증한 이슈 탐지
  • 즉시 실행 가능한 개선 액션 제안

부정 리뷰 우선순위 큐

별점 · 리뷰 길이 · 심각 키워드(환불/파손/지연) · 최신성을 조합해 점수를 매기고, 먼저 대응해야 할 리뷰부터 정렬합니다.


확장 — 리스크 인텔리전스 (B2B)

셀러용 분석을 미국 시장에 진출하는 브랜드 쪽으로 확장한 갈래입니다. "리뷰에 문제가 있다"에서 멈추지 않고 금액과 근거까지 내놓는 것이 목표였습니다.

미국 판례 매칭 + 법적 노출 금액 산출

리뷰에서 탐지한 리스크를 미국 판례와 매칭해 예상 손실액을 추정합니다.

  • 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).


2단계 — 실제 매장 도입 (진행 중)

셀러용으로 만든 것을 실제 중식 배달 매장에 도입해 보는 단계입니다. 여기서 문제가 처음 예상과 다르다는 것이 드러났습니다.

매장 리뷰 441건을 실제로 세어봤습니다.

항목 수치
별점 5점 405건 (92%)
3점 이하 17건 (4%)
리뷰 본문 없음 119건 (27%)
답변 첫 줄이 같은 인사말 계열 131건 (31%)

문제는 불만 처리가 아니었습니다. 사과할 일이 없는 리뷰가 대부분이라 쓸 말이 없고, 그래서 같은 인사말이 반복되고 있었습니다. 손님이 보기엔 매크로입니다.

답변을 서로 다르게 만들 재료는 사실상 주문한 메뉴 하나뿐입니다.

AI 같지 않은 답글 생성 ✅

주문 메뉴를 파싱해 메뉴별 표현을 답글에 녹이고, 도입·끝맺음 방식을 매번 바꿔 반복을 피합니다. 자체 검사에 걸리면 다시 생성합니다.

부정 리뷰 즉시 알림 🚧

낮은 별점 리뷰가 달리면 사장님에게 바로 알리는 기능. 개발 예정입니다.


구조

┌───────────────┐     ┌──────────────────────────────────┐
│ 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

About

쿠팡·배달앱 리뷰를 LLM으로 분석해 핵심 문제를 진단하고 답글까지 생성하는 서비스 (Python · Docker)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages