# ADSUM 애드섬 — 기획·설계

> 위시켓 「마케팅 성과 자동 집계 및 인사이트 도출 대시보드 개발」 (예산 700만 · 30일 · 지원자 61명)
> 원 공고 전사본: [기능명세(의뢰자 원본).txt](../기능명세(의뢰자%20원본).txt) · 원본 이미지: `원본기획/`

---

## 1장. 니즈 — 명시된 것과 숨어 있는 것

### 명시된 니즈

| # | 요구 | 공고 표현 |
|---|---|---|
| N1 | 4개 채널 광고 성과 자동 수집 | "메타, 구글, 카카오모먼트, 네이버 4개 채널 API 연동 · 일별 배치" |
| N2 | 일/주/월 자동 집계 대시보드 | "광고비, 매출, ROAS, CTR 등 핵심 지표 표기" |
| N3 | 채널별·전체 성과 비교 | "채널별 및 전체 성과 비교가 가능한 웹 대시보드" |
| N4 | 소재 이미지 바로보기 | "소재 리스트 클릭 시 이미지 바로보기(URL 연동)" |
| N5 | 소재별 목표 CPA 트래킹 | "목표 CPA를 초과하는 소재를 매일 자동으로 트래킹" |
| N6 | 베스트/워스트 소재 + 인사이트 | "ROAS 기준 · 소재 디자인 요소 분석 포함 · MCP·클로드 활용" |
| N7 | 로그인·권한, 채널 설정 페이지 | "사내 인원 접속을 위한 로그인 및 권한 관리" |
| N8 | 반응형(PC·모바일), 클라우드 인프라 | "PC 및 모바일 환경에서 확인 가능한 반응형" |

### 숨은 니즈 — 문장 뒤에 있는 것

| 단서 | 읽히는 것 |
|---|---|
| **"엑셀을 활용한 수작업 데이터 트래킹이 한계에 도달"** | 지금 이미 매일 사람이 붙어 있습니다. 자동화의 목적은 리포트가 아니라 **그 사람의 시간**입니다. 화면이 예뻐도 손이 계속 가면 실패입니다. |
| **"화려한 디자인보다 정확한 데이터 집계와 직관적 정보 구조가 최우선"** | 이 문장은 디자인을 낮추라는 뜻이 아니라 **숫자를 믿을 수 있어야 한다**는 뜻입니다. 신뢰의 대부분은 "이 숫자가 확정인가"에서 나옵니다. |
| **"협업 예정 인력: 퍼포먼스 마케터 1인, 대표"** | 실사용자가 사실상 한 명입니다. 온보딩 문서보다 **화면 안의 설명**이 중요합니다. 동시에 대표는 경영 숫자(전체 ROAS)를, 마케터는 소재 단위를 봅니다 — **같은 데이터를 다르게 봅니다.** |
| **"기획 상태: 필요한 내용을 간단히 정리한 상태"** | 상세 정의가 아직 없습니다. 착수 후 정의해야 할 항목을 **미리 목록화**해 오는 쪽이 유리합니다. |
| **우대사항에 "카카오모먼트 사전 API 권한 신청 프로세스에 대한 이해와 일정 조율"** | 이미 한 번 데어 보셨거나 알아보신 흔적입니다. **일정 리스크를 인지하고 계십니다.** |
| **"자동 온/오프 제어는 불필요, 확인 후 조치는 직접"** | 판단은 사람이 합니다. 그러면 시스템의 역할은 **판단 근거를 정확히 주는 것**이고, 근거가 틀리면 시스템이 없느니만 못합니다. |
| **"기술적으로 더 나은 방식을 제안해주실 수 있는 업체 우대"** | 요구사항을 그대로 받아 적는 지원자를 원하지 않습니다. |

---

## 2장. 리서치 — 그대로 만들면 작동하지 않는 지점

우선순위: `그대로 만들면 작동하지 않음` > `운영 중 반드시 터짐` > `있으면 좋음`

### ★ 발견 1 — "매출"을 주는 API가 4개 중 어디에도 없습니다

