01경력 요약
SQL로 다채널 데이터를 직접 추출·정제하고, KPI 시각화로 의사결정을 지원해 온 데이터 분석 실무자입니다.
분석에 그치지 않고 데이터를 측정·수집할 수 있는 사내 데이터 분석·운영 플랫폼을 직접 기획·구축했으며,
데이터 수집 → 정제 → 지표화 → 리포팅·운영까지 전 과정을 수행했습니다.
3배+
콜 전환율 개선
행동 분석 → 병목 구간 개선
CPA 2.1배
Meta 캠페인 효율
성과 분석 + A/B 테스트
~2억 원
Google Ads 분석
1년+ 캠페인·광고그룹 운영
실시간
리드 알림
Webhook → 접촉 지연 단축
자동화
KPI 집계·전달
Cron · 대시보드 · Telegram
02핵심 성과
① 개인회생 콜 전환율 3배 이상 개선
| 문제 | 다채널 데이터 산재, 거절·승인 수치만으로는 전환 병목 파악 불가 |
| 분석 | leads + lead_call_work SQL 조인 — 상태 funnel, 거절 사유, 부재 횟수 histogram |
| 조치 | 콜 분석 스냅샷 API·대시보드 구축, 병목 구간 프로세스·UI 개선 |
| 결과 | 개인회생 콜 전환율 3배 이상 개선 |
② 리드 접촉 지연 단축
| 문제 | 리드 유입 후 접촉 시점 지연이 전환율에 미치는 영향 확인 필요 |
| 분석 | received_at ~ distributed_at 구간별 전환율 비교 |
| 조치 | Webhook 기반 실시간 Telegram 알림, 미분배 리마인더 Cron |
| 결과 | 리드 발생 후 접촉 지연 시간 단축 |
③ Meta CPA 2.1배 개선 · ④ KPI 자동화
| Meta CPA | 일별 spend·전환·CPA 집계 + 소재 A/B → CPA 2.1배 개선 |
| KPI 자동화 | 09:00 KST 일일 리포트 Cron + 대시보드 → 회의·의사결정 간소화 |
03경력 사항
데이터랩 | 전산팀 · 팀장
2025.07 ~ 현재
- 광고·리드·콜 행동 데이터 SQL 추출·집계 → KPI 산출 및 의사결정 지원
- 채널별 상이 포맷 데이터 단일 기준 정제·표준화
- 사내 데이터 분석·운영 플랫폼(리드·광고·콜 KPI 통합) 기획·구축 · AI 기반 개발 활용
SQLPythonTypeScript
Meta AdsGoogle AdsCloudflare Workers
- 광고·이벤트·주문 → PostgreSQL 단일 스키마, ROAS·CAC·LTV 자동 산출
- 스키마 점진 진화 (마이그레이션 67회) · Next.js · Supabase
04주요 프로젝트 — 광고대행 데이터 분석·운영 플랫폼
리드 유입(웹훅) → 검증·저장 → 고객사 분배 → 콜 후속 → 광고비·장부 정산까지
운영 데이터를 통합하는 서버리스 B2B 플랫폼입니다.
Cloudflare Workers + D1(SQLite) + KST 기준 Cron으로 다차원 KPI를 산출합니다.
| 구분 | 내용 |
| 리드 인입 | DBCart, Meta Lead Form, 블로그 웹훅 → 검증(Zod) · 중복 플래그 · 저장 |
| 분배 | 일일 할당·우선순위·계약 유형 기반 auto/manual + 감사 로그 |
| 광고 성과 | Google/Meta API 30분 수집 → impressions, clicks, spend, CTR/CPC/CPA |
| 콜 분석 | 상태 funnel · 거절 사유 · 부재 histogram · 재통 일정 |
| 재무 | expenses, ledger, Meta spend → expenses 자동 동기화 |
| 리포트 | 일일 Telegram 리포트 · Email 장부 · KPI 대시보드 |
| 기술 | 역할 |
| Cloudflare Workers | API · Cron · 집계 실행 |
| D1 (SQLite) | 30+ 테이블 OLTP + 리포팅 |
| Hono + TypeScript | REST API · SQL 집계 |
| Meta / Google Ads API | 광고 성과 수집 |
| Vitest · Playwright | 집계·분배 로직 검증 |
05시스템 아키텍처
flowchart TB
subgraph IN["데이터 유입"]
WH["Webhooks\nDBCart · Meta · Blog"]
GAS["Google Ads Script Sync"]
end
subgraph WK["Cloudflare Worker"]
APP["Hono App"]
CR["Cron KST"]
end
subgraph ST["저장"]
D1[("D1 SQLite\n30+ tables")]
KV[("KV Cache")]
end
subgraph EX["외부"]
META["Meta API"]
GADS["Google Ads"]
TG["Telegram"]
end
subgraph OUT["분석 출력"]
DASH["Dashboard KPI"]
RPT["일일 리포트"]
CALL["콜 분석"]
end
WH --> APP
GAS --> APP
APP --> D1
APP --> KV
CR --> APP
CR --> META
CR --> GADS
APP --> TG
D1 --> DASH
D1 --> RPT
D1 --> CALL
06ERD — 핵심 데이터 모델
erDiagram
clients ||--o{ leads : distributes
clients ||--o{ ad_accounts : owns
ad_accounts ||--o{ ad_performance : metrics
leads ||--o| lead_call_work : call_ops
leads ||--o{ call_work_logs : activity
leads ||--o{ call_callback_schedules : callback
distribution_history ||--o{ distribution_items : contains
leads ||--o{ distribution_items : matched
clients {
int id PK
text contract_type
int daily_lead_quota
int distribution_priority
}
leads {
int id PK
text source
text business_type
text distribution_status
text received_at
text distributed_at
}
ad_performance {
text report_date
int impressions
int clicks
real spend
real ctr cpc cpa
}
lead_call_work {
text call_customer_status
int call_no_answer_count
text call_rejection_reason
}
distribution_history {
text distribution_date
text execution_type
int total_leads
int distributed_leads
}
| 테이블 그룹 | 주요 테이블 | 분석 활용 |
| 리드·분배 | leads, distribution_history, distribution_items | 유입 funnel, 분배율, 감사 |
| 광고 | ad_performance, google_ads_campaign_daily | CTR/CPC/CPA, 캠페인 drill-down |
| 콜 | lead_call_work, call_work_logs, call_callback_schedules | 전환 funnel, 부재·재통 |
| 재무 | expenses, ledger | 광고비·고객사 정산 |
| 트래픽 | blog_visit_daily | 콘텐츠별 조회 trend |
07데이터 파이프라인
flowchart LR
A["원천\nWebhook·API"] --> B["검증\nZod"]
B --> C["적재\nD1 UPSERT"]
C --> D["집계\nSQL GROUP BY"]
D --> E["출력\nDashboard·Telegram"]
C --> F["감사\nhistory·logs"]
| 단계 | 소스 | 적재 | 주기 |
| 리드 | DBCart, Meta, Blog | leads | 실시간 |
| 광고 | Meta/Google API | ad_performance | 30분 Cron |
| Google 세분화 | Ads Script | google_ads_*_daily | 일별 |
| 지출 | Meta performance | expenses | 06:30 KST |
| 분배 | 분배 엔진 | distribution_history | 11:00 KST |
| 리포트 | SQL 집계 | Telegram/Email | 09:00 KST |
08핵심 KPI · 지표 시각화
운영 KPI 정의
| 지표 | 산식·집계 기준 |
| 일별·월별 리드 | COUNT(*) · DATE(received_at) / strftime('%Y-%m') |
| 분배율 | distributed / total · distribution_status 기준 |
| CTR · CPC · CPA | clicks/impressions · spend/clicks · spend/conversions |
| 콜 승인율 | approved / leadCount · call_customer_status |
| 부재 분포 | AVG(call_no_answer_count) · 구간별 histogram |
콜 분석 집계 항목
| 집계 항목 | 설명 |
| statusCounts | unset / no_answer / rejected / approved 등 상태별 건수 |
| rejectionReasons | 거절 사유별 breakdown |
| noAnswer.buckets | 부재 0회 / 1~2 / 3~5 / 6+ 구간별 분포 |
| schedulesByDate | 재통 예약 일자별 건수 |
09주요 분석 SQL
구축한 플랫폼에서 실제 사용하는 집계 쿼리 패턴입니다.
고객사별 리드 · 광고비 JOIN
SELECT c.name, COUNT(l.id) AS lead_count, COALESCE(SUM(ap.spend), 0) AS ad_spend
FROM clients c
LEFT JOIN leads l ON l.client_id = c.id AND DATE(l.distributed_at) = ?
LEFT JOIN ad_accounts aa ON aa.client_id = c.id
LEFT JOIN ad_performance ap ON ap.ad_account_id = aa.id AND ap.report_date = ?
WHERE c.is_active = 1
GROUP BY c.id HAVING lead_count > 0 OR ad_spend > 0;
콜 상태 funnel (recovery 분배 리드)
SELECT CASE WHEN COALESCE(w.call_customer_status,'')='' THEN 'unset'
ELSE w.call_customer_status END AS status, COUNT(*) AS cnt
FROM leads l LEFT JOIN lead_call_work w ON w.lead_id = l.id
WHERE l.business_type = 'recovery' AND l.distribution_status = 'distributed'
AND DATE(l.distributed_at) BETWEEN ? AND ?
GROUP BY status;
10자동화 스케줄
| Cron (UTC) | KST | 태스크 | 데이터 영향 |
| 0 0 * * * | 09:00 | daily-report | 전일 KPI → Telegram |
| 0 0 * * * | 09:00 | daily-ledger-emails | 장부 Email |
| 0 2 * * * | 11:00 | auto-distribution | 리드 자동 분배 |
| 0 6 * * * | 15:00 | pending-reminder | 미분배 알림 |
| 30 21 * * * | 06:30 | meta-expenses | Meta spend → expenses |
| */30 * * * * | 30분 | google/meta-ads-collect | ad_performance UPSERT |
감사·알림 데이터
| 테이블 | 기록 내용 | 활용 |
| notification_logs | 알림 유형·상태·오류 | 알림 성공률 모니터링 |
| distribution_history | 분배 실행자·조건·상세 JSON | 분배 이력 감사 |
| call_work_logs | 상담 action·시각 | 활동량 집계 |
11기술 역량
- 데이터 / SQL
- SQL 추출·정제·집계 (MySQL, PostgreSQL, SQLite) · 다중 JOIN · SQLD
- 분석 / 시각화
- KPI 대시보드 · A/B 테스트 · 리드·콜 행동 분석 · funnel 집계
- 데이터 엔지니어링
- Webhook 실시간 파이프라인 · Cron 자동 집계 · 품질·정합성(Zod, 감사로그)
- 언어 / 도구
- Python · JavaScript · TypeScript · Google Sheets · AI 기반 개발