모두의포트폴리오
PE · FDE 직군을 위한 포트폴리오 밀키트
예전 판입니다 (1판)이 문서는 2026-08-02 에 새 판으로 개정됐습니다. 결과를 읽기만 하던 검토 대시보드를 걷어내고, 운영 담당이 문장으로 적은 조건을 화면에서 직접 확정해야만 질의가 도는 세그먼트 화면으로 다시 썼습니다.최신 판 보기 →
경력루쿠쿠 · 글로벌 커머스 프로덕트 엔지니어(FE) 채용

스토어프론트 화면 구성과 퍼널 지표를 받아 어디서 이탈하는지와 개선안을 짚어주는 도구

루쿠쿠 공고에서 뽑은 세 가지 시그널.

루쿠쿠는 살로몬·FILA 같은 브랜드의 글로벌 커머스에서 상품상세·장바구니·체크아웃·랜딩의 전환율을 Shopify·Headless 스토어프론트로 개선한다. 그래서 이 도구는 루쿠쿠가 다루는 브랜드별 화면 구성과 퍼널 지표가 있어야 의미가 생기고, 일반 조언이 아니라 화면 요소에 붙는 개선안이 된다.

01

브랜드별 전환율 개선 UX 개발

공고가 상품상세·장바구니·체크아웃·랜딩의 전환율 개선을 핵심 업무로 꼽는다. 이탈 지점과 개선안을 짚는 도구가 그 작업의 진입점이다.

전환율 개선상품상세체크아웃
02

Shopify·Headless 스토어프론트

Shopify·Cafe24·Headless 기반 스토어프론트를 구축·개선한다. 화면 구성 요소를 구조로 받아 점검하는 방식이 그대로 맞는다.

ShopifyHeadless스토어프론트
03

기존 에이전시가 못 푸는 문제

커머스 에이전시들이 잘 못 푸는 문제를 푼다는 정체성이라, 화면 단위로 전환 병목을 짚어내는 도구가 차별점이 된다.

글로벌 커머스에이전시문제

포트폴리오 요약

글로벌 커머스 전환율 점검 도구. 스토어프론트 화면 구성과 퍼널 지표를 받아 이탈 지점과 화면별 개선안을 근거 배열과 함께 낸다.

고객 정의

루쿠쿠 프론트엔드 PE 와 브랜드 커머스 운영 담당.

고민 지점

화면 구성 요소와 단계별 퍼널 지표만으로도 이탈 지점과 개선안의 1차안을 만들 수 있고, FE 는 그 제안을 골라 A/B 로 검증하면 된다.

주차별 일정

1주차여기까지로 완성

화면 구성과 퍼널 지표를 넣으면 이탈 지점·개선안을 근거와 함께 내는 도구

상품상세·장바구니·체크아웃 화면의 구성 요소와 단계별 전환·이탈 지표를 넣으면 이탈이 큰 단계와 화면별 개선안을 근거 배열과 함께 내는 웹 도구. 실제 Shopify 연동·세션 수집은 빼고 화면 구성·지표 메타 가정으로만 시작한다(실 트래킹 연동은 빠진 20% 작업이라 W3로 분리).

  1. 1일 · 화면 요소 카탈로그와 퍼널 단계, 지표 스키마 더미 설계
  2. 2-3일 · LLM 개선안 생성, Zod 강제와 요소 인용 가드 연결
  3. 4-5일 · 검토 화면(이탈 지점·개선안 카드, 근거 토글, 퍼널 차트)과 결과 저장
2주차선택 성장

개선안이 실제 이탈 원인과 맞는지 맞춰보고 보정

1주차 제안을 사람 검토자가 정리한 정답 원인과 비교해 헛짚은 구간을 재고, 개선안 우선순위를 이탈폭 기준으로 보정한 v2.

  1. 6-7일 · 정답 원인과 비교해 헛짚은 구간 측정, 우선순위 보정
  2. 8-9일 · judge 루틴으로 제안이 요소·지표를 인용했는지 검사, 일치도 리포트 봇
3주차선택 성장

A/B 실험 카드와 브랜드별 비교로 확장

개선안마다 A/B 실험 설계 카드(가설·지표·분기)를 붙이고, 브랜드별 화면을 나란히 비교해 공통 병목을 모으는 확장판.

  1. 11-12일 · 개선안별 A/B 실험 카드와 브랜드별 비교 확장

데모 · 측정 지표

01

화면 구성·퍼널 지표 한 세트를 넣으면 이탈이 큰 단계와 화면별 개선안, 그 근거가 한 화면에 나오는 걸 시연한다.

02

제안 근거가 모두 입력 화면 요소나 퍼널 지표를 가리키는지 judge 로 검사해 근거 인용율 100%를 보여준다. 단, 정답·데이터를 작성자가 만든 합성 기준이라 성능 검증이 아니라 데모 조건 동작이다.

