레이븐리
경력근거: 유저 행동 데이터(스캔·비교·미구매) 수집 파이프라인 및 분석 대시보드 유지보수
※ 실제 산출물이 아닌 AI 예측 시안입니다.
이 도구가 보여주는 것은 행동 이벤트 파이프라인과 규칙 기반 퍼널 집계, 근거 인용 리포트 생성 기술이며, 리테일 마케팅 전략이나 브랜드 컨설팅 전문성을 주장하지 않습니다. 다만 이 사슬이 말이 되려면 레이븐리 TravConnect 라는 맥락, 즉 스캔·비교·미구매 로그로 브랜드에게 인사이트를 파는 B2B 데이터 플랫폼이라는 문제가 있어야 의미가 있습니다. ‘로그에 없는 원인을 지어내지 않는다’ 는 각도는 다른 도메인 데이터로는 그대로 옮기기 어렵습니다. 실제 마케팅 액션의 효과는 브랜드 실행·매출 데이터가 있어야 검증되고, 면접에서 모르는 부분은 모른다고 말하는 편이 낫습니다.
‘유저 행동 데이터(스캔·비교·미구매) 수집 파이프라인 및 분석 대시보드 유지보수’ 가 주요업무입니다. 원시 이벤트를 퍼널 숫자로 집계하는 파이프라인이 핵심 보여줄 대상입니다.
‘고객사 대상 데이터 리포트 설계·자동화 — 마케팅 의사결정에 쓰이는 숫자를 만드는 일’ 이 업무입니다. 숫자를 스토리로 전달하는 리포트가 제품입니다.
‘데이터를 숫자가 아니라 고객이 행동하게 만드는 스토리로 전달’ 을 명시합니다. 집계된 숫자에 근거 이벤트를 붙여 ‘왜’ 를 설명하는 각도가 필요합니다.
매장에서 고객이 상품을 스캔·비교하고 구매하지 않은 행동 로그를 받아, 유입·비교·이탈 퍼널을 규칙으로 집계하고, 어느 단계에서 얼마나 떨어졌는지를 근거 이벤트와 함께 설명하는 브랜드 리포트를 자동으로 만듭니다. 집계는 규칙(SQL)으로 결정되고 LLM 은 그 숫자를 사람이 읽을 문장으로 바꾸는 보조만 맡아, 로그에 없는 원인을 지어내지 못하게 합니다. 1주차만으로 완성품이고, 리포트 타당성 검토(2주차)·고객사별 자동 배포(3주차)로 키웁니다. (근거는 채용공고 정렬입니다.)
레이븐리 TravConnect PE. 브랜드 담당자에게 매주 ‘왜 안 팔렸는가’ 리포트를 손으로 만들어 보내던 일을 끝내고, 행동 로그에서 퍼널 숫자와 근거를 자동으로 뽑되 지어낸 원인은 걸러진 리포트를 받고 싶은 사람입니다.
행동 이벤트를 퍼널 단계로 규칙 집계하고 각 숫자에 근거 이벤트를 매면, (a) 유입·비교·이탈이 규칙으로 정확히 집계되고, (b) LLM 이 그 숫자를 근거 이벤트를 인용한 설명 문장으로 바꾸며, (c) 로그에 없는 원인은 지어내지 않아, 브랜드 담당자가 바로 읽고 판단할 근거 있는 리포트를 낸다는 걸 보여줄 수 있습니다.
스캔·비교·미구매 로그를 유입·비교·이탈 퍼널로 규칙 집계하고, 각 숫자에 근거 이벤트를 붙여 ‘왜 안 팔렸는가’ 를 설명하는 리포트를 만드는 동작하는 도구입니다. 로그에 없는 원인은 지어내지 않습니다.
브랜드 담당자 페르소나 2명이 리포트의 숫자·설명이 로그와 맞는지 라벨링하고, 지어낸 원인·집계 오류가 있었는지 대조하는 대시보드입니다.
고객사(브랜드·리테일러)별 템플릿으로 리포트를 자동 생성·정기 배포하고, 성수동 매장 스크린 연동을 가정한 실시간 지표 갱신을 붙이는 단계입니다.
행동 로그 30일치를 넣으면, 유입·비교·이탈 퍼널을 집계해 근거 이벤트와 함께 리포트를 만드는 걸 시연합니다
집계 수치가 규칙(SQL) 계산과 100% 일치하는지 자동 대조합니다. LLM 이 표에 없는 숫자를 쓰면 차단되는 걸 보여줍니다
일부러 심은 데이터 부족(표본 5건 미만) 케이스 20종을 넣으면 단정 대신 ‘판단 보류’ 로 답하는 걸 보여줍니다
내가 만든 정답 30편 중 집계·근거 인용이 일치한 게 26편(87%). 단, 정답과 로그를 모두 내가 만든 합성 기준이라 ‘성능 검증’ 이 아니라 ‘데모 조건 동작’ 임을 밝힙니다
위 수치는 전부 작성자가 만든 더미데이터 자가채점이며, 실제 리포트 유용성·마케팅 효과는 레이븐리 실 매장 로그와 실 브랜드 담당자, 매출 데이터가 있어야 측정 가능합니다. 이 도구는 그 검증을 바로 돌릴 수 있는 상태까지 만듭니다.
이건 브랜드·실데이터 없이 혼자 만든 포트폴리오라, 수치는 합성 데이터 자가채점이라 성능 증명이 아닙니다. 면접에서 ‘데모 동작 + 실검증 준비 상태’ 로 솔직히 설명합니다
정답을 작성자가 만들었으니 잘 맞는 것이 당연합니다. 결측 이벤트·중복 스캔·표본 부족을 더미에 일부러 섞어, 깔끔한 로그만 다루는 게 아님을 보여줍니다
이 포트폴리오가 보여주는 것은 이벤트 파이프라인·퍼널 집계·근거 인용 기술이지 리테일 마케팅 전략 전문성이 아닙니다. 실제 마케팅 액션의 효과는 브랜드 실행·매출 데이터가 있어야 하고, 면접에서 모르는 부분은 모른다고 말하는 편이 낫습니다
‘왜 안 팔렸는가’ 는 로그로 다 설명되지 않습니다(가격·경쟁·외부 요인). 로그로 보이는 것만 근거로 말하고 나머지는 단정하지 않아, 과잉 해석을 막습니다
실제 도입 시 달라지는 것 명시합니다. 실 매장 로그 규모·이벤트 정의는 더미와 다르므로 퍼널 규칙·중복 임계값을 다시 맞춰야 하고, 검토자도 실 브랜드 담당자로 교체해야 합니다(도입 단계 과제로 분리)
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
매장에서 발생한 고객 행동 이벤트. 퍼널 집계의 원천이자 근거입니다. 결측(상품 미매핑)·중복 스캔·표본 부족 상품·경계(비교만 하고 이탈)를 일부러 섞어, 규칙 집계가 결측·중복을 정직하게 다루는지 보여줍니다.
| event_id | store_id | sku | ts | type | session_id |
|---|---|---|---|---|---|
| e_001 | st_seongsu | P-100 | 2026-05-01T13:00:00 | scan | sess_1 |
| e_002 | st_seongsu | P-100 | 2026-05-01T13:01:00 | compare | sess_1 |
| e_003 | st_seongsu | P-101 | 2026-05-01T13:01:30 | compare | sess_1 |
| e_004 | st_seongsu | P-100 | 2026-05-01T13:03:00 | exit | sess_1 |
| e_005 | st_seongsu | P-100 | 2026-05-01T14:00:00 | scan | sess_2 |
아래 JSON Schema 에 맞는 매장 행동 이벤트 40행 JSON 배열로 생성합니다. 세션 여러 개, 매장 2~3곳.
{"type":"object","properties":{"event_id":{"type":"string"},"store_id":{"type":"string"},"sku":{"type":["string","null"]},"ts":{"type":"string"},"type":{"type":"string","enum":["scan","compare","purchase","exit"]},"session_id":{"type":"string"}},"required":["event_id","store_id","ts","type","session_id"]}
쉬운 데이터만 만들지 말 것. 하드 케이스 의도적 혼입: (1) sku 가 null 인 미매핑 스캔 1~2건, (2) 같은 세션 내 5초 이내 중복 스캔 1~2쌍(중복 제거 테스트), (3) 표본이 3건 미만인 상품 1~2개(표본 부족 판단 보류 테스트), (4) compare 만 하고 purchase 없이 exit 하는 세션 다수. JSON 배열만.{"type":"object","properties":{"event_id":{"type":"string"},"store_id":{"type":"string"},"sku":{"type":["string","null"]},"ts":{"type":"string"},"type":{"type":"string","enum":["scan","compare","purchase","exit"]},"session_id":{"type":"string"}},"required":["event_id","store_id","ts","type","session_id"]}상품 마스터. 이벤트의 sku 를 상품명·카테고리로 잇습니다. 미등록 sku·별칭·가격 결측을 섞어, 미매핑 이벤트를 리포트에서 어떻게 처리하는지 보여줍니다.
| sku | name | category | price_krw | brand |
|---|---|---|---|---|
| P-100 | 아쿠아 세럼 30ml | beauty | 32,000 | 브랜드A |
| P-101 | 아쿠아 세럼 리필 | beauty | 21,000 | 브랜드A |
| P-102 | 데일리 후드 티 | fashion | 49,000 | 브랜드B |
| P-103 | 캐릭터 키링 | goods | — | 브랜드C |
| P-104 | 립밤 세트 | beauty | 15,000 | 브랜드A |
아래 JSON Schema 에 맞는 상품 마스터 20행 JSON 배열로 생성합니다. category 는 beauty·fashion·goods 혼합.
{"type":"object","properties":{"sku":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"},"price_krw":{"type":["integer","null"]},"brand":{"type":"string"}},"required":["sku","name","category","brand"]}
쉬운 데이터만 만들지 말 것. 하드 케이스 의도적 혼입: (1) price_krw 가 null 인 결측 1~2건, (2) 같은 상품의 별칭 표기(아쿠아 세럼 30ml / 아쿠아세럼(구표기)) 1쌍, (3) scan_event 에는 등장하지만 마스터에 없는 sku 를 만들어 미매핑을 유발(반대로 마스터에만 있고 이벤트 없는 상품도 1~2건). JSON 배열만.{"type":"object","properties":{"sku":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"},"price_krw":{"type":["integer","null"]},"brand":{"type":"string"}},"required":["sku","name","category","brand"]}| Python | 행동 이벤트 수집·퍼널 집계 파이프라인과 리포트 생성 오케스트레이션 |
| Node.js | 리포트 조회·배포 API 게이트웨이 |
| React | 브랜드용 리포트·대시보드 화면(퍼널 차트 + 근거 이벤트 드릴다운) |
| Next.js | 리포트 페이지 라우팅·서버 렌더 |
| Flutter | TravPick Club 앱 쪽 행동 이벤트 수집 훅(스캔·비교) |
| SQL | scan_event / product_master 단일 진실원과 퍼널 집계 쿼리 |
✓ pass → 그대로 멈춰도 완결입니다. 더 키우려면 2주차(리포트 타당성 검토)로 진행합니다.
✓ pass → 여기서 멈춰도 완결입니다. 더 키우면 3주차(고객사별 자동 배포)로 진행합니다.
상품·기간별 퍼널 리포트. 각 단계 수치(funnel)와 그 근거 이벤트(evidence), 사람이 읽을 설명(narrative), 데이터 부족 플래그(insufficient)를 한 스키마에 담아, 집계 표에 없는 수치나 로그에 없는 원인을 지어내지 않았는지 객관 검증합니다.
{"type":"object","properties":{"sku":{"type":"string"},"period":{"type":"string"},"funnel":{"type":"object","properties":{"scan":{"type":"integer"},"compare":{"type":"integer"},"purchase":{"type":"integer"}},"required":["scan","compare","purchase"]},"drop_stage":{"type":["string","null"],"enum":["scan_to_compare","compare_to_purchase",null]},"narrative":{"type":"string"},"evidence":{"type":"array","items":{"type":"string"}},"insufficient":{"type":"boolean"}},"required":["sku","period","funnel","narrative","evidence","insufficient"]}[
{
"input_ref": "P-100, 2026-05-01 (비교 후 이탈 다수)",
"output": {
"sku": "P-100",
"period": "2026-05-01",
"funnel": {
"scan": 2,
"compare": 1,
"purchase": 1
},
"drop_stage": "compare_to_purchase",
"narrative": "아쿠아 세럼 30ml 는 스캔 2건 중 1건이 비교 단계에서 리필(P-101) 과 함께 검토된 뒤 구매 없이 이탈했습니다. 다른 1건은 구매로 이어졌습니다. 비교 후 이탈이 관찰되나 표본이 적어 단정은 어렵습니다.",
"evidence": [
"e_001",
"e_002",
"e_003",
"e_004",
"e_007"
],
"insufficient": false
}
},
{
"input_ref": "P-103, 2026-05-02 (표본 부족 → 판단 보류)",
"output": {
"sku": "P-103",
"period": "2026-05-02",
"funnel": {
"scan": 0,
"compare": 0,
"purchase": 0
},
"drop_stage": null,
"narrative": "캐릭터 키링은 이 기간 유효 스캔이 집계되지 않았습니다(exit 1건만 관찰). 표본이 부족해 이탈 원인을 단정하지 않고 판단을 보류합니다.",
"evidence": [
"e_010"
],
"insufficient": true
}
},
{
"input_ref": "미매핑 sku(null) 이벤트 처리",
"output": {
"sku": "UNMAPPED",
"period": "2026-05-02",
"funnel": {
"scan": 1,
"compare": 0,
"purchase": 0
},
"drop_stage": null,
"narrative": "상품 마스터에 매핑되지 않은 스캔 1건이 있습니다(sku 없음). 어느 상품인지 확정할 수 없어 상품별 리포트에 넣지 않고 ‘미매핑’ 으로 분리해 알립니다.",
"evidence": [
"e_009"
],
"insufficient": true
}
}
][자동 검증] 1. 출력이 스키마를 통과하는가(형식·필수 필드). 2. funnel 의 수치가 규칙(SQL) 집계 결과와 정확히 일치하는가(LLM 이 숫자를 바꾸지 못함). 3. evidence 의 event_id 가 scan_event 에 실재하고, narrative 가 인용한 사실이 evidence 로 뒷받침되는가(지어낸 원인 차단). 4. 표본이 임계 미만이면 insufficient=true 이고 narrative 가 단정하지 않는가. [수동 검증] 1. 브랜드 담당자 페르소나 2명이 리포트 타당성 라벨링 → bootstrap Cohen’s κ 하한 ≥ 0.6. 2. 지어낸 원인 5% 사람 점검.
근거: 유저 행동 데이터(스캔·비교·미구매) 수집 파이프라인 및 분석 대시보드 유지보수