← 프로젝트

데이터 플랫폼

인플루언서 마케팅 플랫폼

1인 기획 · 개발 · 배포 — 흩어진 인플루언서 캠페인 운영을 하나의 사내 플랫폼으로

기간
2026.07 – 진행 중
역할
1인 오너 · 기획 · 풀스택 개발 · 인프라/배포
팀
1인 (마케팅팀과 요구사항 논의)
상태
운영 환경 배포 · 런칭 준비 중
1인
기획 · 회의 · 개발 · 배포 전 과정
7개
OCR로 자동 대조하는 성과 지표
2개
자동 수집 플랫폼 (Instagram · YouTube)
92%
레포 커밋 기여 (121 / 132)

공개 범위 안내 — 회사 프로젝트로, 캠페인명 · 업무량 · 운영 데이터 · 인프라 세부 정보는 사내 정책상 공개하지 않습니다. 아키텍처 · 실험 기록 · 상세 수치가 담긴 자료는 메일로 요청해 주시면 보내드립니다.

한 줄로

마케팅팀은 인플루언서 캠페인을 스크립트로 만든 폼 + 스프레드시트 + 설문 폼 + 메신저 + 외부 인플루언서 관리툴로 나눠 운영하고 있었습니다. 제출이 몰리는 날엔 동시 기록 문제가 생겼고, 인플루언서가 올린 인사이트 스크린샷은 마케터가 한 장씩 열어 숫자를 읽고 시트에 옮겨 적어야 했습니다. 이 흐름 전체를 하나의 사내 플랫폼으로 옮기고, 성과 확인은 OCR로 자동 대조해 사람이 불일치 건만 보도록 바꾸고 있습니다. 사내 업무 자동화로 시작해 인플루언서와 광고주가 함께 일하는 협업 플랫폼으로 키우는 것이 목표입니다.

혼자 맡은 일

  • 마케팅팀 회의에서 현행 업무 흐름 · 입력량 · 판정 기준을 파악하고 요구사항으로 정리
  • 기존 스크립트 · 시트는 요구사항 확인과 데이터 이관 자료로만 쓰고, 런타임 의존성 없이 새로 구축
  • 아키텍처 설계, 운영자 · 크리에이터 화면, API, 비동기 워커, 외부 API 연동, 인프라 구성과 운영 배포까지 전부 직접 수행

핵심 1 — 운영자 Admin: 여러 캠페인을 한 곳에서

  • 캠페인 관리 — 유상 / 무상, 캠페인 유형, 사전 / 본 포스팅, 브랜드, 기간, 제출 요건을 속성으로 관리. 기간 기반 자동 오픈 · 마감에 수동 강제 오픈 · 마감을 더함
  • 모집 → 성과 수집을 한 흐름으로 — 캠페인을 ‘모집용’과 ‘성과 수집용’으로 나눠 만들고, 질문을 직접 구성하는 모집 폼 빌더(초안 → 공개 → 마감)와 지원자 선정을 제공해 기존 설문 폼을 대체
  • 제출물 검토 — OCR 대조 결과를 보며 승인 · 반려 · 재처리, 리뷰어 코멘트, 캠페인별 성과 탭과 CSV 내보내기
  • 성과 vs 소싱 분리 — 이미 협업한 인플루언서의 성과 화면과, 아직 협업 전인 후보를 필터링(플랫폼 · 카테고리 · 팔로워 · 참여율)하고 검토 상태를 관리하는 소싱 화면을 나눔
  • 커뮤니케이션 · 운영 — 공지사항, 크리에이터와의 1:1 메시지 인박스(개별 메신저 연락 대체), 관리자 권한, 민감 작업 감사 로그, 한국어 · 일본어

