We Searched eBay for 237 Recalled Products. Only 45 of 12,562 Listings Named the Model.
eBay에서 리콜 237건을 검색했더니 고유 매물 12,562개 중 리콜 식별 번호를 제목에 적은 매물은 45개뿐이었습니다
eBay에서 리콜 제품 237종을 검색한 결과, 고유 매물 12,562개 중 리콜 식별 번호를 제목에 적은 매물은 45개였습니다. 이를 바탕으로 중고 판매점 재고와 eBay 매물을 매주 점검하는 RecallDesk를 만들고, 소형 언어 모델의 분류 성능과 비용, 워크플로 복구 능력을 평가했습니다.
- 주제
에디터 노트
RecallDesk의 가장 큰 실증 결과는 리콜 여부를 자동으로 확정한 비율보다 eBay 제목만으로 식별 정보를 찾기 어렵다는 점입니다. 12,562개 중 번호가 적힌 매물은 45개였고, 제품 자체에 표시가 없는 배수구 덮개처럼 제목만으로 분류하기 어려운 사례도 실제 평가에 포함됐습니다. 그래서 사람에게 라벨을 확인시키는 단계는 시스템의 부가 기능이 아니라 조사 결과와 판정 한계에 맞춘 설계입니다. 다만 0.918의 정확도는 사람의 정답과 비교한 값이 아니라 대형 모델이 만든 판정 규칙을 재현한 값입니다. 위험 매물 38개 중 12개를 놓친 결과도 함께 봐야 합니다. 판매점별 정정 메모와 코드 기반 판정은 오류를 다루는 구체적인 장치지만, 실제 매장에서 오탐과 누락이 어느 정도 발생하는지는 아직 검증되지 않았습니다. 따라서 이 결과가 뒷받침하는 범위는 모델 비용과 규칙 준수의 개선이며, 현실의 리콜 제품을 안전하게 가려낸다는 검증까지 포함하지 않습니다.
AI 요약
중고 아동용품 판매점 직원은 짧은 시간 안에 들어온 물건이 리콜 대상인지 확인해야 합니다. 하지만 리콜 공지에서 모델 번호가 제목이나 상품명에 나오지 않고 상세 설명에만 적힌 경우가 많습니다. RecallDesk는 미국 소비자제품안전위원회(CPSC)의 리콜 공지를 읽고 매장 재고와 eBay 매물을 비교해 매주 점검표를 출력하는 도구입니다.
리콜 정보와 eBay 매물 조사
개발진은 2026년 7월 18일부터 10월 15일까지 CPSC가 게시한 리콜 공지 151건을 조사했습니다. 아동용 제품 리콜은 48건이었고, 2023년 이후 아동용 리콜까지 더하면 591건입니다. 최근 공지 151건 가운데 73건은 모델, 품목, 스타일 또는 SKU 번호가 제목이나 제품명에 없고 설명에만 있었습니다. 아동용 공지에서는 48건 중 24건이 이에 해당했습니다.
eBay에서는 리콜 237건을 대상으로 검색해 중복을 제거한 매물 12,562개를 모았습니다. 제목에 리콜 식별 번호가 대소문자나 하이픈 차이를 제외하고 들어 있는지 세었더니 45개, 리콜 13건에서만 확인됐습니다. 아동용 리콜 관련 매물 6,901개 중에는 2개뿐이었고, 둘 다 같은 브랜드의 수영장 다이빙 스틱이었습니다. 전체 매물의 17.1%가 중고였고 아동용 매물에서는 20.2%였지만, 식별 번호를 제목에 쓴 45개 중 중고 매물 비율은 9%였습니다. 제목에 번호가 없다는 사실만으로 리콜 대상이 아니라고 판단할 수 없다는 점이 제품 설계의 출발점입니다.
RecallDesk의 점검 흐름
판매점은 CSV를 올리거나 재고를 붙여 넣고, 선택적으로 eBay 판매자 이름을 등록합니다. 매주 목요일 오후 2시(미 동부 시간)에 새 공지가 올라오면 시스템은 브랜드, 모델 번호, 날짜 코드, 판매 기간 등을 정리해 재고와 판매 중인 매물을 비교합니다. 결과는 세 가지입니다. 확인된 리콜 제품은 "DO NOT SELL", 사람이 실물을 보고 라벨을 확인해야 하는 제품은 라벨 위치와 확인할 번호를 함께 적은 "CHECK LABEL", 해당하지 않는 제품은 표시하지 않습니다.
판정 기준은 모델을 고르기 전에 작성했습니다. 브랜드와 제품군이 맞고 식별 번호가 보이거나 리콜이 해당 제품 전체에 적용되면 match, 같은 브랜드와 제품군이지만 모델 번호나 날짜 코드처럼 판정에 필요한 정보가 없으면 check, 다른 제품이나 제외된 모델이면 no_match입니다. 규칙 7은 브랜드와 식별 번호가 없는 일반적인 유사 제품을 no_match로 처리합니다. 리콜 제품만의 특징적인 이름이 있으면 예외로 둡니다. 모델은 작은 JSON을 출력하고, 실제 점검표에 들어갈 판정은 코드가 규칙에 따라 결정합니다.
모델 학습과 평가
대형 모델 Qwen3.5-397B-A17B가 리콜 591건의 제품 명세를 만들고, 리콜과 매물의 조합 3,300건을 분류했습니다. 대형 모델이 브랜드 없는 유사 제품까지 check로 분류하는 문제가 반복되자 개발진은 규칙 7을 학습 데이터에 적용하는 코드를 추가했습니다. 이 규칙은 브랜드나 리콜 식별 번호가 없고 제품명에서 특징적인 단어가 두 개 미만으로 겹치면 일반 유사 제품으로 판정합니다. 총 391건의 학습 표적을 수정했습니다.
이후 Qwen3.5-4B를 Tinker에서 LoRA rank 32로 미세 조정했습니다. 학습 데이터는 3,007쌍이며 2회 학습했습니다. 학습에는 약 38분이 걸렸고, 1,000건 분류 비용은 0.19달러였습니다. 대형 모델의 비용은 1,000건당 2.20달러였습니다. 개발비는 모델 명세 생성, 두 차례 라벨링, 학습과 평가를 합쳐 약 19.10달러라고 밝혔습니다.
평가는 리콜 기준으로 분리한 미사용 리콜 20건과 매물 조합 293쌍에서 진행했습니다. 다만 정답은 사람의 검수가 아니라 대형 모델 판정에 규칙 7을 코드로 적용해 만들었습니다. 따라서 수치는 실제 리콜 여부를 맞힌 비율이 아니라, 미세 조정 모델이 해당 규칙을 얼마나 재현했는지를 보여줍니다. LoRA 모델의 정확도는 0.918(95% 신뢰구간 0.884~0.949), 오탐은 무해한 매물 255개 중 12개, 위험 매물 38개 중 포착한 수는 26개였습니다. 기본 4B 모델은 정확도 0.512, 오탐 120개, 위험 매물 포착 34개였습니다. 규칙과 키워드만 쓴 분류기는 정확도 0.864, 오탐 22개, 위험 매물 포착 22개였습니다. LoRA 모델의 정확도 향상은 40.6%포인트였고 통계 검정 결과 p < 0.001이었습니다.
오탐과 누락, 운영 복구
미세 조정 모델은 오탐을 크게 줄였지만 위험 매물 38개 중 12개를 놓쳤습니다. 누락 9개는 제품 자체에 표시나 식별 정보가 없는 Sviyatp 배수구 덮개 리콜에 집중됐습니다. 제목만 보면 브랜드 없는 흰색 덮개였고, 규칙 7에 따라 일반 제품으로 분류됐습니다. 나머지 누락에는 브랜드 없는 아기 장난감과 리콜 대상인 28개 및 30개 묶음 대신 14개 묶음으로 올라온 손가락 조명이 포함됐습니다. 개발진은 오탐 감소와 식별 정보가 없는 제품의 누락 사이에 실제 상충이 있다고 설명합니다.
제품 시연에서도 날짜 코드 확인이 필요한 수면 기계를 "DO NOT SELL"로 분류한 오류가 나왔습니다. 해당 리콜은 모델 LTD-SM23 전체가 아니라 날짜 코드 7W15TN에 해당하는 제품을 대상으로 하므로, 자체 규칙상 "CHECK LABEL"이어야 했습니다. 반대로 작업자가 실물을 확인해 남긴 정정 사항은 판매점별 메모로 저장하고 다음 점검에서 적용합니다. 메모는 모델에 전달하지 않고, 코드가 리콜 번호와 단어 중복률을 확인한 뒤 판정을 바꿉니다.
워크플로는 Temporal로 구성했습니다. CPSC 요청은 재시도 후 저장된 스냅샷으로 대체하고, 분류 요청은 진행 상태를 기록해 작업자가 중단돼도 이어서 실행합니다. 60개 상품을 점검하던 중 작업자를 종료한 시험에서는 이미 끝난 항목을 유지하고 진행 중이던 호출만 재시도해 중복 완료 없이 점검표를 발행했습니다. 실제 LoRA 모델을 사용한 시험에서도 60개 활동 중 18개 결과를 유지하고 진행 중이던 6개를 재시도했습니다. RecallDesk는 법률 자문이나 CPSC 확인을 대체하지 않으며, 사진 속 라벨을 읽지 못해 실물 확인이 필요한 항목을 별도로 표시한다고 설명합니다.
원문: dev.to / 번역·요약: Trawling