03

결측 지표·극단 이탈률(0%·100%)·미정의 요소를 일부러 섞은 입력 30종을 넣어도 출력 JSON 형식이 안 깨지고 '미측정·확인필요'로 알리는 걸 시연한다.

04

제안과 합성 정답 원인의 일치도를 Cohen's κ(두 채점자가 우연 이상으로 얼마나 일치하는지 -1~1 점수, 높을수록 일치)로 2주차에 보고한다. 합성 기준 추정이라 실제와 다를 수 있다.

정직 경계선

진짜 성능 검증은 여기서 멈춘다

위 수치는 더미데이터 자가채점이며, 실제 개선 효과는 루쿠쿠 실 스토어프론트 트래픽과 A/B 실험이 있어야 측정 가능하다. 이 포트폴리오는 그 검증을 바로 돌릴 수 있는 상태까지 만든다.

미리 알아둬야 할 것들

수치는 합성 데이터 자가채점이라 성능 증명이 아니다. 면접에서 데모 동작과 실검증 준비 상태로 솔직히 설명한다.

정답을 내가 만들었으니 잘 맞는 게 당연하다. 결측 지표·극단 이탈률·미정의 요소를 더미에 일부러 섞어 쉬운 문제만 푸는 함정을 피한다.

이탈이 큰 단계와 원인이 곧 인과는 아니다. 실데이터 도입 단계에서 A/B 로 인과를 확인하는 과제로 분리한다.

실제 도입 시 합성 정답이 실 트래픽 분석으로 바뀌고 브랜드·시장도 달라진다. 개선안 enum 과 화면 카탈로그를 실 브랜드로 다시 맞추는 일을 도입 과제로 둔다.

더미 데이터

① 인라인 샘플 · ② seed.json 다운로드 · ③ 증강 프롬프트. 세 층 모두 동일한 schema 에서 파생.

funnel_snapshotTABLE· 12 rows

스토어프론트 화면별 구성 요소와 퍼널 단계 지표. 개선안 추론의 입력.

② funnel_snapshot.seed.json 다운로드
① 인라인 샘플 (프리뷰 5 / 12)
snap_idbrand_rawbrand_idstepelementsentereddropped_pctload_ms
F001Salomonsalomonpdp["갤러리","사이즈선택","리뷰","구매버튼"]8,200412,600
F002살로몬salomoncart["수량","쿠폰","배송비안내"]4,800331,200
F003FILAfilacheckout["주소입력","결제수단","약관"]3,200583,400
F004VERISH—landing["히어로배너","베스트상품"]15,00022—
F005Nonfictionnonfictionpdp["갤러리","성분표","구매버튼"]6,1001005,200
③ 증강 프롬프트 (본인 LLM 에 붙여서 N 배 늘리기)
다음 Zod 스키마를 따르는 퍼널 스냅샷을 더 생성하라: z.object({ snap_id: z.string(), brand_raw: z.string(), brand_id: z.string().nullable(), step: z.enum(['landing','pdp','cart','checkout','pay']), elements: z.array(z.string()), entered: z.number(), dropped_pct: z.number().nullable(), load_ms: z.number().nullable() }). 쉬운 데이터만 만들지 말 것 — 다음 하드 케이스를 의도적으로 섞어라: dropped_pct 나 load_ms 가 null 인 미측정 건, brand_id 가 null 인 미등록 신규 브랜드(orphan), 같은 브랜드의 한글·영문 표기 흔들림(brand_raw 다름·brand_id 동일), dropped_pct 0·100 극단 경계값. 추가로 형식 깨뜨리기 시도 3건(타입이 어긋난 행)을 별도 표시해 파서 가드 테스트에 쓴다.
schema (3 층의 단일 출처)
z.object({ snap_id: z.string(), brand_raw: z.string(), brand_id: z.string().nullable(), step: z.enum(['landing','pdp','cart','checkout','pay']), elements: z.array(z.string()), entered: z.number(), dropped_pct: z.number().nullable(), load_ms: z.number().nullable() })

기술 상세 · 아키텍처·운영·출력 스키마

