라플라스테크놀로지스는 주문·광고·재고·리뷰를 라플라스 애널리틱스로 통합해 대시보드·알림을 주는 회사라, 흩어진 데이터에서 이상·기회를 짚는 이 도구는 라플라스가 통합하는 다채널 이커머스 데이터가 있어야 권고를 검증할 수 있다.
주문·고객·광고·재무·재고·리뷰·검색 트렌드를 라플라스에 통합해 대시보드·알림·AI Agent 를 제공. 통합 데이터를 한 스키마로 닫아야 이상·기회를 짚는다.
고객 문제를 직접 이해하고 빠른 실행·실험으로 제품 가설을 실제 고객 가치로 연결. 권고가 실제로 맞았는지 확인하는 루프가 핵심.
프론트·백·데이터·인프라 경계를 두지 않고 문제 해결 중심. SQL ELT·3rd Party API·k8s 까지 다뤄, 통합 파이프라인을 직접 닫는다.
주문·재고·광고·리뷰를 한 스키마로 모아 한 화면에서 본다. LLM 이 이상(매출 급감·재고 부족·리뷰 악화) Top3 와 권고 액션 3건을 짚고, 매일 운영 리포트를 슬랙으로 보낸다. 1주차만으로 완성품이고, 권고가 실제로 맞았는지 확인(2주차)·알림 자동화(3주차)로 키운다. (근거는 채용공고 정렬이다.)
여러 도구에 흩어진 이커머스 지표를 매번 손으로 모아 이상을 찾는 상황을 끝내고, 그 권고가 실제로 효과가 있었는지까지 확인하고 싶은 라플라스 PE.
주문·재고·광고·리뷰를 한 스키마로 묶으면, LLM 이 (a) 이상 Top3 와 (b) 권고 액션 3건을 몇 초 안에 답하고, (c) 다음 기간 실측치로 그 권고가 맞았는지 확인한다.
주문·재고·광고·리뷰를 한곳에 모아, 이상 Top3 와 권고 액션을 LLM 이 만들고 매일 슬랙으로 보내는 동작하는 도구.
지난 기간 권고의 예상 효과를 다음 기간 실측치와 맞춰보고, 운영자 2명이 권고 타당성을 라벨링해 신뢰도를 보여주는 대시보드.
확인된 권고를 바탕으로 임계값 기반 알림을 자동 발송해, 운영자가 이상을 놓치지 않게 하는 단계.
이상 시나리오 10개를 넣으면 이상 Top3 와 권고 액션 3건이 몇 초 안에 나오는 걸 시연으로 보여준다
일부러 만든 악성·결측 입력 30종을 넣어도 출력 형식(스키마)이 한 번도 안 깨진다. 형식 검증(Zod)을 자동 통과한다
매일 운영 리포트가 슬랙으로 자동 발송되는 걸 14일치 시연으로 보여준다
내가 만든 정답 30개 중 이상 Top3 가 일치한 게 25개(83%). 단, 정답과 데이터를 모두 내가 만든 합성 기준이므로 ‘성능 검증’ 이 아니라 ‘데모 조건에서의 동작’ 이다
위 수치는 전부 작성자가 만든 더미데이터 자가채점이며, 실제 적중률·일치도는 라플라스 실 고객사 데이터 + 실 운영자 검수가 있어야 측정 가능하다. 이 도구는 ‘그 검증을 바로 돌릴 수 있는 상태’ 까지 만든다.
이건 고객·실데이터 없이 혼자 만든 포트폴리오다. 모든 수치는 합성 데이터 자가채점이라 ‘성능 증명’ 이 아니다. 면접에서 솔직히 ‘데모 조건 동작 + 실검증 준비 상태’ 로 설명하는 게 오히려 신뢰를 준다
정답을 내가 만들었으니 잘 맞는 게 당연하다. 그래서 일부러 헷갈리는 결측·악성·경계 케이스를 더미에 섞어, 쉬운 문제만 푸는 게 아님을 보여줘야 한다
‘무엇 때문에 매출이 급감했다’ 는 상관일 뿐 인과가 아닐 수 있다. 그래서 단정 표현을 강제로 누그러뜨리고 별도 LLM 검사로 우회 표현까지 거른다
채널·상품 표기가 제각각이라 통합이 깨진다. 표기 정규화로 묶고, 못 묶은 건 추측하지 말고 ‘미매핑’ 으로 알린다
실제 도입 시 달라지는 것 명시. 실 고객사 분포는 더미와 다르므로 임계·기준을 다시 맞춰야 하고, 운영자 검수도 실제 인력으로 교체해야 한다(도입 단계 과제로 분리)
① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.
채널·상품별 일일 주문·매출 로그. 인사이트 LLM 이 가장 먼저 질의하는 테이블. 운영 현실대로 결측(광고비 미연동)·미등록 신상품·급감 이상치를 일부러 섞어, 쉬운 데이터만 푸는 게 아님을 보여준다.
| date | channel | sku | sku_id | orders | revenue_krw | ad_spend_krw |
|---|---|---|---|---|---|---|
| 2026-05-04 | smartstore | 콜드브루 1L | m_coldbrew | 320 | 4,480,000 | 600,000 |
| 2026-05-04 | coupang | 콜드브루 1L | m_coldbrew | 210 | 2,940,000 | 520,000 |
| 2026-05-04 | own_mall | 원두 200g | m_bean200 | 88 | 1,408,000 | — |
| 2026-05-05 | smartstore | 콜드브루1L | m_coldbrew | 318 | 4,452,000 | 610,000 |
| 2026-05-05 | coupang | 드립백 10개입(신상) | — | 140 | 1,820,000 | 300,000 |
아래 Zod 스키마에 맞는 이커머스 주문 로그 14일치 JSON 배열로 생성. 채널 3곳, SKU 5종 분포 포함.
z.object({ date: z.string(), channel: z.enum(["smartstore","coupang","own_mall"]), sku: z.string(), sku_id: z.string().nullable(), orders: z.number().int(), revenue_krw: z.number().int(), ad_spend_krw: z.number().int().nullable() })
쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: (1) sku 별칭 표기 혼입('콜드브루 1L'/'콜드브루1L' 처럼 sku_id 로 정규화돼야 함), (2) 미등록 신상품(sku_id=null) 1~2건, (3) ad_spend_krw=null 결측 2~3건, (4) orders=0 인 급감 이상치 1건 + 평소 2배 급증 1건. JSON 배열만.z.object({ date: z.string(), channel: z.enum(["smartstore","coupang","own_mall"]), sku: z.string(), sku_id: z.string().nullable(), orders: z.number().int(), revenue_krw: z.number().int(), ad_spend_krw: z.number().int().nullable() })상품·채널별 리뷰 평점·키워드. 리뷰 악화 이상의 분모. 평점 결측·미매핑 sku 를 일부러 섞어, 리뷰 인사이트가 결측을 만났을 때도 안 깨지는지 보여준다.
| date | sku_id | channel | rating_1to5 | neg_keyword |
|---|---|---|---|---|
| 2026-05-04 | m_coldbrew | smartstore | 4.6 | — |
| 2026-05-05 | m_coldbrew | smartstore | 4.5 | — |
| 2026-05-06 | m_coldbrew | smartstore | 3.1 | 배송 지연 |
| 2026-05-06 | m_coldbrew | coupang | 2.8 | 포장 파손 |
| 2026-05-07 | m_bean200 | own_mall | 4.4 | — |
아래 Zod 스키마에 맞는 external_reviews 40행 JSON 배열을 orders_daily 의 sku_id·channel 과 매칭되도록 생성.
z.object({ date: z.string(), sku_id: z.string().nullable(), channel: z.enum(["smartstore","coupang","own_mall"]), rating_1to5: z.number().nullable(), neg_keyword: z.string().nullable() })
쉬운 데이터만 만들지 말 것 — 하드 케이스: (1) rating_1to5=null 결측 1~2건, (2) sku_id=null 미매핑 1건, (3) 특정 채널 평점이 2~3점대로 급락하는 악화 시퀀스 1세트(neg_keyword 동반). JSON 배열만.z.object({ date: z.string(), sku_id: z.string().nullable(), channel: z.enum(["smartstore","coupang","own_mall"]), rating_1to5: z.number().nullable(), neg_keyword: z.string().nullable() })| React | Next.js 운영 대시보드(이상 카드 + 권고 적중률 차트) 프론트 렌더링 + Zod 런타임 검증 |
| k8s | Gitops 기반 ingest 워커·리포트 봇·인사이트 API 배포(오토스케일) |
| FastAPI | 인사이트 API(`POST /insights`: 기간 입력 → output_schema 반환) + 일일 리포트 봇 |
| SQL | 3rd Party API 소싱 데이터의 ELT(원천 → PostgreSQL upsert) + 뷰(`v_daily_kpi`) |
✓ pass → 그대로 멈춰도 완결. 더 키우고 싶으면 2주차(권고가 맞았는지 확인)로 진행.
✓ pass → 여기서 멈춰도 완결. 더 키우면 3주차(이상 알림 자동화)로 진행.
1) 이상 카드(해석·근거 지표·완곡 표현), 2) 권고 액션 3건 + 예상 효과 + 확신도, 3) 다음 기간 실측치로 적중 여부 검증. 권고→확인 한 주기를 한 스키마에 담음.
z.object({ period: z.string(), insights: z.array(z.object({ insight_id: z.string(), headline: z.string().min(10), interpretation: z.string().min(20), evidence_metrics: z.array(z.object({ name: z.string(), value: z.union([z.number(), z.string()]) })).min(1), hedge: z.string().min(8).nullable() })).min(3).max(5), actions: z.array(z.object({ target: z.string(), reason: z.string().min(20), expected_effect: z.string(), confidence: z.enum(["low","mid","high"]) })).min(3).max(3), verification: z.object({ prior_period: z.string(), hit_rate: z.number(), hits: z.array(z.object({ target: z.string(), predicted: z.string(), actual: z.string(), hit: z.boolean() })) }).nullable() })[
{
"period": "2026-05-06",
"insights": [
{
"insight_id": "ins_0506_01",
"headline": "쿠팡 콜드브루 매출 급감",
"interpretation": "쿠팡 콜드브루 주문 0건 — 평소 210건 대비 전멸. 광고비는 그대로 집행. 품절 또는 노출 차단 의심.",
"evidence_metrics": [
{
"name": "orders",
"value": 0
},
{
"name": "prev_avg_orders",
"value": 210
},
{
"name": "ad_spend_krw",
"value": 500000
}
],
"hedge": "표본 1일 — 노출 차단 여부는 채널 콘솔 확인 필요."
},
{
"insight_id": "ins_0506_02",
"headline": "콜드브루 리뷰 평점 하락",
"interpretation": "스마트스토어 콜드브루 평점 4.5→3.1. ‘배송 지연’ 키워드 동행.",
"evidence_metrics": [
{
"name": "rating_1to5",
"value": 3.1
},
{
"name": "neg_keyword",
"value": "배송 지연"
}
],
"hedge": "리뷰 표본 소수 — 추세 단정 어려움."
},
{
"insight_id": "ins_0506_03",
"headline": "원두 자체몰 안정 유지",
"interpretation": "원두 200g 자체몰 주문·평점 안정. 광고비 미연동이라 ROAS 산출 불가.",
"evidence_metrics": [
{
"name": "orders",
"value": 90
},
{
"name": "ad_spend_krw",
"value": "null"
}
],
"hedge": "광고비 결측으로 효율 비교 보류."
}
],
"actions": [
{
"target": "쿠팡 콜드브루",
"reason": "주문 0건 + 광고비 집행 중 — 품절/노출 상태를 즉시 점검",
"expected_effect": "노출 복구 시 주문 회복",
"confidence": "high"
},
{
"target": "콜드브루 배송",
"reason": "리뷰 ‘배송 지연’ 급증 — 물류 SLA 점검",
"expected_effect": "평점 회복",
"confidence": "mid"
},
{
"target": "원두 광고 연동",
"reason": "광고비 미연동으로 효율 측정 불가 — 트래킹 연결",
"expected_effect": "ROAS 가시화",
"confidence": "mid"
}
],
"verification": null
},
{
"period": "2026-05-08",
"insights": [
{
"insight_id": "ins_0508_01",
"headline": "스마트스토어 콜드브루 급증",
"interpretation": "주문 610건 — 평소 2배. 평점 4.7 동반, 자연 수요로 보임.",
"evidence_metrics": [
{
"name": "orders",
"value": 610
},
{
"name": "rating_1to5",
"value": 4.7
}
],
"hedge": "프로모션 여부 미확인 — 단발 가능성."
}
],
"actions": [
{
"target": "콜드브루 재고",
"reason": "급증 지속 시 품절 위험 — 발주 선제",
"expected_effect": "품절 방지",
"confidence": "high"
},
{
"target": "쿠팡 콜드브루",
"reason": "전일 0건 후 회복 확인 필요",
"expected_effect": "회복 확인",
"confidence": "mid"
},
{
"target": "드립백 신상품",
"reason": "sku_id 미등록 — 마스터 등록해 추적 시작",
"expected_effect": "추적 가능",
"confidence": "high"
}
],
"verification": {
"prior_period": "2026-05-06 권고",
"hit_rate": 0.67,
"hits": [
{
"target": "쿠팡 콜드브루",
"predicted": "노출 복구 시 회복",
"actual": "5/8 회복",
"hit": true
},
{
"target": "콜드브루 배송",
"predicted": "평점 회복",
"actual": "여전히 2점대",
"hit": false
},
{
"target": "원두 광고 연동",
"predicted": "ROAS 가시화",
"actual": "연동 완료",
"hit": true
}
]
}
}
]자동: (1) Zod parse, (2) evidence_metrics.name 이 입력 스키마 실제 메트릭 이름, (3) 인과 단정 토큰 검출 + LLM-as-judge 평가, (4) 권고 적중률 자동 계산. 수동: 운영자 2명 비동기 라벨 → bootstrap Cohen’s κ CI 하한 ≥ 0.6, judge 인간 spot check 5%. verification 은 차기간 실측치 자동 조인.