요구사항 2-2는 **광고비·매출·ROAS**를 함께 표기하라고 합니다.
그런데 광고 API가 반환하는 "매출"은 각 매체가 자체 추적한 **전환매출**입니다. 회계상의 매출이 아닙니다.

문제는 판매 채널입니다. 프로젝트 개요 첫 줄에 **스마트스토어**가 있습니다.
스마트스토어는 플랫폼 특성상 외부 스크립트 설치가 자유롭지 않아 **메타 픽셀을 직접 심을 수 없습니다.**
별도 솔루션(네이버 커머스솔루션마켓 입점 도구 등)을 경유하지 않으면
메타·카카오가 신고하는 전환매출은 **0이거나 심하게 과소**로 나옵니다.

> 근거: [스마트스토어, 메타 광고 전환 추적 완벽 해결 — 마케팅 인사이드](https://inside.ampm.co.kr/insight/13161)
> "플랫폼 특성상 메타 픽셀을 직접 설치하기 어려워 광고 성과 측정에 애를 먹는 경우가 많습니다."

**즉, 4개 광고 API만 붙이면 대시보드의 매출·ROAS 열이 비거나 거짓이 됩니다.**

- **대응** — **네이버 커머스API(스마트스토어 주문)를 5번째 소스로 추가**해 실매출을 단일 기준선으로 삼았습니다.
  대시보드 상단 [매출 기준] 세그먼트에서 `채널 합산 / 광고 기여 / 전체 실매출` 세 가지를 전환하면
  **ROAS 숫자가 실제로 바뀝니다.**

### ★ 발견 2 — 채널 ROAS를 더하면 실매출을 넘습니다

매체마다 자기 성과로 인정하는 기간이 다릅니다.

| 채널 | 기여 인정 기간 |
|---|---|
| 메타 | 클릭 7일 + 조회 1일 |
| 구글 | 클릭 30일 (기본, 1~90일 설정) |
| 카카오모먼트 | 클릭 7일 + 조회 1일 (기본) |
| 네이버 검색광고 | 직접전환 + 간접전환(추적기간 7~20일 설정) |

한 건의 주문을 메타도, 구글도, 네이버도 **각각 전액으로 신고**합니다.

> 근거: [분석노트 #03 — ACE Counter](https://www.home.acecounter.com/post/note3)
> "매체마다 추적 기준이 제각각이어서 **하나의 전환이 3개로 부풀려질 수 있음**을 인지하고 있어야 합니다."

- **대응** — [중복 진단] 카드에서 `채널 합산`과 `광고 기여(중복 제거)`의 차이를 **금액과 비율로 계산**해 보여줍니다.
  데모 데이터 기준 중복 신고율은 **45% 안팎**으로 계산됩니다.
  합계 지표의 기본값을 **MER(전체 실매출 ÷ 총 광고비)** 으로 두고, 채널 ROAS는 채널 간 비교용으로만 씁니다.

### ★ 발견 3 — 일별 1회 수집이면 어제 숫자가 영원히 틀립니다

전환은 지연 도착합니다. 클릭한 날과 구매한 날이 다릅니다.

- 구글: 전환 지연(conversion lag) 때문에 **과거 리포팅 기간의 값이 몇 주간 계속 갱신**됩니다.
  > 근거: [About conversion lag reporting — Google Ads Help](https://support.google.com/google-ads/answer/9347141) ·
  > [Conversion reporting — Google Ads API](https://developers.google.com/google-ads/api/docs/conversions/reporting)
- 메타: 2026년 3월 어트리뷰션 개편으로 **클릭 기여의 정의 자체가 바뀌었습니다.**
  링크 클릭만 인정, 소셜 상호작용은 인게이지 스루로 분리, 인게이지드 뷰 판정이 10초 → 5초로 단축.
  > 근거: [메타 광고의 은밀한 공식 변경 — 마케팅 인사이드](https://inside.ampm.co.kr/insight/59467)
  > "2026년 3월 이전의 어트리뷰션 기준과 현재의 기준은 측정법 자체가 다릅니다."
- 메타 API는 breakdown 조합에 따라 **13개월 이전 데이터 조회가 막힙니다.** 자체 백업이 없으면 과거가 사라집니다.

D+1에 한 번 긁고 다시 조회하지 않으면 그 날짜는 **성숙도 62% 수준에서 굳습니다.**

- **대응** — 상단 [수집 방식] 토글로 `일 1회 수집` ↔ `롤링 재수집`을 전환할 수 있습니다.
  누르면 과거 60일 수치 전체가 실제로 달라집니다(데모 기준 채널 신고 매출 **34% 차이**).
  최근 구간은 **확정 / 잠정** 배지로 구분하고, 차트에서도 잠정 구간을 음영으로 표시합니다.
  관리자 [배치] 화면에서 **재수집 창(3/7/14/30일)에 따른 회수량과 API 호출 수의 트레이드오프**를 그래프로 비교합니다.

### 발견 4 — 소재 이미지 URL은 저장하면 깨집니다

요구사항 2-2의 "이미지 바로보기(URL 연동)"를 문자 그대로 구현하면 며칠 뒤 실패합니다.
메타의 `image_url`·`thumbnail_url`은 **서명이 붙은 임시 URL이며 영구 링크가 없습니다.**
호출할 때마다 새 URL이 발급되고 이전 URL은 `URL signature expired`로 만료됩니다.

> 근거: [Facebook Ads Error — URL Signature Expired (Fivetran)](https://fivetran.com/docs/applications/facebook-ads/troubleshooting/url-signature-expired) ·
> [Ad Creative — Meta for Developers](https://developers.facebook.com/docs/marketing-api/reference/ad-creative/)

- **대응** — 소재 표의 [이미지] 버튼에서 세 방식을 직접 비교할 수 있습니다.
  ① 저장된 URL → **실제로 403 만료 오류를 재현합니다** ② `image_hash`로 조회 시점 재해결 ③ 자체 스토리지 사본.

### 발견 5 — 전환 0건 소재는 "목표 CPA 초과" 목록에서 사라집니다

CPA = 광고비 ÷ 전환수입니다. 전환이 0이면 **정의되지 않으므로 초과 비교에 걸리지 않습니다.**
정작 가장 위험한 소재(돈만 쓰고 전환 0)가 목록에서 통째로 빠집니다.
반대로 전환 1~2건짜리 소재를 하루 성과로 끄면 **표본 부족으로 인한 오판**입니다.

- **대응** — 판정을 `정상 / 목표 초과 / 무전환 소진 / 판정 보류` **4단계**로 나눴습니다.
  최소 전환수와 무전환 소진 배수를 화면에서 조절하면 건수가 실시간으로 바뀝니다.
  [비교 보기] 버튼을 누르면 **요구사항 그대로 구현했을 때 몇 건이 사라지고 그 소재들이 얼마를 썼는지** 숫자로 나옵니다.

### 발견 6 — 카카오모먼트는 30일 안에 안 끝날 수 있습니다

카카오모먼트 API는 **① 카카오디벨로퍼스 앱 생성 → ② 비즈니스 앱 전환 → ③ 앱 소유자 본인인증 →
④ 추가 기능(권한) 신청 및 심사**를 통과해야 호출할 수 있습니다.
심사 기간이 공식적으로 명시돼 있지 않아 **일정에 넣고 계산할 수 없는 변수**입니다.

> 근거: [카카오모먼트 > 이해하기 — Kakao Developers](https://developers.kakao.com/docs/ko/kakaomoment/common)

공고 우대사항에 이 항목이 들어 있는 것으로 보아 이미 인지하고 계신 것으로 읽었습니다.

- **대응** — 착수 첫날 신청을 걸고 **3채널 자동 수집 선오픈 + 카카오 후결합** 구조로 설계했습니다.
  심사가 끝날 때까지는 카카오모먼트 관리자에서 내려받은 CSV를 업로드해 공백을 메우고,
  대시보드에서 해당 채널에 **"수동 수집" 배지**를 붙여 자동과 구분합니다.

### 발견 7 — LLM 인사이트에 사내 매출이 그대로 실려 나갑니다

"MCP, 클로드 등 기존 기술을 최대한 활용" 요청을 그대로 따르면 프롬프트에 광고비와 매출이 들어갑니다.
사내용 시스템이라도 **외부 모델 API로 나가는 순간 사내 데이터의 외부 전송**입니다.

- **대응** — 판단(무엇이 잘 됐는가)은 서버에서 계산하고, 모델은 **문장으로 옮기는 역할만** 맡습니다.
  전송 필드를 화이트리스트로 제한해 ROAS는 전체 평균 대비 **지수**로, 광고비는 **규모 버킷(L/M/S)** 으로 치환합니다.
  [LLM 전송 페이로드 미리보기]에서 실제로 나가는 JSON을 열어 볼 수 있습니다 — **금액이 한 건도 없습니다.**

### 발견 8 — "베스트 소재"를 ROAS만으로 뽑으면 소액 소재가 1등이 됩니다

주간 ROAS 정렬은 광고비 3만원 쓰고 우연히 1건 팔린 소재를 최상단에 올립니다.
그 소재를 다음 광고 기획의 근거로 삼으면 잘못된 학습입니다.

- **대응** — 최소 소진액·최소 전환수를 넘긴 소재만 후보로 올리고, 기준을 화면에 명시합니다.
  기준을 안 걸었을 때 1위가 되는 소재를 **경고 카드로 함께 보여 줍니다.**

### 잘 되어 있는 부분도 짚습니다

- **"자동 온/오프 제어는 불필요"** — 정확한 판단입니다. 자동 제어는 어트리뷰션이 흔들리는 데이터 위에서
  가장 먼저 사고가 나는 기능입니다. 데이터 신뢰도가 확보되기 전에는 켜지 않는 것이 맞습니다.
- **우대사항에 카카오 심사 일정을 넣은 것** — 이 프로젝트에서 가장 통제하기 어려운 변수를 정확히 짚으셨습니다.
- **"소재 디자인 요소 분석 포함"** — 성과 숫자만이 아니라 *왜 잘 됐는지*를 보려는 요구입니다.
  이 항목이 있어서 인사이트가 리포트가 아니라 다음 기획의 입력이 됩니다.

---

## 3장. 레퍼런스 실측

브라우저로 직접 열어 `getComputedStyle`로 추출했습니다. 추측값이 없습니다.

### ① 도메인 레퍼런스 — 무엇을 만들까

| 사이트 | 실측값 | 가져온 것 |
|---|---|---|
| **[Airbridge](https://airbridge.io)** (국내 · 광고 성과 측정) | 배경 `#0a0a0c` · 카드 `#18181b` · 잉크 `#fafafa` · CTA `#155dfc` · 경계선 `rgba(255,255,255,.08)` · h1 72/72 **ls −1.08px** w600 · `--tracking-heading −.03em` · 버튼 **r8 h48 fs15 w500** · 섹션 패딩 60px(강조 140px) · 컨테이너 1280px · 트랜지션 **.15s cubic-bezier(0,0,.2,1)** | 다크 데이터 제품의 계조 전체와 UI 트랜지션 속도. 광고 데이터는 채널색이 살아야 해서 밝은 배경보다 다크가 유리합니다. |
| **[Triple Whale](https://triplewhale.com)** (해외 · 이커머스 통합 성과) | h1 76/83.6 **ls −3.8px** w300 · 버튼 r10 h64 · 섹션 패딩 80/100/130px · 브랜드 `#0d3854` | **IA를 가져왔습니다.** 채널별 나열이 아니라 *전체 기준 하나*를 최상단에 두는 구조. 이번 건의 [매출 기준] 세그먼트가 여기서 나왔습니다. |
| **[Funnel](https://funnel.io)** (해외 · 다채널 데이터 수집) | h1 64/70.4 w600 · 버튼 **r4 h52 pad 10/24 w600 fs14** · 카드 r12 · 브랜드 그린 `#013f33` · 오렌지 `#f86c54` · 블루 `#1cb1f3` | 헤드라인이 "데이터 파운데이션"입니다. **수집의 신뢰를 제품의 전면에 내세우는 문법**을 가져와 [수집 방식]·[확정/잠정] 배지를 상단에 배치했습니다. |

**업계 공통 문법으로 확인된 것** — 광고 데이터 제품은 ① 상단에 기간·비교 컨트롤 고정 ② KPI 카드 6개 내외
③ 채널별 표는 반드시 가로 스크롤 컨테이너 ④ 숫자는 tabular-nums. 넷 다 반영했습니다.

### ② 디자인 레퍼런스 — 어떻게 보이게 할까 (작업 내용과 무관 · 수상작)

| 사이트 | 수상 내역 | 실측값 | 가져온 것 |
|---|---|---|---|
| **[Dragonfly](https://dragonfly.xyz)** | **Awwwards Site of the Day 2026.07.22** (Studio Freight · 7.39) | 디스플레이 185.5px / lh 166.95(0.9) / **ls −12.24px = −0.066em** / w300 · 스페이서 토큰 4/8/12/16/24/32/48/64/88/128/180px · 이징 `--ease-out-quint cubic-bezier(.23,1,.32,1)` · `--ease-out-expo (.19,1,.22,1)` · 실사용 `transform .85s out-quint` | **스페이서 스케일 전체**와 **이징 토큰 2종**. 자간은 −0.066em을 그대로 쓰지 않고 대시보드용으로 **−0.02em까지만** 축소 이식했습니다. |
| **[TRIONN](https://trionn.com)** | **Awwwards Site of the Day + Developer Award 2026.07.27** | 배경 `#040508` · 잉크 `#d8d8d8` · 라인 `#434343` · 디스플레이 117.3px / lh 1.0 / **ls −9.38px = −0.08em** · 섹션 패딩 96~128px · 리빌 `opacity/transform .5s cubic-bezier(.16,1,.3,1)` | **리빌 이징 `.5s cubic-bezier(.16,1,.3,1)`** 과 다크 3계조. 배경을 `#08090c`로 잡은 근거입니다. |

**그대로 베끼지 않은 것** — 두 수상작 모두 117~185px 디스플레이 타이포와 대형 스크롤 연출을 씁니다.
의뢰자가 *"화려한 디자인보다 정확한 데이터 집계와 직관적 정보 구조가 최우선"* 이라고 명시했으므로
모션 강도는 **대시보드 = 약(절제)** 기준을 따랐습니다.

| 넣은 것 | 뺀 것 |
|---|---|
| 차트 그리기 애니메이션(0→100%, easeOutCubic 700ms) | 히어로 패럴랙스 |
| KPI 카운트업 (requestAnimationFrame + easeOutCubic 620ms) | 스크롤 하이재킹 |
| 게이지 바 성장 (`.9s cubic-bezier(.23,1,.32,1)`) | 대형 디스플레이 타이포 |
| 리빌 (`opacity+translateY(10px) .5s`, stagger 40ms, 최대 5단계) | 장식성 마퀴·커서 인터랙션 |
| 토글·호버 `.15s cubic-bezier(0,0,.2,1)` · 토스트 피드백 | 자동재생 미디어 |

---

## 4장. 요구사항 커버리지

| # | 요구사항 | 구현 위치 | 상태 |
|---|---|---|---|
| 2-1 | 4개 채널 API 연동 | 관리자 [연동 상태] — 4채널 + **커머스API 1** | 구현 (카카오는 심사 대기 상태 + CSV 대체 동선 표기) |
| 2-1 | 일별 배치 자동 수집 | 관리자 [배치] — 실행 로그·재수집 창·호출량 | 구현 + **롤링 재수집으로 확장** |
| 2-2 | 일/주/월 자동 집계 | 대시보드 [기간] 7/28/60일 · [평가 창] 1/7/28일 | 구현 |
| 2-2 | 광고비·매출·ROAS·CTR | KPI 6종 (+CPA·전환수) | 구현 + **매출 기준 3종 분리** |
| 2-2 | 채널별·전체 비교 | [채널별 성과] 표 + 스택 바 차트 | 구현 + **"합산 불가" 명시** |
| 2-2 | 소재 이미지 바로보기 | 소재 표 [이미지] 버튼 → 3방식 비교 | 구현 + **만료 재현** |
| 2-3 | 소재별 목표 CPA 설정 | 관리자 [목표 CPA] — 개별 편집·일괄 조정 | 구현 |
| 2-3 | 목표 초과 소재 자동 트래킹 | 대시보드 [목표 CPA 트래킹] | 구현 + **4단계 판정** |
| 2-3 | 자동 온/오프 없음 | 조치는 사람이 — 화면은 근거만 제공 | 요청대로 미구현 |
| 2-4 | 주/월 베스트·워스트 (ROAS) | [베스트/워스트] + 표본 기준 게이트 | 구현 + **소액 1위 경고** |
| 2-4 | 인사이트 자동 생성 (디자인 요소 포함) | [자동 생성 인사이트] — 5개 축 스코어카드 + 문장 | 구현 |
| 2-4 | MCP·클로드 활용 | 서버 정량 스코어링 + 모델은 문장 생성 | 구현 + **페이로드 마스킹** |
| 2-5 | 로그인·권한 관리 | 관리자 [권한] — 3역할 × 8항목 | 구현 (역할 전환 시 실제로 표시가 달라짐) |
| 2-5 | 채널별 API 설정 페이지 | 관리자 [연동 상태] · [지표 매핑] | 구현 |
| 1 | 반응형 (PC·모바일) | 375px 가로 스크롤 0 · 표는 자체 컨테이너 스크롤 | 검증 완료 |
| 1 | 데이터 매핑 문서 | 관리자 [지표 매핑] 9행 표 | 화면으로 구현 |

---

## 5장. 제안 스택

| 레이어 | 제안 | 이유 |
|---|---|---|
| 수집 배치 | **Python + APScheduler**(또는 Cloud Scheduler) | 4개 매체 SDK가 파이썬에서 가장 안정적입니다. 채널별 어댑터를 표준 스키마로 정규화합니다. |
| 저장 | **PostgreSQL** — `fact_daily(date, channel, creative_id, …)` 유니크 키 + **upsert** | 롤링 재수집이 전제이므로 "덮어쓰기 가능한 키 설계"가 DB 설계의 핵심입니다. 스냅샷 테이블로 재집계 이력을 남깁니다. |
| API·화면 | **Next.js (App Router) + TypeScript** | 요구사항의 반응형 대시보드에 적합하고, 사내용이라 SSR로 권한 처리가 단순해집니다. |
| 차트 | **경량 렌더링(Canvas)** | 외부 차트 라이브러리 없이 dpr 대응. 데모도 같은 방식으로 구현했습니다. |
| 인증 | **이메일 + OTP 또는 Google Workspace SSO** · 역할 3종 | 사내 인원이 소수라 계정 관리 부담을 최소화합니다. |
| 인프라 | **클라우드 1대 + 관리형 PostgreSQL + 오브젝트 스토리지** | 소재 이미지 사본 보관용 스토리지가 필요합니다(발견 4). |
| LLM | **Claude API** — 서버 계산 결과만 전송 | 판단은 코드, 문장은 모델. 호출 이력을 남깁니다. |

**DB 설계에서 반드시 지킬 것**
1. `fact_daily`의 유니크 키는 `(date, channel, creative_id)` — 재수집 시 **덮어쓰기**가 가능해야 합니다.
2. 각 행에 `collected_at`, `maturity_flag(확정/잠정)`를 둡니다. 확정 판정 후에는 재조회 대상에서 제외합니다.
3. 채널 전환매출과 커머스 주문은 **다른 테이블**입니다. 합치지 않습니다.
4. 소재 이미지는 `image_hash`를 키로 저장하고 URL은 저장하지 않습니다.

---

## 6장. 공수 산정과 일정

일 100,000원 기준입니다.

| 작업 | 공수 |
|---|---|
| 상세 기획 · 화면 설계서 · **API 데이터 매핑 문서** | 6일 |
| UI/UX 디자인 (대시보드 + 관리자 · 반응형) | 7일 |
| 프런트엔드 (KPI·차트·채널·소재·인사이트·반응형) | 14일 |
| 백엔드 — 표준 스키마 및 DB 설계 | 4일 |
| 백엔드 — 채널 어댑터 4종 (메타/구글/카카오/네이버) | 10일 |
| 백엔드 — 배치·**롤링 재수집**·재시도·rate limit·모니터링 | 6일 |
| **커머스API(스마트스토어 주문) 연동** — 매출 기준선 | 3일 |
| 로그인 · 권한 3역할 | 3일 |
| 인사이트 파이프라인 (정량 스코어링 + LLM 문장 + 마스킹) | 5일 |
| 인프라 (클라우드·DB·스케줄러·배포·백업) | 5일 |
| QA · 산출물(기획서·화면설계서·DB설계서·소스) | 5일 |
| **합계** | **68일 · 6,800,000원** (VAT 별도) |

### 일정에 대한 정직한 견해

**68공수를 캘린더 30일 안에 1인으로 끝낼 수 없습니다.** 2인 병행으로도 빠듯합니다.
게다가 카카오모먼트 심사는 우리가 통제할 수 없습니다(발견 6).

그래서 **범위를 두 단계로 나누되 총액은 예산 안에서 그대로** 제안합니다.

| 단계 | 기간 | 범위 | 공수 |
|---|---|---|---|
| **1차** | 착수 후 **30일** (프런트 1 + 백엔드 1 병행) | 3채널 자동 수집 + 커머스API 실매출 + 통합 대시보드 + 목표 CPA 트래킹 + 권한 + 인프라 + 산출물 | 44일 |
| **2차** | 카카오 심사 완료 시점 기준 **약 3주** | 카카오모먼트 API 결합 · 인사이트 고도화(디자인 요소 분석) · 소재 이미지 아카이빙 | 24일 |

1차 오픈 시점에 **엑셀 수작업은 이미 사라집니다.** 카카오는 그때까지 CSV 업로드로 메웁니다.

---

## 7장. 의뢰자 부담 영역

| 항목 | 비고 |
|---|---|
| 클라우드·DB·스토리지 | 월 실비. 초기 규모 기준 월 5~12만원 수준 |
| **각 매체 광고 계정 접근 권한** | 메타 비즈니스 관리자 시스템 사용자, 구글 애즈 MCC, 네이버 검색광고 API 키 |
| **카카오모먼트 비즈니스 인증 및 권한 신청** | 사업자 명의로만 가능합니다. 절차는 대행해 드리되 **명의자 본인인증이 필요**합니다 |
| **네이버 커머스API 애플리케이션 등록** | 스마트스토어 판매자 계정 필요 |
| Claude API 사용료 | 종량 과금. 주 1회 인사이트 생성 기준 월 1만원 내외 |
| 유료 폰트·아이콘 라이선스 | 데모는 무료 폰트(Pretendard)만 사용했습니다 |

---

## 8장. 착수 미팅에서 정해야 할 것

1. **매출의 정의** — 결제 완료 기준인가, 배송 완료 기준인가, 취소·반품을 언제 차감하는가
2. **커머스API 연동 여부** — 안 붙이면 ROAS의 분자가 매체 신고값뿐입니다
3. **롤링 재수집 창** — 기본 14일 제안. 30일로 늘리면 회수량은 거의 같고 호출만 늘어납니다
4. **네이버 소재 단위** — 검색광고에는 소재 개념이 사실상 없습니다. 키워드/광고그룹 단위 매핑 규칙 합의 필요
5. **카카오 심사 신청 시점** — 계약 당일 착수를 권합니다
6. **LLM 인사이트 형태** — 텍스트 요약인가 정량 스코어인가 (공개 문의에서도 나온 질문입니다. 데모는 **둘 다** 구현했습니다)
7. **권한 3역할이 맞는지** — 외부 대행사가 볼 화면이 있는지