기술 스택 매핑
TypeScript점검 엔진과 화면의 타입 안전한 로직. 구성·지표 파싱과 제안 모델 호출을 묶는다.
React화면별 이탈 지점·개선안 카드와 퍼널 시각화 컴포넌트를 만든다.
Next.js운영 담당이 화면을 열어 제안과 근거를 보는 검토 화면을 렌더링한다.
Tailwind퍼널 단계·개선안 카드의 일관된 스타일을 빠르게 잡는다.
JavaScript퍼널 지표 차트·인터랙션 동작 처리.
Claude화면 구성과 퍼널 지표를 보고 이탈 원인 가설과 화면별 개선안을 근거와 함께 생성한다.
LLM 선택
model
Claude Sonnet (개선안 생성) + GPT-4o-mini (judge, 제안이 실제 화면 요소·지표를 인용했는지 검사)
prompt
few-shot 개선안 예시 3건 + Zod 스키마 강제 + 제안은 입력 화면 요소·단계 안에서만 가리키게 막는 가드 구성.
rationale
커머스 전환 휴리스틱이 정형적이라 외부 검색(RAG)은 불필요하고, 화면 구성·지표를 컨텍스트에 직접 넣는 편이 정확하다. 인용 검사는 작은 judge 모델로 분리해 비용을 낮춘다.
결정 게이트
1주차 끝화면 구성·지표 한 세트를 넣으면 이탈 지점과 개선안이 스키마대로 깨지지 않고 나오는가.

✓ pass → 여기서 멈춰도 운영 초안 도구로 완결. 더 키우려면 2주차에서 정답 원인과 비교해 헛짚은 구간을 보정한다.

2주차 끝제안 일치도가 보정 전보다 오르고 우선순위가 이탈폭과 맞는가.

✓ pass → 신뢰가 붙으면 3주차에서 A/B 실험 카드와 브랜드 비교로 넓힌다.

재사용 레이어 · 코어 70% / 도메인 30%
core (재사용 가능)
  • Zod 스키마 강제와 parse 실패 시 재요청 가드
  • 제안이 입력 화면 요소·지표를 인용했는지 검사하는 judge 루틴
  • 제안 대 정답 원인 일치도를 매일 내는 리포트 봇
  • 결측 지표·극단 이탈률·미정의 요소를 섞는 spot-check 샘플러
  • 퍼널 단계를 시각화하는 뷰어
domain (교체 대상)
  • 화면 요소 카탈로그와 퍼널 단계 정의
  • 개선안 enum(copy·layout·trust_signal·speed·form 등)은 도메인별로 갈아끼운다(구독 서비스면 온보딩·요금제 단계로 교체).
  • 브랜드 페르소나와 커머스 도메인 용어 사전
출력 스키마 · conversion_suggestion

퍼널 스냅샷 한 건에 대한 이탈 지점과 화면별 개선안.

schema (JSON Schema)
z.object({ snap_id: z.string(), bottleneck: z.enum(['landing','pdp','cart','checkout','pay','unknown']), suggestions: z.array(z.object({ kind: z.enum(['copy','layout','trust_signal','speed','form']), detail: z.string() })).min(0), evidence: z.array(z.object({ field: z.enum(['elements','dropped_pct','load_ms','step']), note: z.string() })).min(1), hedge: z.string() })
모범 출력 (3)
[
  {
    "snap_id": "F003",
    "bottleneck": "checkout",
    "suggestions": [
      {
        "kind": "form",
        "detail": "주소입력 자동완성·필드 축소로 입력 부담 완화"
      },
      {
        "kind": "speed",
        "detail": "체크아웃 로드 3.4초를 자산 지연로딩으로 단축"
      }
    ],
    "evidence": [
      {
        "field": "dropped_pct",
        "note": "체크아웃 이탈 58%로 가장 큼"
      },
      {
        "field": "load_ms",
        "note": "로드 3400ms 로 느림"
      }
    ],
    "hedge": "원인 추정은 합성 지표 기준이라 실 A/B로 확인 필요."
  },
  {
    "snap_id": "F005",
    "bottleneck": "pdp",
    "suggestions": [
      {
        "kind": "speed",
        "detail": "갤러리 이미지 최적화로 5.2초 로드 단축"
      }
    ],
    "evidence": [
      {
        "field": "dropped_pct",
        "note": "이탈 100% 극단값이라 측정 오류 가능성도 표기"
      },
      {
        "field": "load_ms",
        "note": "5200ms 매우 느림"
      }
    ],
    "hedge": "이탈 100%는 합성 경계값이라 데이터 점검 필요. 합성 기준."
  },
  {
    "snap_id": "F004",
    "bottleneck": "unknown",
    "suggestions": [],
    "evidence": [
      {
        "field": "load_ms",
        "note": "load_ms 미측정이라 속도 원인 판단 보류, 확인필요"
      }
    ],
    "hedge": "지표 결측이라 판정 보류. 합성 기준."
  }
]
검증 노트 (자동 vs 수동)

bottleneck·suggestions.kind enum, evidence min(1)은 Zod 로 자동 검증한다. bottleneck 이 입력 step 중 이탈 최대 단계와 맞는지, 근거가 지표를 인용했는지, hedge 의 합성 기준 표기는 judge 와 수동 spot-check 로 검증한다.