I Built an Open-Weight AI That Prices Etsy Shops, On Your Laptop
노트북에서 Etsy 상품 가격을 산정하는 오픈 웨이트 AI를 만들었습니다
PricePilot은 TabPFN-v2로 상품 판매가와 10~90% 예측 구간을 계산하고, Gemma 3로 상품 설명과 검색 태그를 작성하는 로컬 도구입니다. 샘플 데이터에서 평균 판매가 약 54달러인 상품의 홀드아웃 MAE는 약 2.90달러이며, 개발자는 모델을 직접 실행할 때 판매 데이터를 외부로 보내지 않는다고 설명합니다.
- 주제
에디터 노트
가격 예측의 근거를 오차와 예측 구간으로 함께 보여주고, 생성 모델이 가격을 임의로 바꾸지 못하게 역할을 나눈 설계는 글의 목적과 잘 맞습니다. 다만 약 5% 오차는 수백 건 규모 샘플 데이터의 홀드아웃 결과이며, 평가 분할과 구간 보정 기준은 제시되지 않았습니다. 그래서 현재 수치는 실제 Etsy 상점에서도 같은 정확도를 낸다는 증거가 아니라 프로젝트 내부 평가로 읽어야 합니다. 로컬 실행과 CSV 입력은 판매 기록을 외부 서비스에 맡기지 않으려는 요구에 직접 대응합니다. 반면 실제 상점 주인은 아직 완성본을 써보지 않았고, 가격 추천이 매출이나 이익을 개선하는지도 검증되지 않았습니다. 이 프로젝트의 기술적 주장은 측정된 예측 오차까지이며, 판매자에게 유용한 도구인지에 대한 답은 다음 사용자 테스트에 달려 있습니다.
AI 요약
Etsy에서 수제 양초를 파는 지인이 가격을 감으로 정하는 모습을 보고 만든 프로젝트입니다. 판매가는 향, 크기, 재료, 제작 시간, 사진 수, 계절, 상점 평점처럼 여러 요소에 따라 달라집니다. 개발자는 가격을 너무 높게 잡으면 상품이 팔리지 않고, 너무 낮게 잡으면 수수료를 내고도 노동비를 건지지 못한다고 설명합니다. 기존 가격 책정 SaaS는 월 구독료를 받고 판매 기록을 외부 서버에 올리도록 요구한다는 점에서 소규모 상점에 부담이라고 봅니다.
PricePilot은 상품 정보를 한 번 입력해 가격과 가격에 영향을 주는 요소, 상품 등록 문구를 함께 만듭니다. 입력 항목은 카테고리, 재료, 크기, 제작 시간, 상태, 사진 수, 계절 등입니다. 가격은 단일 값으로 끝내지 않고 예측값과 10~90% 구간을 함께 보여줍니다. 홀드아웃 데이터에서 측정한 평균 절대 오차도 제시해 예측 오차의 크기를 확인하게 합니다.
가격 예측과 What-if 분석
가격 예측에는 Prior Labs의 오픈 웨이트 표 형식 모델 TabPFN-v2를 씁니다. 개발자는 과거 판매 목록 수백 건, 특성 10개, 연속형 가격값을 다루는 작은 데이터 문제에 이 모델을 적용했다고 설명합니다. 별도의 데이터셋 학습 과정 없이 CPU에서 한 번 추론하는 구조입니다.
가격만 제시하는 대신 판매자가 조정할 항목을 바꿔 다시 예측합니다. 사진 수, 개인화 옵션, 4분기 판매 시점, 상품 상태, 프리미엄 재료 등을 각각 변경하고 가격 차이를 계산해 달러 영향이 큰 순서로 보여줍니다. 여러 조건의 재예측을 배치 추론 한 번에 묶었습니다. 개발자는 초기에는 CPU 추론이 몇 분씩 걸렸지만, What-if 조건을 한 번에 처리해 요청 시간을 분 단위에서 초 단위로 줄였다고 적었습니다.
샘플 데이터에서 상품 평균 판매가는 약 54달러이고, 홀드아웃 예측의 평균 절대 오차는 약 2.90달러입니다. 개발자는 이를 약 5% 오차로 설명합니다. 이 수치는 프로젝트의 샘플 데이터 평가 결과입니다. 글에는 데이터 구성과 홀드아웃 분할 방식, 오차 구간의 보정 방법에 대한 상세 기준은 나오지 않습니다.
상품 등록 문구와 로컬 실행
상품명, 설명, 검색 태그 8개는 Ollama로 실행하는 오픈 웨이트 Gemma 3가 작성합니다. 모델에는 TabPFN이 계산한 가격을 전달하고, 다른 가격을 만들어내지 말라고 지시합니다. 따라서 가격 산정은 TabPFN이 맡고 Gemma 3는 해당 가격에 맞춘 문구를 씁니다. Ollama가 실행되지 않으면 같은 가격을 사용하는 결정론적 템플릿으로 문구를 작성합니다.
전체 구성은 FastAPI, 프런트엔드, 두 모델로 이뤄지며 localhost에서 실행합니다. 개발자는 Ollama 주소를 응답하지 않는 포트로 바꿔 오프라인 대체 경로에서도 상품 문구가 생성되는지 확인했다고 밝혔습니다. 실제 TabPFN-v2와 Gemma 3를 쓰려면 저장소를 복제하고 python run.py를 실행합니다. 웹 데모는 대화형으로 동작하지만 브라우저 안의 가격 추정기가 모델 결과를 모사하며, 실제 모델 조합과는 구분됩니다.
개발자는 판매자가 Etsy에서 내보낸 CSV를 넣어 자신의 상품군에 맞는 데이터를 다루는 방안도 설명합니다. 로컬 처리로 판매 기록을 외부에 올리지 않고, 건별 API 비용도 없다는 점을 프로젝트의 목표로 내세웁니다. 다만 제작자는 실제로 양초 상점을 운영하는 지인에게 완성본을 아직 시험하지 않았다고 밝혔습니다. 현재 가격을 받고 판매할 생각도 없으며, 지인과 다음 단계에서 사용성을 확인하겠다고 적었습니다.
원문: dev.to / 번역·요약: Trawling