레브잇
경력근거: LLM을 활용해 상품의 모든 속성(제품 속성 및 체감 속성 등)을 추출하고 체계화하는 새로운 시스템을 구축
※ 실제 산출물이 아닌 AI 예측 시안입니다.
쇼포트가 겨냥하는 차세대 커머스 카탈로그는 10~20년 쌓인 가격비교를 넘어 상품의 제품 속성과 체감 속성을 함께 체계화하는 일이라, 후기에서 나오는 체감 속성 어휘와 버티컬별 속성 축이 레브잇의 패션·뷰티·건강식품·가전·가구 구성에서만 현실적으로 모입니다. 이 포트폴리오는 LLM 으로 속성을 뽑아 근거와 함께 구조화하고 자연어 질의로 잇는 기술을 보여주며, 쇼핑 추천 알고리즘이나 커머스 도메인 전문성은 주장하지 않습니다. 모르는 깊이는 면접에서 모른다고 말하는 편이 낫습니다.
전통적인 가격비교를 넘어, 상품 원문에서 제품 속성과 체감 속성을 함께 뽑아 한 구조화 카탈로그로 모읍니다.
용량·소재 같은 제품 속성은 원문 인용으로, 가성비·발색 같은 체감 속성은 그렇게 말한 후기 묶음을 근거로 달아 지어낸 속성을 거릅니다.
여러 상품의 원문과 후기를 추출·검증·적재 단계로 흘려보내, 자연어 질문에 답할 수 있는 구조화 카탈로그를 만듭니다.
레브잇 PMF팀이 만드는 차세대 커머스 카탈로그를 위해, 상품 원문과 후기에서 제품 속성과 체감 속성을 뽑아 구조화 카탈로그로 모으고 자연어 질문에 답하는 도구입니다. 용량·소재 같은 제품 속성은 원문 인용으로 대조하고, 가성비·발색 같은 체감 속성은 그렇게 말한 후기 묶음을 근거로 달아, 지어낸 속성을 거릅니다. 상품 원문과 후기는 사내 데이터 대신 더미를 가정합니다.
가격비교표에는 용량·가격만 있어 '발색이 선명한지', '가성비가 좋은지' 같은 실제 구매 기준은 후기를 일일이 뒤져야 알 수 있어 답답하던 카탈로그 담당자가, 제품 속성과 체감 속성을 한 카탈로그에서 근거와 함께 확인하고 자연어로 물어보고 싶은 사람입니다.
제품 속성은 원문 인용으로, 체감 속성은 그렇게 말한 후기 묶음을 근거로 뽑아 구조화 카탈로그에 함께 담으면, 자연어 질문을 속성 조건으로 바꿔 근거가 붙은 답을 낼 수 있고 지어낸 속성은 근거 대조에서 걸린다는 가정입니다.
상품 원문과 후기 더미를 넣으면 용량·소재 같은 제품 속성은 원문 인용으로, 가성비·발색 같은 체감 속성은 그렇게 말한 후기 묶음을 근거로 뽑아 구조화 카탈로그에 적재하고, 근거가 원문·후기에 실제로 있는지 규칙으로 대조해 통과·불일치로 가르는 완결품입니다. 상품 원문과 후기는 사내 데이터 대신 더미를 가정합니다.
1주차 카탈로그 위에 '발색 선명한 21호 쿠션' 같은 자연어 질문을 속성 조건으로 바꾸는 질의 계층을 붙여, 조건에 맞는 상품과 그 근거 후기를 함께 돌려주고 조건 변환이 맞았는지 정답 질의 표본과의 일치율을 보여줍니다.
체감 속성마다 근거 후기가 몇 건인지와 상충하는 후기(발색 좋다·안 좋다) 비율을 함께 달고, 근거가 적거나 상충이 큰 속성은 낮은 신뢰도로 표시하는 통계 요약을 붙입니다.
상품 원문과 후기 더미를 넣으면 제품 속성과 체감 속성이 근거와 함께 구조화 카탈로그로 뽑히는 과정을 시연합니다.
제품 속성의 원문 인용 일치율과 체감 속성의 근거 후기 대조 일치율을 보여주며, 단 정답과 더미를 작성자가 만든 합성 기준이라 성능 검증이 아니라 데모 조건 동작입니다.
일부러 만든 결측·상충 후기·표기 흔들림 30종을 넣어도 파이프라인이 멈추지 않고 근거 없는 속성을 불일치로 표시하는 강건성을 보여줍니다.
위 수치는 더미데이터 자가채점이며, 실제 추출 정확도와 체감 속성 신뢰도는 레브잇 실 상품·실 후기가 있어야 측정 가능합니다. 이 포트폴리오는 그 검증을 바로 돌릴 수 있는 상태까지 만듭니다.
수치는 합성 데이터 자가채점이라 성능 증명이 아니므로, 면접에서는 데모 동작과 실검증 준비 상태로 솔직히 설명합니다.
정답을 작성자가 만들었으니 잘 맞는 게 당연하므로, 결측·상충 후기·표기 흔들림 같은 경계 케이스를 더미에 일부러 섞어 쉬운 문제만 푸는 함정을 피합니다.
이 포트폴리오는 LLM 속성 추출·근거 검증·자연어 질의 기술을 보여주며, 쇼핑 추천이나 커머스 도메인 전문성은 주장하지 않습니다. 제품 속성은 원문 인용, 체감 속성은 근거 후기 대조라는 규칙으로 채점하고 LLM 은 추출·요약 보조만 맡아 지어낸 속성이 통과하지 못하게 합니다.
실제 도입 때는 실 상품·후기 분포와 버티컬별 속성 축, 표기 사전으로 추출·정규화 기준이 달라지므로, 속성 축과 후기 어휘 사전 교체를 도입 단계 과제로 둡니다.
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
여러 버티컬 상품의 원문 속성과 후기로, 속성 결측·상충 후기·용량 표기 흔들림 같은 하드 케이스를 일부러 섞어 제품 속성과 체감 속성이 근거와 함께 뽑히는지 확인합니다.
| product_id | vertical | title | spec_text | reviews |
|---|---|---|---|---|
| PR-3001 | 뷰티 | 글로우 쿠션 21호 | 용량: 15ml / 색상: 21호 라이트 | ["발색이 선명하고 지속력도 좋아요","21호가 생각보다 밝아서 가성비 좋게 잘 샀어요","커버력은 약한 편이라 살짝 아쉬워요"] |
| PR-3002 | 건강식품 | 멀티비타민 90정 | — | ["알이 작아서 삼키기 편해요","가격 대비 정량이 많아 가성비 최고"] |
| PR-3003 | 가전 | 무선 핸디 청소기 | 흡입력 12000pa / 배터리 4000mAh | ["흡입력은 강한데 배터리가 금방 닳아요","생각보다 무거워서 손목이 아파요","가성비는 좋은 편"] |
| PR-3004 | 패션 | 릴렉스 핏 코튼 셔츠 | 소재: 면 100% / 색상: 아이보리, 네이비 | ["핏이 편하고 소재가 부드러워요","세탁하니 살짝 줄었어요"] |
| PR-3005 | 뷰티 | 수분 진정 토너 300ml | 용량: 300 mL / 성분: 판테놀 | ["발림성 좋고 자극 없어요","용기가 300ml라 오래 써요"] |
다음 JSON Schema 에 맞는 상품·후기 행을 더 생성하세요: {"type":"object","properties":{"product_id":{"type":"string"},"vertical":{"type":"string","enum":["패션","뷰티","건강식품","가전","가구"]},"title":{"type":"string"},"spec_text":{"type":["string","null"]},"reviews":{"type":"array","items":{"type":"string"}}},"required":["product_id","vertical","title","reviews"]} 쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: spec_text 를 null 로 둔 제품 속성 결측, 같은 상품에 발색 좋다·발색 이상하다처럼 상충하는 체감 후기, reviews 를 빈 배열로 둔 후기 없음, 용량이 300ml 와 300 mL 처럼 단위 표기가 흔들리는 표기 불일치, 체감 표현이 아니라 배송·포장 같은 비속성 후기가 섞인 잡음. 각 버티컬마다 정상 1건과 하드 케이스 1건 이상이 섞이게 하고, 형식 깨뜨리기 시도(스키마 타입 위반) 3건은 데이터가 아니라 별도 목록으로 표시하세요.{"type":"object","properties":{"product_id":{"type":"string"},"vertical":{"type":"string","enum":["패션","뷰티","건강식품","가전","가구"]},"title":{"type":"string"},"spec_text":{"type":["string","null"]},"reviews":{"type":"array","items":{"type":"string"}}},"required":["product_id","vertical","title","reviews"]}| Python | 상품 원문과 후기에서 속성을 뽑고 체감 속성을 후기별로 묶는 추출·집계 파이프라인을 구현합니다. |
| TypeScript | 구조화 카탈로그 스키마와 질의 결과를 타입으로 묶어, 속성 필드 누락을 컴파일 단계에서 막습니다. |
| Claude Sonnet | 상품 원문에서 제품 속성과 그 원문 인용을, 후기에서 체감 속성과 그 근거 문장을 JSON 으로 뽑고, 근거가 실제로 있는지는 규칙이 대조합니다. |
| 데이터 파이프라인 | 추출·검증·적재·집계를 단계로 나눠, 각 단계 산출물을 다음 단계 입력으로 흘려보냅니다. |
| 통계 집계 | 체감 속성마다 근거 후기 수와 상충 비율을 세어 신뢰도를 매깁니다. |
✓ pass → 그대로 멈춰도 완결입니다. 더 키우려면 2주차에서 자연어 질문을 속성 조건으로 바꿔 답합니다.
✓ pass → 여기서 멈춰도 검증된 완결입니다. 더 키우려면 3주차에서 체감 속성 신뢰도와 상충 후기 처리를 다룹니다.
상품 한 건을 받아 제품 속성과 체감 속성을 각 근거 인용과 함께 내보내, 원문·후기에 없는 근거를 대조로 자동으로 거를 수 있게 합니다.
{"type":"object","properties":{"product_id":{"type":"string"},"product_attributes":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"value":{"type":["string","null"]},"source_span":{"type":["string","null"]}},"required":["key","value","source_span"]}},"perceived_attributes":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string"},"polarity":{"type":"string","enum":["긍정","부정","혼재"]},"evidence_reviews":{"type":"array","items":{"type":"string"}},"support_count":{"type":"integer"}},"required":["label","polarity","evidence_reviews","support_count"]}}},"required":["product_id","product_attributes","perceived_attributes"]}[
{
"product_id": "PR-3001",
"product_attributes": [
{
"key": "용량",
"value": "15ml",
"source_span": "용량: 15ml"
},
{
"key": "색상",
"value": "21호 라이트",
"source_span": "색상: 21호 라이트"
}
],
"perceived_attributes": [
{
"label": "발색",
"polarity": "긍정",
"evidence_reviews": [
"발색이 선명하고 지속력도 좋아요"
],
"support_count": 1
},
{
"label": "가성비",
"polarity": "긍정",
"evidence_reviews": [
"21호가 생각보다 밝아서 가성비 좋게 잘 샀어요"
],
"support_count": 1
}
]
},
{
"product_id": "PR-3002",
"product_attributes": [
{
"key": "정량",
"value": null,
"source_span": null
}
],
"perceived_attributes": [
{
"label": "가성비",
"polarity": "긍정",
"evidence_reviews": [
"가격 대비 정량이 많아 가성비 최고"
],
"support_count": 1
}
]
},
{
"product_id": "PR-3003",
"product_attributes": [
{
"key": "흡입력",
"value": "12000pa",
"source_span": "흡입력 12000pa"
}
],
"perceived_attributes": [
{
"label": "배터리",
"polarity": "부정",
"evidence_reviews": [
"흡입력은 강한데 배터리가 금방 닳아요"
],
"support_count": 1
},
{
"label": "가성비",
"polarity": "긍정",
"evidence_reviews": [
"가성비는 좋은 편"
],
"support_count": 1
}
]
},
{
"product_id": "PR-3009",
"product_attributes": [
{
"key": "소재",
"value": "나일론",
"source_span": "소재: 나일론"
}
],
"perceived_attributes": [
{
"label": "보온성",
"polarity": "혼재",
"evidence_reviews": [
"가볍고 따뜻해요 가성비 좋아요",
"생각보다 얇아서 한겨울엔 추워요"
],
"support_count": 2
}
]
}
][자동 검증] 1. product_attributes 의 source_span 이 입력 상품 spec_text 의 실제 부분 문자열인지 대조해, 원문에 없는 제품 속성을 지어낸 추출로 판정합니다. 2. perceived_attributes 의 evidence_reviews 각 문장이 입력 reviews 안에 실제로 있는지 대조하고, support_count 가 evidence_reviews 길이와 같은지 확인합니다. 3. polarity 가 혼재인데 evidence_reviews 가 한 건뿐이면 상충 근거 부족으로 표시합니다. [수동 검증] 1. 같은 속성의 표기 흔들림(300ml 과 300 mL)이 하나의 값으로 모였는지 사람이 봅니다. 2. 체감 속성 라벨이 후기 뜻과 맞게 붙었는지(발색·가성비·보온성) 스팟체크합니다.