핵심 2 — 이미지 크롭 + OCR로 수작업 줄이기

  • 크리에이터가 업로드할 때 인사이트 영역만 크롭해 제출 → 브라우저에서 스토리지로 서명된 URL로 직접 업로드해 API 서버가 파일 트래픽을 떠안지 않게 함
  • 워커에서 이미지 전처리(색공간 정규화 · 리사이즈 · 샤픈 · 다크모드 반전) 후 Tesseract(일본어 + 영어) OCR, 텍스트 행 · 아이콘 위치로 지표 영역 추정
  • 지표(좋아요 · 댓글 · 리포스트 · 공유 · 저장 · 노출 · 도달)마다 라벨 별칭 사전을 두고 라벨-값을 매칭
  • 입력값과 OCR 값을 지표별로 대조해 일치 / 불일치 / 못 찾음 / 모호함으로 판정. 입력값 · OCR 값 · 정규화 값 · 신뢰도와 운영자 최종 판정 · 사유를 모두 남김 → 자동 승인이 아니라 사람은 예외만 확인하는 구조
  • 제출 전 OCR 제안값 제공, 성과 수정 시 재대조, 실제 스크린샷 fixture 기반 OCR 회귀 테스트

핵심 3 — 크리에이터 화면

  • 홈에서 공지사항, 참여 중인 캠페인, 모집 중인 무상 참여 캠페인을 보고 바로 지원
  • 캠페인별 성과 제출(게시물 URL 검증 · 크롭 업로드 · OCR 제안값)과 처리 상태 확인
  • 운영팀과 주고받는 메시지, 프로필 관리, 소셜 로그인(OAuth) 연동

핵심 4 — Instagram · YouTube 데이터 수집과 소싱

  • Meta Graph API(Business Discovery) 로 인플루언서 계정(팔로워 · 프로필)과 게시물 반응을 매일 스냅샷으로 수집. 장기 토큰 교환 · 자동 갱신 포함
  • 수집 실패를 ‘원래 수집 불가(비즈니스 계정 아님 등)’와 ‘일시 오류’로 구분해, 재시도할 것과 사람이 확인할 것을 나눔
  • YouTube 게재위치 타깃팅 프로젝트에서 모으고 있는 뷰티 채널 · 영상 Pool을 소싱 화면에 연동 — 채널 → 영상 → 영상에 등장한 상품 카테고리 → 브랜드 집계를 함께 보며 후보를 찾음
  • 사내 두 프로젝트가 같은 데이터를 재사용하도록 연결해, 한쪽에서 쌓은 채널 분석이 다른 쪽의 인플루언서 발굴로 이어지게 함

설계 — 몰려도 안전하게

  • 모듈형 모놀리스 + 비동기 워커 (Turborepo 모노레포: Next.js 웹 / NestJS API / NestJS 워커). 혼자 빠르게 만들되, 큐 계약을 유지해 나중에 서비스로 나눌 수 있게 함
  • 제출 데이터와 작업 이벤트를 같은 트랜잭션에 저장(Outbox 패턴) 하고 즉시 응답 → OCR은 BullMQ 큐에서 처리. 큐별 동시성 · 타임아웃 · 재시도를 따로 설정하고, 최종 실패는 별도 보관 후 재처리
  • idempotency key 유니크 제약으로 중복 제출을 막고, 워커는 같은 작업을 두 번 받아도 결과가 같도록 설계
  • 스토리지 · OCR · 외부 API는 포트 & 어댑터로 격리 — 도메인 코드는 특정 클라우드나 OCR SDK를 모름. 덕분에 운영 클라우드를 정할 때 코드 변경이 거의 없었음
  • 비공개 스토리지 + 짧은 만료의 서명 URL, 업로드 파일 형식 · 크기 검증, 로그에 서명 URL · 개인정보 미기록
  • 컨테이너 기반으로 앱 서버(웹 · API · 워커)와 DB 서버를 나눠 운영 배포, 배포 스크립트로 빌드 · 마이그레이션 · 재기동 자동화

한계와 다음 단계

  • 런칭 전이라 절감 시간 · OCR 정확도 같은 운영 성과 수치는 아직 없습니다 — 런칭 후 측정할 예정입니다
  • OCR은 학습 모델이 아니라 Tesseract + 전처리 + 별칭 사전 매칭 규칙입니다. 불일치로 판정된 건과 운영자 최종 판정이 쌓이면, 이를 규칙 보정과 모델 도입의 근거로 쓸 계획입니다
  • 도메인 · TLS 연결, CI/CD, 백업 체계는 남은 운영 과제입니다
  • 다음 단계는 사내 도구를 넘어 광고주가 직접 캠페인을 열고 인플루언서와 협업하는 플랫폼으로 확장하는 것입니다