This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
제가 만든 것 (What I Built)
PriceCraft AI는 eBay, Etsy, Poshmark, Mercari, Shopify 등지에서 빈티지 의류, 시계, 리퍼비시드(refurbished) 전자기기 및 수집품을 판매하는 사람들을 위한 원클릭 감정가 책정 및 리스팅 엔진입니다.
이들은 보통 '스타트업'은 아닙니다. 그들은 휴대폰과 보관 상자, 그리고 무엇을 물어봐야 할지, 그리고 리스팅 작성에 얼마나 걸리는 시간이라는 두 숫자에 생존이 달린 판매자들입니다.
너무 높게 가격을 책정하면 상품이 쌓여만 있습니다. 너무 낮게 책정하면 마진을 낯선 사람에게 기부하는 것과 같습니다. 제목을 부실하게 작성하면 검색 엔진에서 절대 발견되지 않습니다. 상태 설명(condition note)을 건너뛰면, 이미 지불한 플랫폼 수수료와 함께 반품까지 감당해야 합니다. 신중하게 리스팅 하나를 하는 데는 여전히 15~20분이 걸립니다: 비교 상품(comps) 찾기, 가격 추측하기, eBay의 80자 제목에 키워드를 짜 넣기, 사양 작성하기, 결함 공개하기.
PriceCraft는 이 모든 과정을 단일 양식으로 바꿉니다: 브랜드, 카테고리, 상태, 소싱 비용, 몇 가지 속성만 입력하면 됩니다. 그리고 다음을 반환합니다:
- 제안된 리스팅 가격(suggested list price), 빠른 판매 기준선(quick-sale floor), 여유로운 목표가(patient ceiling), 그리고 14일간의 판매 완료 확률
- 실시간 경쟁사 최소/평균/최대 가격 (SerpApi를 설정한 경우)
- 일반적인 마켓플레이스 수수료 혼합을 제외한 순이익, 따라서 '최적'이라는 것이 허영의 수익이 아님
- eBay 길이의 제목, Etsy 스타일의 제목, 마크다운(markdown) 사양, 그리고 상태에 정직한 설명
- TikTok/Reels용 선택적 15초 홍보 내레이션
- 소규모 재고 카탈로그 및 CSV 내보내기 기능
누가 돈을 지불할까요? 매주 몇 점 이상의 상품을 리스팅하는 사람이라면 누구나 합니다. 이 제품은 '쇼핑을 위한 AI'가 아닙니다. 이것은 재판매 활동(resale hustle)을 위한 시간과 가격 책정의 규율이며, 이는 이번 주에서 요구한 작고 구체적이며 유용한 소프트웨어의 전형적인 예시입니다.
데모 (Demo)
실시간 앱: https://pricecraft-ai.onrender.com
프리셋(예: 빈티지 나이키 바람막이 등)을 사용하거나, 실제로 판매할 품목을 입력해 보세요. 감정가, 비교 상품 정보(comps), 설명 문구(copy), 단위 경제학(unit economics), 재고 현황 등이 동일한 대시보드에 구현되어 있습니다. 상태 확인: /api/health.
공개 데모는 Render의 무료 티어에서 실행되므로, 유휴 상태 이후 첫 요청은 활성화되는 시간이 걸릴 수 있습니다. 이것이 레포지토리를 클론(cloning a repo)하지 않고도 심사위원(및 판매자)들이 클릭할 수 있는 것을 배송하는 정직한 비용입니다.
코드
PriceCraft AI
온라인 판매자를 위한 지능형 재판매 가격 책정, 실시간 시장 비교 상품 정보(comps), 및 리스팅 생성 서비스.
실시간 데모: https://pricecraft-ai.onrender.com
Live Demo Python 3.11+ FastAPI License: MIT
오픈 소스 AI를 핵심으로 하여 2026년 Hacktoberfest(2주차 — 부업)을 위해 구축되었습니다.
개요
eBay, Etsy, Poshmark, Mercari, Shopify 등에서 활동하는 개인 판매자들은 시간이 너무 많이 걸리는 두 가지 작업에 시간을 소비합니다. 바로 가격 책정과 리스팅 설명 작성입니다.
- 너무 높은 가격을 추측하면 재고가 쌓이고, 너무 낮은 가격은 마진을 잃게 만듭니다.
- 80자 분량의 eBay 제목, 사양(specs), 그리고 정직한 상태 설명을 작성하는 것은 품목당 종종 15~20분이 걸립니다.
PriceCraft AI는 품목 사양과 소싱 비용을 하나의 요청만으로 가치 평가, 경쟁사 스냅샷, 마켓플레이스 리스팅, 선택적 짧은 형식의 홍보 음성 녹음(promo voiceover)으로 변환합니다.
기능
| 기능 | 얻게 되는 것 |
|---|
| 표 형태 가치 평가 (Prior Labs TabPFN) | 제안 리스팅 가격, 빠른 판매 최저가(quick-sale floor), 수집가 최고가(collector ceiling), 14일 내 판매 완료 확률 |
| ... | |
| … | |
GitHub에서 보기
Repo: github.com/ritikahirwar8168-dev/pricecraft-ai
Stack: Python 3.11, FastAPI, SQLite, Tailwind, Chart.js. Blueprint: render.yaml. Tests: python -m unittest tests/test_pricecraft.py -v.
구축 과정 (How I Built It)
모든 리스팅은 동일한 과정을 거칩니다. 판매자 입력이 들어가면 가격 책정된 리스팅이 출력되며, Sentry로 각 엔진을 감싸서 추측하는 것이 아니라 측정 가능한 지연 시간(latency)을 확보했습니다.
flowchart TD
Seller["판매자"] -->|"품목 사양, 상태, 소싱 비용"| UI["Render 대시보드"]
UI -->|"POST /api/analyze"| API["FastAPI 파이프라인"]
...
개방된 부분들은 README에 적힌 배지들이 아닙니다. 이들은 폐쇄형 챗봇이 취약한 두 가지 작업입니다: 작은 표 위의 숫자와 마켓플레이스 규칙을 준수하는 카피라이팅.
가치 평가(Valuation)는 LLM이 아닌 TabPFN입니다. Prior Labs의 테이블 기반 모델은 순방향 전파(forward pass)를 통해 작은 테이블형 데이터셋에 베이지안 스타일 추론(Bayesian-style inference)을 수행하도록 훈련되었습니다. 리셀 판매 데이터는 이와 같습니다: 상태 점수, 브랜드 등급, 희귀성, 연식, 수요, 원래 소매가, 소싱 비용. 저는 판매 가격에 TabPFNRegressor를, "14일 내 판매됨" 여부에 TabPFNClassifier를 적용한 후 품목을 점수화합니다. 이를 통해 바닥가(floor), 최고가(ceiling), 시장 체류 일수(days-on-market), 그리고 요인별 분석을 도출합니다. 일반적인 채팅 모델은 재킷 가격을 책정한 것처럼 '들리게' 할 뿐입니다. TabPFN은 실제로 테이블 예측을 수행하고 있습니다.
카피라이팅은 Gemma 2를 사용했습니다. Google의 오픈 웨이트(open-weight) gemma-2-9b-it이 리스팅을 작성합니다: 80자 eBay 제목, 더 따뜻한 Etsy 제목, 글머리 기호(bullets), 마크다운 설명, 태그, 소셜 후크. 추론은 Groq 또는 Hugging Face를 통해 진행할 수 있으며, GEMMA_MODEL_ID는 교체 가능합니다. 온도(Temperature)는 낮게 설정됩니다. 출력물은 편집해야 할 단락이 아니라 JSON 형식입니다.
실시간 비교 상품 정보(Live comps)는 SerpApi(Google Shopping)를 사용하므로 가격이 공중에 떠 있는 것이 아닙니다.
ElevenLabs가 소셜 후크를 짧은 음성 오버로 변환합니다. 리셀러들은 이미 휴대폰 동영상을 촬영하고 있으므로, 모든 SKU마다 스크립트를 작성하고 녹화할 필요는 없습니다.
**Sentry 에이전트 트레이싱(Sentry agent tracing)은 각 단계(tabular_valuation, market_comps, listing_generation, voiceover_synthesis)에 지연 시간과 메타데이터를 포함합니다. UI에는 원격 측정(telemetry) 탭이 있으며, SENTRY_DSN이 설정되면 동일한 범위가 Sentry로 전송됩니다. 여러 엔진 파이프라인의 경우, “느리게 느껴진다”는 것은 쓸모가 없습니다. TabPFN, 검색, 또는 복사 중 무엇이 예산을 소진했는지 알아야 합니다.
Render는 런타임 환경입니다: 0.0.0.0:$PORT에서 실행되는 FastAPI이며, /api/health에 상태 확인(health check) 엔드포인트가 있고, 블루프린트에서 sync: false로 표시된 환경 키들이 있습니다. 이 부업은 판매자가 URL을 열 수 있을 때만 존재합니다.
폴백(Fallbacks)은 의도적입니다. 키들은 선택 사항입니다. 이것들 없이도 내장 사전 지식(built-in priors)이 여전히 평가와 리스팅을 생성하므로 앱이 절대 작동을 멈추지 않습니다. 이는 판매자가 다운된 경우 500 에러를 반환하는 데모보다 $0~$소액 예산의 부업에 더 중요합니다.
POST /api/analyze 실행 한 번: TabPFN 평가 → SerpApi 비교 자료 → Gemma 2 리스팅 → 단위 경제학(가격 − 비용 − ~13.25% + $0.30 수수료 − 배송비). 음성 녹음은 별도의 POST /api/voiceover이므로 모든 감정 평가마다 오디오에 대한 비용을 지불하지 않습니다.
오픈 혁신(Open Innovation)이 중요한 이유?
리셀러의 마진은 얇습니다. 만약 모든 리스팅이 폐쇄된 프론티어 API를 호출한다면, 이 도구는 자신이 찾아낸 추가 달러보다 더 비쌀 수 있습니다. 오픈 가중치(open weights)는 단순히 철학을 변화시키는 것이 아니라 _제품_의 단위 경제학을 바꿉니다.
테이블 형태의 작업은 폐쇄형 채팅 API에 적합하지 않습니다. 가격 책정은 행과 열로 이루어져 있습니다: 상태, 희귀도, 연식, 비교 자료. 이것을 일반 LLM으로 강제하는 것은 실제 사후 확률(posterior)이나 자체 판매 이력 CSV에서 저렴하게 재조정할 방법 없이 확신에 찬 오답을 얻는 비싼 방법입니다. TabPFN은 그러한 형태의 데이터에 맞춰져 있습니다. 바로 이곳에서 오픈 혁신은 슬로건이 아니라 올바른 모델 클래스입니다.
Gemma를 활용한 제약 및 교체 가능한 워크플로우 구축
eBay의 제목 제한은 80자입니다. 저는 프롬프트를 엄격하게 적용하고, JSON에 고정하며, 앱을 다시 작성하거나 공급업체와 재협상할 필요 없이 대체할 수 있는 모델이 필요합니다 (2b 대 9b, Groq 대 Hugging Face 대 로컬 등). 토큰 1K당 가격 변동, 모델 사용 중단, 또는 정책이 "오염이 공개된 중고품"을 싫어하게 되는 경우까지는 폐쇄형 복사 API(closed copy APIs)를 사용하는 것은 괜찮습니다. 오픈 웨이트(open weights)는 리스팅 작성자를 제 통제 하에 유지시켜 줍니다.
판매자 데이터는 추상적이지 않습니다. 소싱 비용과 실제 마진은 이 워크플로우에서 가장 민감한 필드입니다. 호스팅된 폐쇄형 API를 사용한다는 것은 클릭할 때마다 그 데이터를 제3자에게 전송한다는 의미입니다. 자체 호스팅(Self-hosting)하는 FastAPI + TabPFN을 CPU에서 실행하거나, 선택한 제공업체를 통해 Gemma를 구동하는 것이, 도매 가격으로 새어 나가서는 안 될 사업에 더 나은 기본값입니다.
폐쇄형 도구들은 다른 방식으로 "사람들이 돈을 지불할 것인가"라는 테스트를 통과하지 못합니다. ChatGPT는 설명을 초안 작성할 수는 있습니다. 하지만 표 형식의 사전(tabular prior)에 맞추고, eBay 수수료를 빼고, 쇼핑 비교 가격(shopping comps)을 가져와서 파일 교환 형태의 CSV 파일을 하나의 경로로 출력하는 것은 불가능합니다. 오픈 스택이 이것을 다섯 개의 탭이 아닌 '하나의 제품'으로 만든 것입니다.
여기서 "오픈"이라는 것이 "인터넷 연결 없음, 항상"을 의미하지는 않습니다. 여기서 의미하는 바는 사업을 작동하게 만드는 지능—표 형식 가치 평가와 제약된 리스팅 문구—이 단일 폐쇄형 SKU에 묶여 있지 않다는 것입니다. 렌더(Render)가 호스팅합니다. 파트너들은 라이브 검색, 음성 및 추적 기능을 추가합니다. 핵심은 이러한 키들이 비어 있더라도 여전히 백업으로 작동합니다.
상금 카테고리
- Render의 최적 활용: pricecraft-ai.onrender.com에서의 프로덕션 런타임,
render.yaml, /api/health
- TabPFN의 최적 활용: 재판매 속성(resale attributes)에 대한 회귀 분석기(regressor) + 분류기(classifier): 가격, 14일 판매율(sell-through), 하한가/상한가(floor/ceiling), 요인 분해(factor breakdown), 더 광범위한 가치 평가 에이전트 내에서
- Gemma의 최적 활용: 리스팅 작성기(listing writer)로서 Gemma 2 사용 (80자 제목, 사양, 상태 설명 문구)
- Sentry Agent Tracing의 최적 활용: 엔진별 스팬(span) 추적 (지연 시간(latency), 가격, 제목 길이, 경쟁사 수): 인앱 및
sentry-sdk를 통해
- SerpApi의 최적 활용: 가격을 근거로 하는 실시간 Google 쇼핑 비교 분석(comps)
- ElevenLabs의 최적 활용: 짧은 형식의 리스팅 홍보 내레이션