AI 바이브톤 - 멋쟁이사자처럼

AI 바이브톤

처음으로 대회에 참여해 PM 역할을 맡아 시간 관리 및 최종 결정과 관련된 역할을 수행했습니다.
해당 대회는 멋쟁이사자처럼과 서울 고용노동부에서 주최해준 프로젝트로 주제는 처음 랜덤으로, 당일 해당 장소에서 랜덤으로 뽑아서 지정되는 구조였습니다.

그런데 당일 시간적 이슈가 생겨서 주제를 먼저 주는 형태로 대회가 시작되었습니다.
우리의 주제는 소비로 정해졌고, 관련된 주제로 회의 끝에 레시피를 이용해 직접 만들어 먹었을 때와 배달로 시켰을 때를 비교해 실제로 얼마나 절약되는지 보여주는 서비스를 만들기로 아이디어가 모였습니다.

레시비

레시비 홈페이지

팀 이름은 시너지로 정했고, 레시피의 가격을 비교한다는 점에서 유튜버 제로비님의 이름에서 영감을 얻어 레시비라는 이름으로 하기로 했습니다.

프로젝트 안에서 AI를 활용해 어떤 기능을 제공해줄지 많은 고민을 했습니다.
고민 끝에 방향을 하나로 잡았습니다. AI를 기능의 주인공으로 세우기보다, 규칙 기반 로직이 먼저 처리하고 거기서 막히는 지점만 AI가 메우는 식으로 쓰자는 것이었습니다. 그렇게 정리된 지점이 네 곳입니다.

  1. 재료 추출 폴백: 유튜브 설명란이나 블로그 본문에서 정규식 기반 파서가 재료 목록을 못 찾아낼 때만 Gemini를 불러 재료를 뽑아냈습니다. "레시피에 없는 재료는 절대 지어내지 말 것"을 프롬프트에 못박았습니다.
  2. 재료명 정규화: "오뚜기 참기름", "고춧가루 1스푼"처럼 제각각인 표기를 표준 품목명으로 맞추는 단계입니다. 이것도 생성이 아니라 "주어진 목록 중 하나를 고르거나, 없으면 null"로 문제를 좁혀서 AI가 없는 품목을 지어내는 걸 막았습니다.
  3. 웹 시세 조회: 공공데이터(KAMIS)에도, 미리 넣어둔 시드 값에도 없는 품목의 가격을 메우는 마지막 단계입니다. 네이버 쇼핑 API로 먼저 찾아보고, 그마저 없을 때만 Gemini에게 검색 그라운딩을 붙여 물었습니다.
  4. 매장 배달가 추정: 실제로 조사된 매장가 데이터가 없는 메뉴는, Gemini에게 "2인분 배달 주문 시 예상 가격"을 여러 번 물어 중앙값을 썼습니다. 실측이 아니라는 점은 화면에도 그대로 밝혔습니다.

네 곳 모두 공통된 원칙은 하나였습니다. 근거 없는 값은 쓰지 않는다는 것. 이 중 재료 추출과 정규화 두 가지는 본선 전에 미리 검증을 거쳤고, 나머지 두 가지는 본선을 진행하면서 새로 붙인 기능입니다.

GitHub: https://github.com/Synergy-AI-Vibe/synergy-mvp

대회 전 PoC 검증

recipe-price-poc 검증 화면

레시비 프로젝트에서 AI와 관련된 내용 중 걸리는 가정이 두 가지 있었습니다.

  1. 유튜브·블로그 레시피에서 재료 목록을 자동으로 다 긁어올 수 있는가
  2. 긁어온 재료의 가격을 사용자에게 얼마나 명확하게 보여줄 수 있는가

대회 본선에 들어가기 전에 이 두 가지를 실제 데이터로 검증해보기로 했습니다.
유튜브·네이버 블로그에서 메뉴 10종, 총 40건을 직접 수집해 재료 추출 정확도를 측정했고, 그 결과 유튜브 설명란만 보면 재료가 제대로 나오는 경우가 5건 중 1건에 그친다는 걸 확인했습니다.

반면 네이버 블로그는 95%였습니다.
그래서 설명란 → 고정 댓글 → 연결된 블로그로 이어지는 폴백 사슬을 두니 65%까지 올라갔습니다.

가격 쪽에서는 총액을 하나가 아니라 "소모 원가"와 "장바구니 금액" 두 가지로 나눠 보여주는 게 가장 큰 발견이었습니다.

GitHub: https://github.com/Synergy-AI-Vibe/recipe-price-poc

느낀점

솔직히 상을 받을 거라고는 생각하지 못했습니다.
다른 팀들 발표를 보면서 다들 기획이 너무 좋았고, 잘한다는 생각만 들었습니다.

결과를 발표하는데 총 3명의 심사관님이 평가를 하시는 구조였고, 2팀씩 발표를 하며 더 우위에 있는 팀을 가려내는 구조였습니다.
평가의 기준은 프로젝트 적합성, 창의성, 현실성, 문제해결 능력, 필요성 등등 다양한 분야의 평가 항목이 있었습니다.

최종적으로는 가장 높은 점수를 받은 팀이 대상을 타는 구조였지만, 다른 팀과 비교를 해서 이긴 팀이 나온다는 개념이 생각보다 많이 떨렸습니다.

총 8팀 중에서 4번째로 발표를 하게 되었고, 1등에 표시가 된 순간 모두가 벙찐 채로 "우리가??"라는 표정으로 서로를 쳐다봤습니다.

그렇게 마지막 순간까지 다른 팀들의 발표를 들으며 "와 정말 잘했다… 상을 받는 것은 어려울지도 모르겠다"와 같은 생각을 했지만 나름 1등 자리를 유지했고, 마지막 팀이 높은 점수로 1등을 하며 최종적으로 2등으로 마무리하게 되었습니다.

대회를 통해서 세상은 정말 넓고, 잘하는 사람이 정말 많다는 걸 다시 한 번 느낄 수 있었습니다.
또한, 개발자로서 동기부여가 되어 꾸준히 공부를 해야겠다는 생각을 하게 되었습니다.

첫 대회 출전에 팀원 모두가 열심히 힘써줘서 2등을 할 수 있었고, 더 다양한 대회에 나가서 많은 경험을 쌓아야겠다고 생각했습니다.