Cureat: AI 미식 추천 시스템
광고성 콘텐츠 20%+ 제거한 AI 미식 큐레이션. 파편화된 비정형 데이터 수집 + Ko-BERT 필터링, Okt 형태소 분석으로 사용자 의도 파악, 2-Stage 하이브리드 검색(Vector DB 코사인 유사도)으로 개인화 추천. FastAPI 비동기 파이프라인.
파편화된 미식 데이터(블로그·SNS·뉴스·RSS)에서 개인화 맛집 추천을 제공하는 서비스입니다. 세 가지 핵심 문제가 있었습니다. (1) 데이터 품질 — 광고성·홍보성 콘텐츠가 검색 결과를 오염. (2) 수집 효율 — 멀티소스 동기 수집의 병목으로 실시간성 불가. (3) 추천 정확도 — 단순 키워드 검색의 의미론적 한계로 개인 취향 반영 부족. 정제된 미식 데이터 거버넌스가 서비스 신뢰의 핵심이었습니다.
Ko-BERT로 광고성 콘텐츠를 문맥 수준에서 탐지해 규칙 기반만으로 놓치는 자연스러운 광고 문장까지 벡터 유사도로 필터링했습니다. asyncio 병렬 수집으로 REST API + 웹 크롤링 + RSS 3소스를 동시 수집해 I/O 병목을 제거했습니다. 2-Stage 하이브리드 검색(ChromaDB 코사인 유사도 + 위치 거리 가중치)으로 개인화 추천 정확도를 개선했습니다.
데이터 수집 파이프라인
REST·Crawl·RSS 3소스를 asyncio.gather로 병렬 수집하고 중복 URL은 SHA-256 해시로 필터링합니다. 실시간 갱신 스케줄러로 최신 미식 데이터를 유지하며 I/O 병목을 완전히 제거했습니다.
Ko-BERT 2단계 필터링
1단계는 광고 키워드 사전 기반 규칙 필터, 2단계는 Ko-BERT 문맥 임베딩 코사인 유사도로 자연스러운 광고 문장을 탐지합니다. 규칙만으로 놓치는 콘텐츠를 벡터로 보완해 광고 20%↑를 제거했습니다.
2-Stage 하이브리드 검색
Stage 1에서 ChromaDB 코사인 유사도로 의미론적 유사 맛집 Top-K를 추출하고, Stage 2에서 사용자 현재 위치 거리 가중치로 공간 맥락 Re-ranking을 수행합니다. 의미와 위치를 결합해 개인화 추천 정확도를 개선했습니다.
팀 협업 & 코드 품질 관리
2주 Jira 스프린트로 수집·필터링·검색·앱 4개 컴포넌트를 분리 개발하고, GitLab에서 Self-Approval 금지 정책과 비동기 로직 필수 검증을 도입했습니다. OpenAPI 자동 생성과 크롤링 대상 변경 이력 ADR 관리로 팀 코드 품질을 상향 평준화했습니다.
광고성 콘텐츠 20%↑ 제거로 데이터 품질을 개선하고, asyncio 병렬 수집으로 멀티소스 I/O 병목을 제거했습니다. 2-Stage 하이브리드 검색으로 키워드 대비 추천 정확도를 개선하고 React Native 모바일 앱 연동을 완성했습니다. Ko-BERT 필터 임계값 조정으로 정밀도-재현율 균형 최적화, 사용자 이력 기반 개인화(User-Based CF) 추가가 남은 과제입니다.