챌린지 1
카페 메뉴 데이터 크롤링
브랜드별로 다른 DOM 구조에서 메뉴 정보를 안정적으로 수집해야 했고, 수집 실패가 곧 추천 품질 저하로 이어졌습니다.
해결책
Puppeteer를 활용한 웹 크롤링
Puppeteer 기반 수집 흐름으로 브랜드별 메뉴 정보를 정리하고, 추천 로직이 사용할 수 있는 형태로 저장했습니다.
메뉴 선택 시간을 줄이기 위해 크롤링·추천·운영 도구를 하나로 묶은 카페 메뉴 추천 서비스
기간
2024.01 - 2024.03
팀
개인 프로젝트
역할
풀스택 개발 (Next.js, MongoDB, 크롤링)

브랜드별 메뉴가 빠르게 바뀌는 카페 환경에서는 사용자가 메뉴판 앞에서 오래 고민하거나, 자주 마시는 메뉴를 다시 찾는 데 불필요한 시간이 들었습니다.
사용자가 취향에 맞는 메뉴를 빠르게 고를 수 있도록 추천 경험을 만들고, 운영 측면에서는 메뉴 정보를 수집·정리하는 흐름을 자동화하는 것이 목표였습니다.
브랜드별로 다른 DOM 구조에서 메뉴 정보를 안정적으로 수집해야 했고, 수집 실패가 곧 추천 품질 저하로 이어졌습니다.
Puppeteer 기반 수집 흐름으로 브랜드별 메뉴 정보를 정리하고, 추천 로직이 사용할 수 있는 형태로 저장했습니다.
초기 데이터가 많지 않은 상태에서 사용자가 다시 방문할 이유를 만들 수 있는 추천 기준이 필요했습니다.
사용자 선택 이력을 기반으로 유사 취향 패턴을 묶어, 메뉴판을 모두 읽지 않아도 빠르게 다음 선택지를 제안하도록 구성했습니다.
메뉴, 브랜드, 사용자 선호 데이터가 계속 늘어나는 구조에서 읽기 성능과 확장성을 함께 고려해야 했습니다.
브랜드와 메뉴는 분리하고 선호 정보는 사용자 중심으로 묶어, 운영 수정과 추천 조회가 서로 발목 잡지 않도록 데이터 흐름을 분리했습니다.