{
  "generated": "2026-08-21T10:41:12.513Z",
  "rules": [
    {
      "docId": "coupang-campaign-types",
      "section": "coupang",
      "id": "coupang-new-sku-start-type",
      "when": "신규 등록 상품이고 광고 이력 데이터가 없음",
      "metric": "days_since_ad_start",
      "condition": "== 0",
      "action": "매출최적화 또는 매출스타트 광고로 시작, 일예산 3만원 이상 설정 제안",
      "guardrail": "수동성과형으로 즉시 시작 금지 (데이터 없이 키워드 선정 불가)",
      "confidence": "medium"
    },
    {
      "docId": "coupang-campaign-types",
      "section": "coupang",
      "id": "coupang-migrate-to-manual",
      "when": "자동 광고 운영 14일 이상 & 특정 키워드 ROAS가 손익분기 이상으로 안정",
      "metric": "days_running,roas_14d",
      "condition": ">= 14 AND >= breakeven_roas",
      "action": "해당 키워드를 수동성과형 캠페인으로 이관 제안(사람 확인 필요)",
      "guardrail": "이관 후에도 자동 캠페인은 신규 키워드 발굴용으로 유지",
      "confidence": "medium"
    },
    {
      "docId": "coupang-bidding",
      "section": "coupang",
      "id": "coupang-bid-down-below-breakeven",
      "when": "키워드 ROAS_7d가 손익분기 ROAS 미만이고 광고비가 유의미하게 집행됨",
      "metric": "roas_7d",
      "condition": "< breakeven_roas",
      "action": "입찰가 15~20% 인하 제안",
      "guardrail": "일 1회 한도, 조정 후 3일 재관찰 전 재조정 금지, 최저 입찰가 100원 미만 금지",
      "confidence": "medium"
    },
    {
      "docId": "coupang-bidding",
      "section": "coupang",
      "id": "coupang-bid-up-headroom",
      "when": "키워드 ROAS_7d가 손익분기 ROAS + 100%p 이상이고 노출수가 목표 대비 낮음",
      "metric": "roas_7d,impressions_7d",
      "condition": ">= breakeven_roas+100 AND < target_impressions",
      "action": "입찰가 10~20% 인상 제안",
      "guardrail": "1회 인상 상한 20%, 최대 입찰가 10만원 초과 금지",
      "confidence": "medium"
    },
    {
      "docId": "coupang-bidding",
      "section": "coupang",
      "id": "coupang-target-roas-too-low",
      "when": "자동 광고 목표 ROAS 설정값이 손익분기 ROAS보다 낮음",
      "metric": "target_roas_setting",
      "condition": "< breakeven_roas",
      "action": "목표 ROAS를 손익분기+50%p 이상으로 상향 제안",
      "guardrail": "설정 변경 전 사람 확인 필수(광고 노출량 급감 가능)",
      "confidence": "high"
    },
    {
      "docId": "coupang-negative",
      "section": "coupang",
      "id": "coupang-exclude-irrelevant",
      "when": "키워드가 상품 카테고리·속성과 명백히 무관 (수동 태깅 또는 룰 매칭)",
      "metric": "relevance_flag",
      "condition": "== irrelevant",
      "action": "제외키워드 즉시 등록 제안",
      "guardrail": "사람 확인 후 등록, 브랜드명 오탐 여부 재확인",
      "confidence": "medium"
    },
    {
      "docId": "coupang-negative",
      "section": "coupang",
      "id": "coupang-exclude-no-conversion",
      "when": "최근 7일 클릭 10회 이상 & 전환 0건",
      "metric": "clicks_7d,conversions_7d",
      "condition": ">=10 AND ==0",
      "action": "제외키워드 등록 제안",
      "guardrail": "신상품 런칭 후 14일 이내는 제외 보류(오가닉 데이터 부족)",
      "confidence": "medium"
    },
    {
      "docId": "coupang-negative",
      "section": "coupang",
      "id": "coupang-exclude-persistent-loss",
      "when": "ROAS_daily < breakeven_roas가 3일 연속",
      "metric": "roas_daily_streak_below_breakeven",
      "condition": ">= 3",
      "action": "1차 입찰가 20% 인하, 인하 후 3일 더 미달 시 제외키워드 등록",
      "guardrail": "일 1회 조치, 단일 액션 후 최소 3일 관찰",
      "confidence": "medium"
    },
    {
      "docId": "coupang-negative",
      "section": "coupang",
      "id": "coupang-exclude-impression-no-click",
      "when": "최근 7일 노출 200회 이상 & 클릭 0",
      "metric": "impressions_7d,clicks_7d",
      "condition": ">=200 AND ==0",
      "action": "상품 무관 가능성 높음, 제외키워드 검토 알림",
      "guardrail": "썸네일/제목 CTR 문제와 구분 필요, 자동 등록 금지(알림만)",
      "confidence": "low"
    },
    {
      "docId": "coupang-launch",
      "section": "coupang",
      "id": "coupang-launch-aggressive-start",
      "when": "상품 등록 후 14일 이내 & 광고 이력 없음",
      "metric": "days_since_launch",
      "condition": "<= 14",
      "action": "매출최적화/매출스타트 광고로 시작, 목표 ROAS를 손익분기보다 낮게 설정해 공격적 노출 확보 제안",
      "guardrail": "일 예산 상한을 사전 설정해 무제한 소진 방지, 14일 경과 시 재평가 알림",
      "confidence": "low"
    },
    {
      "docId": "coupang-launch",
      "section": "coupang",
      "id": "coupang-launch-no-early-kill",
      "when": "상품 등록 후 14일 미만 & ROAS가 손익분기 미달",
      "metric": "days_since_launch,roas",
      "condition": "< 14 AND < breakeven_roas",
      "action": "광고 중단/입찰가 대폭 인하 액션 보류, 관찰만 지속",
      "guardrail": "14일 경과 전 자동 손절 액션 생성 금지",
      "confidence": "medium"
    },
    {
      "docId": "coupang-launch",
      "section": "coupang",
      "id": "coupang-launch-review-pace-check",
      "when": "1일간 리뷰 증가량이 최근 7일 평균의 5배 이상",
      "metric": "review_delta_1d_vs_avg7d",
      "condition": ">= 5x",
      "action": "리뷰 급증 알림 — 부자연스러운 몰림 여부 확인 제안",
      "guardrail": "자동 조치 없음, 사람 확인 전용 알림",
      "confidence": "low"
    },
    {
      "docId": "coupang-report",
      "section": "coupang",
      "id": "coupang-classify-loss",
      "when": "키워드 ROAS_7d < 손익분기 ROAS",
      "metric": "roas_7d",
      "condition": "< breakeven_roas",
      "action": "적자로 분류, 입찰가 인하 또는 제외키워드 후보 등록",
      "guardrail": "분류 갱신은 일 1회, 신상품 14일 이내는 분류 보류",
      "confidence": "high"
    },
    {
      "docId": "coupang-report",
      "section": "coupang",
      "id": "coupang-classify-watch",
      "when": "손익분기 ROAS ≤ ROAS_7d < 손익분기 ROAS+100%p",
      "metric": "roas_7d",
      "condition": ">= breakeven_roas AND < breakeven_roas+100",
      "action": "관망으로 분류, 조치 없이 관찰 유지",
      "guardrail": "관망 상태에서 자동 입찰 조정 금지",
      "confidence": "high"
    },
    {
      "docId": "coupang-report",
      "section": "coupang",
      "id": "coupang-classify-profit",
      "when": "ROAS_7d ≥ 손익분기 ROAS+100%p",
      "metric": "roas_7d",
      "condition": ">= breakeven_roas+100",
      "action": "수익으로 분류, 입찰가 인상 또는 예산 확대 제안",
      "guardrail": "인상 폭 20% 상한, 노출 목표 이미 충족 시 인상 보류",
      "confidence": "high"
    },
    {
      "docId": "coupang-report",
      "section": "coupang",
      "id": "coupang-roas-vat-adjust",
      "when": "리포트 ROAS 계산 시 광고비에 VAT 미반영",
      "metric": "ad_cost_raw",
      "condition": "vat_included == false",
      "action": "광고비 × 1.1로 환산 후 ROAS 재계산 제안",
      "guardrail": "표시용 재계산만, 원본 리포트 데이터는 보존",
      "confidence": "medium"
    },
    {
      "docId": "coupang-routine",
      "section": "coupang",
      "id": "coupang-daily-deviation-alert",
      "when": "당일 CTR, CVR, ROAS, 소진율 중 하나가 최근 7일 평균 대비 20% 이상 변동",
      "metric": "metric_delta_vs_avg7d",
      "condition": ">= 20% or <= -20%",
      "action": "이상 변동 알림 생성, 원인 확인 제안(썸네일/가격/재고/경쟁사)",
      "guardrail": "자동 조치 없음, 사람 확인 전용",
      "confidence": "medium"
    },
    {
      "docId": "coupang-routine",
      "section": "coupang",
      "id": "coupang-weekly-reclassify",
      "when": "매주 1회 정기 실행",
      "metric": "schedule",
      "condition": "== weekly",
      "action": "전체 키워드 적자/관망/수익 재분류 실행 및 변경분 리포트",
      "guardrail": "재분류 결과만 리포트, 입찰가 자동 변경은 별도 룰에서 처리",
      "confidence": "high"
    },
    {
      "docId": "coupang-routine",
      "section": "coupang",
      "id": "coupang-weekly-negative-candidate",
      "when": "키워드가 3일 연속 ROAS < 손익분기 ROAS",
      "metric": "roas_daily_streak_below_breakeven",
      "condition": ">= 3",
      "action": "제외키워드 후보 목록에 추가",
      "guardrail": "최종 등록은 사람 승인 후 실행 (03-negative-keywords.md 절차 따름)",
      "confidence": "medium"
    },
    {
      "docId": "coupang-routine",
      "section": "coupang",
      "id": "coupang-goldenhour-budget-check",
      "when": "18~21시 시간대 예산 소진 비중이 전체의 40% 미만",
      "metric": "goldenhour_budget_share",
      "condition": "< 40%",
      "action": "골든타임 예산 비중 상향 제안(탄력 일예산 또는 시간대별 입찰가 조정)",
      "guardrail": "카테고리별 실제 전환 피크 시간대와 비교 확인 후 적용",
      "confidence": "low"
    },
    {
      "docId": "coupang-routine",
      "section": "coupang",
      "id": "coupang-monthly-strategy-review",
      "when": "매월 1회 정기 실행",
      "metric": "schedule",
      "condition": "== monthly",
      "action": "AI/수동 예산 비율, 카테고리별 목표 ROAS, 시즌 예산 계획 재검토 알림",
      "guardrail": "자동 실행 없음, 리뷰 체크리스트 생성만",
      "confidence": "medium"
    },
    {
      "docId": "coupang-youtube-insights",
      "section": "coupang",
      "id": "coupang-new-revenue-opt-conservative-start",
      "when": "매출최적화광고 신규 생성 & 첫 집행",
      "metric": "campaign_age_days",
      "condition": "== 0",
      "action": "일예산 3~5만원, 목표 ROAS 300% 이하로 초기값 제안",
      "guardrail": "사람 확인 후 적용, 자동 상향 금지",
      "confidence": "low"
    },
    {
      "docId": "coupang-youtube-insights",
      "section": "coupang",
      "id": "coupang-price-over-recommended-alert",
      "when": "판매가가 권장가 대비 10% 초과",
      "metric": "price_vs_recommended_pct",
      "condition": "> 10",
      "action": "노출빈도 감소 위험 알림 (최대 60% 감소 사례 있음)",
      "guardrail": "가격 자동 변경 금지, 알림만 발송",
      "confidence": "low"
    },
    {
      "docId": "coupang-youtube-top100",
      "section": "coupang",
      "id": "coupang-mandatory-fields-block-ads",
      "when": "신규 상품 등록 시 브랜드/구매옵션/상품식별번호 미입력(2026-02-02 시행 정책)",
      "metric": "product_registration_status",
      "condition": "== 미승인 or 노출제한",
      "action": "광고 캠페인 생성 차단 및 필수정보 입력 알림",
      "guardrail": "사람 확인 후 등록 진행, 자동 입력 금지",
      "confidence": "high"
    },
    {
      "docId": "coupang-youtube-top100",
      "section": "coupang",
      "id": "coupang-target-roas-margin-check",
      "when": "목표 ROAS가 마진율 미반영 상태로 설정됨",
      "metric": "target_roas_vs_breakeven",
      "condition": "target_roas < breakeven_roas",
      "action": "목표 ROAS 재설정 알림(마진율 기준 하한 제시)",
      "guardrail": "자동 변경 금지, 알림만 발송",
      "confidence": "medium"
    },
    {
      "docId": "coupang-youtube-top100",
      "section": "coupang",
      "id": "coupang-item-not-winner-auto-price",
      "when": "아이템위너 상실 상태 지속",
      "metric": "item_winner_status",
      "condition": "== false",
      "action": "쿠팡Wing 자동 가격 조정 기능(최소가 설정) 활성화 검토 알림",
      "guardrail": "최소가는 마진 하한선 이상으로만 설정, 자동 실행 전 사람 승인",
      "confidence": "medium"
    },
    {
      "docId": "google-account-setup",
      "section": "google",
      "id": "google-conversion-sprawl-warning",
      "when": "주요(Primary) 전환 액션 개수가 5개 초과",
      "metric": "primary_conversion_action_count",
      "condition": "> 5",
      "action": "마이크로 전환을 보조(Secondary)로 강등하도록 경고",
      "guardrail": "구매/리드완료 등 매출 직결 액션은 강등 금지",
      "confidence": "high"
    },
    {
      "docId": "google-account-setup",
      "section": "google",
      "id": "google-enhanced-conversions-missing",
      "when": "향상된 전환 토글이 OFF 상태로 30일 이상 유지",
      "metric": "enhanced_conversions_enabled",
      "condition": "== false",
      "action": "향상된 전환 활성화 및 고객 데이터 약관 동의 안내",
      "guardrail": "개인정보 해시(SHA-256) 미적용 상태로 활성화 금지",
      "confidence": "high"
    },
    {
      "docId": "google-account-setup",
      "section": "google",
      "id": "google-ga4-link-missing",
      "when": "GA4-Google Ads 계정 링크 미연결 상태로 캠페인 라이브 중",
      "metric": "ga4_link_status",
      "condition": "== not_linked",
      "action": "GA4 링크 및 주요 이벤트 임포트 즉시 설정 권고",
      "guardrail": "없음 (설정 안내성 훅)",
      "confidence": "medium"
    },
    {
      "docId": "google-search",
      "section": "google",
      "id": "google-broad-match-insufficient-data",
      "when": "광범위 매치 키워드 포함 캠페인의 30일 전환수가 30건 미만",
      "metric": "conversions_30d",
      "condition": "< 30",
      "action": "광범위 매치 비중 축소, 구문/정확 매치로 전환 권고",
      "guardrail": "기존 고성과 광범위 키워드는 즉시 제외하지 말고 단계적 축소",
      "confidence": "high"
    },
    {
      "docId": "google-search",
      "section": "google",
      "id": "google-rsa-multiple-per-adgroup",
      "when": "광고그룹 내 활성 RSA 개수가 2개 이상",
      "metric": "active_rsa_count_per_adgroup",
      "condition": "> 1",
      "action": "저성과 RSA 일시정지, 데이터 통합",
      "guardrail": "A/B 테스트 목적의 임시 2개 운영은 최대 2주로 제한",
      "confidence": "medium"
    },
    {
      "docId": "google-search",
      "section": "google",
      "id": "google-rsa-asset-refresh-cadence",
      "when": "RSA 자산이 등록된 지 14일 미만인데 교체 시도",
      "metric": "days_since_asset_added",
      "condition": "< 14",
      "action": "교체 보류, 평가 데이터 누적 대기",
      "guardrail": "명백한 정책 위반/오탈자는 즉시 교체 예외",
      "confidence": "high"
    },
    {
      "docId": "google-search",
      "section": "google",
      "id": "google-adgroup-keyword-count",
      "when": "광고그룹 키워드 수가 SKAG 예외 목록 외에서 1개",
      "metric": "keyword_count_per_adgroup",
      "condition": "== 1",
      "action": "고가치 키워드(전환수 상위 20위 이내) 아니면 STAG로 재편 권고",
      "guardrail": "없음",
      "confidence": "medium"
    },
    {
      "docId": "google-pmax",
      "section": "google",
      "id": "google-pmax-assetgroup-low-conversion",
      "when": "자산그룹 월 전환수가 5건 미만",
      "metric": "conversions_30d_per_asset_group",
      "condition": "< 5",
      "action": "관련 자산그룹으로 병합",
      "guardrail": "신규 자산그룹 등록 후 14일 미만이면 병합 보류",
      "confidence": "high"
    },
    {
      "docId": "google-pmax",
      "section": "google",
      "id": "google-pmax-asset-rating-low",
      "when": "자산 평가가 '낮음(Low)'으로 7일 이상 유지",
      "metric": "asset_rating",
      "condition": "== low_for_7d",
      "action": "해당 자산 교체",
      "guardrail": "교체 후 2주 관찰 없이 재교체 금지",
      "confidence": "high"
    },
    {
      "docId": "google-pmax",
      "section": "google",
      "id": "google-pmax-brand-cannibalization",
      "when": "PMax 브랜드 검색어 노출 비중이 기존 검색 캠페인 대비 급증",
      "metric": "pmax_branded_impression_share",
      "condition": "> baseline * 1.3",
      "action": "브랜드 제외 리스트 추가",
      "guardrail": "없음",
      "confidence": "medium"
    },
    {
      "docId": "google-pmax",
      "section": "google",
      "id": "google-shopping-choose-standard",
      "when": "일예산이 10만원 미만이거나 SKU 50개 미만",
      "metric": "daily_budget_krw, sku_count",
      "condition": "daily_budget_krw < 100000 OR sku_count < 50",
      "action": "표준 쇼핑 캠페인 우선 운영 권고",
      "guardrail": "PMax 완전 배제는 아니며 병행 테스트는 허용",
      "confidence": "medium"
    },
    {
      "docId": "google-youtube",
      "section": "google",
      "id": "google-youtube-vac-legacy-flag",
      "when": "캠페인 유형이 여전히 '동영상 액션 캠페인(VAC)'으로 표기",
      "metric": "campaign_type",
      "condition": "== video_action_campaign",
      "action": "Demand Gen으로 마이그레이션 확인/실행",
      "guardrail": "자동 업그레이드 완료 계정은 중복 실행 금지",
      "confidence": "high"
    },
    {
      "docId": "google-youtube",
      "section": "google",
      "id": "google-youtube-skip-rate-high",
      "when": "5초 이내 스킵률이 계정 평균 대비 급증",
      "metric": "skip_rate_5s",
      "condition": "> account_avg * 1.2",
      "action": "훅(첫 3~5초) 소재 교체, 브랜드 노출 타이밍 앞당김",
      "guardrail": "동일 소재 7일 미만 데이터로 판단 금지",
      "confidence": "medium"
    },
    {
      "docId": "google-youtube",
      "section": "google",
      "id": "google-youtube-vtr-low",
      "when": "조회율(VTR)이 목표 대비 낮고 훅 구간에 로고/제품이 2초 이전 노출",
      "metric": "view_through_rate",
      "condition": "< target_vtr",
      "action": "첫 2초 로고/제품 클로즈업 제거, 패턴 인터럽트 요소 삽입",
      "guardrail": "없음",
      "confidence": "medium"
    },
    {
      "docId": "google-bidding",
      "section": "google",
      "id": "google-tcpa-insufficient-conversions",
      "when": "tCPA 전환을 시도하려는 캠페인의 30일 전환수가 30건 미만",
      "metric": "conversions_30d",
      "condition": "< 30",
      "action": "Maximize Conversions 유지, tCPA 전환 보류",
      "guardrail": "없음",
      "confidence": "high"
    },
    {
      "docId": "google-bidding",
      "section": "google",
      "id": "google-troas-insufficient-conversions",
      "when": "tROAS 전환을 시도하려는 캠페인의 30일 전환수가 15건 미만",
      "metric": "conversions_30d",
      "condition": "< 15",
      "action": "Maximize Conversion Value 유지, tROAS 전환 보류",
      "guardrail": "없음",
      "confidence": "high"
    },
    {
      "docId": "google-bidding",
      "section": "google",
      "id": "google-bidding-learning-period-hold",
      "when": "입찰 전략 변경 후 경과일수가 14일 미만",
      "metric": "days_since_bid_strategy_change",
      "condition": "< 14",
      "action": "성과 판단 보류, 목표값/예산 재조정 금지",
      "guardrail": "명백한 오류(전환 미기록 등)는 즉시 대응 예외",
      "confidence": "high"
    },
    {
      "docId": "google-bidding",
      "section": "google",
      "id": "google-target-adjustment-step-limit",
      "when": "tCPA/tROAS 목표값 1회 조정폭이 10% 초과",
      "metric": "target_change_pct",
      "condition": "> 0.10",
      "action": "조정폭을 10% 이내로 축소해 재실행 권고",
      "guardrail": "시즌성 이벤트 대응 시 예외 허용(별도 문서 참조)",
      "confidence": "medium"
    },
    {
      "docId": "google-scaling",
      "section": "google",
      "id": "google-budget-increase-eligible",
      "when": "캠페인 상태가 '예산으로 제한됨'이고 7일 평균 ROAS/CPA가 목표치 이상",
      "metric": "budget_limited_status, roas_7d",
      "condition": "budget_limited_status == true AND roas_7d >= target_roas",
      "action": "일예산 15~20% 증액",
      "guardrail": "주 1회 한도, 1회 최대 20% 초과 금지",
      "confidence": "high"
    },
    {
      "docId": "google-scaling",
      "section": "google",
      "id": "google-budget-increase-blocked-underperforming",
      "when": "'예산으로 제한됨' 상태이나 목표 ROAS/CPA 미달",
      "metric": "roas_7d",
      "condition": "< target_roas",
      "action": "증액 보류, 입찰/소재 최적화 우선 권고",
      "guardrail": "없음",
      "confidence": "high"
    },
    {
      "docId": "google-scaling",
      "section": "google",
      "id": "google-seasonality-duration-check",
      "when": "시즌성 조정 등록 기간이 14일 초과로 설정 시도",
      "metric": "seasonality_adjustment_duration_days",
      "condition": "> 14",
      "action": "시즌성 조정 대신 캠페인 예산/구조 재설계 권고",
      "guardrail": "없음",
      "confidence": "high"
    },
    {
      "docId": "google-scaling",
      "section": "google",
      "id": "google-single-budget-jump-limit",
      "when": "단일 증액 시도가 직전 대비 20% 초과",
      "metric": "budget_change_pct",
      "condition": "> 0.20",
      "action": "단계적 증액(20% 이내 분할)으로 재실행 권고",
      "guardrail": "확정된 프로모션 기간 총예산 설정은 예외",
      "confidence": "medium"
    },
    {
      "docId": "google-routine",
      "section": "google",
      "id": "google-wasted-search-term-negative",
      "when": "검색어가 90일 지출>0이면서 전환 0건",
      "metric": "conversions_90d, cost_90d",
      "condition": "conversions_90d == 0 AND cost_90d > breakeven_cost_threshold",
      "action": "지출 내림차순 상위 20개 검토 후 의도 카테고리 단위로 부정 키워드 등록",
      "guardrail": "브랜드/핵심 카테고리 키워드는 자동 차단 금지, 수동 확인 필수",
      "confidence": "medium"
    },
    {
      "docId": "google-routine",
      "section": "google",
      "id": "google-search-term-review-overdue",
      "when": "검색어 보고서 마지막 검토일로부터 7일 경과(신규 캠페인은 3~4일)",
      "metric": "days_since_last_search_term_review",
      "condition": "> 7",
      "action": "검토 대기 알림 발생",
      "guardrail": "없음",
      "confidence": "medium"
    },
    {
      "docId": "google-routine",
      "section": "google",
      "id": "google-single-lever-change-rule",
      "when": "동일 캠페인에 입찰/소재/키워드/예산 중 2개 이상 항목이 동일 주기 내 동시 변경",
      "metric": "concurrent_lever_changes",
      "condition": "> 1",
      "action": "변경을 분리해 순차 적용하도록 경고, 10~14일 대기 후 다음 변경",
      "guardrail": "긴급 정책 위반 대응, 명백한 오류 수정은 예외",
      "confidence": "medium"
    },
    {
      "docId": "google-routine",
      "section": "google",
      "id": "google-quality-score-low",
      "when": "키워드 품질지수가 5점 이하로 30일 이상 지속",
      "metric": "quality_score",
      "condition": "<= 5",
      "action": "광고 관련성·방문페이지 경험 점검 큐에 등록",
      "guardrail": "없음",
      "confidence": "medium"
    },
    {
      "docId": "google-youtube-insights",
      "section": "google",
      "id": "google-pmax-no-touch-learning-45d",
      "when": "PMax 캠페인 생성 또는 주요 설정 변경 후 45일 이내에 예산·입찰 목표 변경 시도",
      "metric": "days_since_pmax_launch_or_major_change",
      "condition": "< 45",
      "action": "변경 보류 경고, 45일 학습기간 완료 후 재평가 권고",
      "guardrail": "명백한 오류(전환 미기록, 정책 반려 등)는 즉시 대응 예외",
      "confidence": "medium"
    },
    {
      "docId": "google-youtube-insights",
      "section": "google",
      "id": "google-demandgen-conversion-recheck",
      "when": "Demand Gen 캠페인 전환수가 20일 내 100% 이상 증가",
      "metric": "conversions_change_pct_20d",
      "condition": ">= 1.00",
      "action": "Engaged View Conversion 비중·재귀속(따뜻한 트래픽 흡수) 여부 딥다이브 검증 알림",
      "guardrail": "검증 전 예산 확대 금지",
      "confidence": "medium"
    },
    {
      "docId": "google-youtube-insights",
      "section": "google",
      "id": "google-ai-max-negative-prereq",
      "when": "AI Max 활성화 시도 & 계정 레벨 부정 키워드 리스트 미설정",
      "metric": "account_level_negative_keyword_count",
      "condition": "== 0",
      "action": "활성화 보류, 부정 키워드·브랜드 제외 리스트 선행 구축 안내",
      "guardrail": "없음",
      "confidence": "low"
    },
    {
      "docId": "google-ai-search",
      "section": "google",
      "id": "google-aio-nonbrand-informational-budget-review",
      "when": "논브랜드 정보형 키워드 그룹의 오가닉+유료 클릭이 60일 이동평균 대비 30% 이상 하락 & 해당 쿼리에 AI Overviews 노출 확인",
      "metric": "clicks_change_pct_60d",
      "condition": "<= -0.30",
      "action": "예산 축소 검토 알림, 전환 목표를 마이크로 전환(예: 상담신청)으로 재조정 제안",
      "guardrail": "거래형·로컬·브랜드 키워드는 이 규칙 대상에서 제외",
      "confidence": "medium"
    },
    {
      "docId": "google-ai-search",
      "section": "google",
      "id": "google-product-schema-missing-flag",
      "when": "쇼핑 피드 연동 상품 페이지에 Product/Offer 구조화 데이터 미검출",
      "metric": "schema_product_offer_present",
      "condition": "== false",
      "action": "구조화 데이터 추가 작업 티켓 생성 알림",
      "guardrail": "없음",
      "confidence": "medium"
    },
    {
      "docId": "google-ai-search",
      "section": "google",
      "id": "google-ai-max-account-level-verify",
      "when": "AI Max 활성화 후 30일 경과 & 계정 레벨 성과 검증 로그 없음",
      "metric": "days_since_ai_max_enabled",
      "condition": ">= 30",
      "action": "계정 레벨 CPA/ROAS 전후 비교 리포트 생성 알림(84% 중립·부정 결과 사례 참고)",
      "guardrail": "없음",
      "confidence": "low"
    },
    {
      "docId": "google-youtube-top100",
      "section": "google",
      "id": "google-aug17-bidding-target-review",
      "when": "예산제한(Limited by budget) 상태의 tCPA/tROAS/Demand Gen tCPC 캠페인이 최근 실적을 목표치보다 유리하게 유지 중",
      "metric": "actual_cpa_vs_target_cpa",
      "condition": "실제CPA < 목표CPA * 0.8 (또는 실제ROAS > 목표ROAS * 1.2)",
      "action": "2026-08-17 스마트비딩 변경 전 타겟을 최근 실적 수준으로 조정하거나 예산 증액 검토 알림",
      "guardrail": "예산 미제약 캠페인은 대상 제외",
      "confidence": "high"
    },
    {
      "docId": "google-youtube-top100",
      "section": "google",
      "id": "google-ai-max-url-expansion-review",
      "when": "AI Max 캠페인에서 Final URL expansion이 켜진 상태로 30일 이상 운영",
      "metric": "ai_max_final_url_expansion_enabled_days",
      "condition": ">= 30",
      "action": "브랜드 안전성/타겟 정밀도 필요 여부 재확인 후 expansion 끄기 + URL 포함 규칙 검토 알림",
      "guardrail": "검색어 리포트에서 무관 트래픽 비중이 낮으면(5% 미만) 유지 허용",
      "confidence": "high"
    },
    {
      "docId": "google-youtube-top100",
      "section": "google",
      "id": "google-pmax-store-goal-single-objective",
      "when": "PMax 매장 목표 캠페인에서 '매장 방문'과 '매출' 목표가 동시 설정 시도됨",
      "metric": "store_goal_objective_count",
      "condition": "> 1",
      "action": "설정 차단, 목표를 하나로 선택하도록 안내",
      "guardrail": "없음",
      "confidence": "high"
    },
    {
      "docId": "google-youtube-top100",
      "section": "google",
      "id": "google-roas-target-staleness-check",
      "when": "ROAS 타겟값이 마지막 변경 이후 180일 이상 그대로 유지",
      "metric": "days_since_last_roas_target_change",
      "condition": ">= 180",
      "action": "블렌디드 ROAS/기여이익 기준으로 타겟 재검토 알림",
      "guardrail": "최근 30일 성과가 목표 대비 -10% 이상 악화 중이면 우선 원인 분석 먼저",
      "confidence": "medium"
    },
    {
      "docId": "lab-template",
      "section": "lab",
      "id": "lab-experiment-missing-field",
      "when": "새 실험 로그 문서에 7개 필드 중 하나 이상 누락",
      "metric": "experiment_log_field_count",
      "condition": "< 7",
      "action": "머지 차단, 누락 필드 목록을 작성자에게 안내",
      "guardrail": "이 템플릿 문서(lab-template) 자체는 예외",
      "confidence": "high"
    },
    {
      "docId": "lab-template",
      "section": "lab",
      "id": "lab-experiment-underpowered-conclusion",
      "when": "실험 기간이 14일 미만인데 결론이 '채택' 또는 '기각'으로 확정",
      "metric": "experiment_duration_days",
      "condition": "< 14",
      "action": "결론을 '보류'로 되돌리고 추가 관측 요청",
      "guardrail": "긴급 소재 사고 대응 등 명시적 예외 사유가 기록된 경우 허용",
      "confidence": "medium"
    },
    {
      "docId": "meta-account-setup",
      "section": "meta",
      "id": "meta-emq-below-threshold",
      "when": "핵심 전환 이벤트(구매/리드)의 EMQ가 6점 미만인 상태가 48시간 이상 지속",
      "metric": "event_match_quality_score",
      "condition": "< 6",
      "action": "이메일/전화번호 등 사용자 파라미터 해싱 필드 점검 알림 발송",
      "guardrail": "이벤트 발행 후 최소 48시간 경과 데이터만 판정에 사용",
      "confidence": "high"
    },
    {
      "docId": "meta-account-setup",
      "section": "meta",
      "id": "meta-capi-dedup-missing",
      "when": "동일 전환에 대해 픽셀과 CAPI 이벤트의 event_id가 불일치하거나 누락",
      "metric": "capi_dedup_match_rate",
      "condition": "< 0.95",
      "action": "이벤트 소스별 event_id 매핑 로직 점검 알림",
      "guardrail": "구현 변경 없이 자동 수정 금지, 알림만 발송",
      "confidence": "high"
    },
    {
      "docId": "meta-account-setup",
      "section": "meta",
      "id": "meta-catalog-feed-error",
      "when": "카탈로그 피드 항목 중 반려/오류 비율이 5% 초과",
      "metric": "catalog_disapproved_item_pct",
      "condition": "> 0.05",
      "action": "피드 오류 상위 사유 리포트 생성 및 담당자 알림",
      "guardrail": "자동 항목 삭제 금지, 리포트만 생성",
      "confidence": "medium"
    },
    {
      "docId": "meta-campaign-structure",
      "section": "meta",
      "id": "meta-adset-fragmentation-warning",
      "when": "동일 캠페인 목표·유사 오디언스로 활성 광고세트가 4개 이상 동시 운영",
      "metric": "active_adset_count_per_objective",
      "condition": ">= 4",
      "action": "광고세트 통합 검토 알림 발송 (자동 병합 금지)",
      "guardrail": "실제 병합은 담당자 승인 후 수동 실행",
      "confidence": "medium"
    },
    {
      "docId": "meta-campaign-structure",
      "section": "meta",
      "id": "meta-adset-learning-limited-7d",
      "when": "광고세트가 7일 연속 '학습 제한' 상태(주간 전환 50회 미달)",
      "metric": "learning_limited_days",
      "condition": ">= 7",
      "action": "타겟 확장 또는 상위 캠페인(ASC+/CBO)으로 통합 제안",
      "guardrail": "예산 증액과 동시에 실행하지 않음(변수 분리)",
      "confidence": "high"
    },
    {
      "docId": "meta-campaign-structure",
      "section": "meta",
      "id": "meta-low-creative-diversity",
      "when": "광고세트당 활성 크리에이티브 수가 6개 미만",
      "metric": "active_creatives_per_adset",
      "condition": "< 6",
      "action": "신규 크리에이티브 추가 요청 알림",
      "guardrail": "일 1회 알림, 24시간 내 중복 알림 금지",
      "confidence": "medium"
    },
    {
      "docId": "meta-creative",
      "section": "meta",
      "id": "meta-non-vertical-creative-flag",
      "when": "신규 업로드 소재의 종횡비가 9:16/4:5/1:1이 아닌 가로형으로 감지",
      "metric": "creative_aspect_ratio",
      "condition": "not in [9:16, 4:5, 1:1]",
      "action": "세로형 재제작 권고 알림",
      "guardrail": "게재 차단은 하지 않고 알림만 발송",
      "confidence": "medium"
    },
    {
      "docId": "meta-creative",
      "section": "meta",
      "id": "meta-creative-volume-below-budget-tier",
      "when": "월 소재 투입 수가 해당 예산 구간 권장치(5K당 4~5개, 100K당 40~50개) 대비 50% 미만",
      "metric": "monthly_new_creative_count_ratio",
      "condition": "< 0.5",
      "action": "크리에이티브 제작 파이프라인 점검 알림",
      "guardrail": "월 1회 판정, 월 중간 알림 금지",
      "confidence": "medium"
    },
    {
      "docId": "meta-creative-testing",
      "section": "meta",
      "id": "meta-creative-test-insufficient-data",
      "when": "테스트 변형의 전환수가 50회 미만이고 경과일이 7일 미만",
      "metric": "conversions_per_variant",
      "condition": "< 50 AND days_running < 7",
      "action": "판정 보류, 데이터 수집 계속 알림",
      "guardrail": "이 상태에서는 예산/타겟 변경 금지",
      "confidence": "high"
    },
    {
      "docId": "meta-creative-testing",
      "section": "meta",
      "id": "meta-winner-scale-standard",
      "when": "승자 소재가 목표 지표(ROAS/CPA) 기준 달성 상태로 3일 이상 안정",
      "metric": "days_meeting_target",
      "condition": ">= 3",
      "action": "스케일 캠페인 예산 20% 증액 (3~4일 간격)",
      "guardrail": "단일 증액 20% 상한, 증액 후 최소 48시간 관망",
      "confidence": "high"
    },
    {
      "docId": "meta-creative-testing",
      "section": "meta",
      "id": "meta-winner-scale-aggressive",
      "when": "일 전환 300회 이상 & CPA가 목표 대비 30% 이상 낮음",
      "metric": "daily_conversions",
      "condition": ">= 300 AND cpa_vs_target <= -0.30",
      "action": "예산 40~50% 증액 허용",
      "guardrail": "3일 연속 조건 충족 시에만 적용, 연속 적용은 주 2회 상한",
      "confidence": "medium"
    },
    {
      "docId": "meta-creative-testing",
      "section": "meta",
      "id": "meta-creative-lifespan-warning",
      "when": "소재 노출 경과일이 21일 이상이며 CTR이 7일 전 대비 10% 이상 하락",
      "metric": "creative_age_days",
      "condition": ">= 21",
      "action": "교체 후보 소재 테스트 투입 알림",
      "guardrail": "즉시 소재 중단 금지, 대체 소재 검증 후 순차 교체",
      "confidence": "medium"
    },
    {
      "docId": "meta-targeting",
      "section": "meta",
      "id": "meta-legacy-detailed-targeting-stack",
      "when": "광고세트에 관심사 상세타겟팅이 3개 이상 AND 옵션이 상세타겟팅 확장(제안) OFF",
      "metric": "detailed_targeting_count",
      "condition": ">= 3 AND detailed_targeting_expansion == false",
      "action": "과거 방식 세팅 감지, 어드밴티지+ 오디언스 전환 검토 알림",
      "guardrail": "자동 변경 금지, 담당자 확인 후 수동 전환",
      "confidence": "high"
    },
    {
      "docId": "meta-targeting",
      "section": "meta",
      "id": "meta-prospecting-missing-exclusion",
      "when": "콜드 프로스펙팅 목적 광고세트에 커스텀 오디언스 제외가 설정되지 않음",
      "metric": "exclusion_audience_count",
      "condition": "== 0",
      "action": "구매자/방문자 제외 오디언스 추가 권고 알림",
      "guardrail": "재구매 유도가 목적인 캠페인(구매자 타겟)은 이 룰에서 제외",
      "confidence": "medium"
    },
    {
      "docId": "meta-scaling",
      "section": "meta",
      "id": "meta-budget-change-over-20pct",
      "when": "24시간 내 예산 변경폭이 직전 대비 20% 초과",
      "metric": "budget_change_pct_24h",
      "condition": "> 0.20",
      "action": "학습 리셋 위험 경고, 변경 승인 재확인 요청",
      "guardrail": "긴급 예산 중단(성과 급락) 상황은 이 룰에서 예외 처리",
      "confidence": "high"
    },
    {
      "docId": "meta-scaling",
      "section": "meta",
      "id": "meta-scale-standard-increment",
      "when": "광고세트/캠페인이 목표 지표를 3일 연속 충족하고 마지막 증액 후 3일 이상 경과",
      "metric": "days_since_last_budget_change",
      "condition": ">= 3",
      "action": "예산 20% 증액 실행 제안",
      "guardrail": "1회 실행 후 재실행까지 최소 3일 대기",
      "confidence": "medium"
    },
    {
      "docId": "meta-scaling",
      "section": "meta",
      "id": "meta-scale-aggressive-increment",
      "when": "일 전환 300회 이상 AND CPA가 목표 대비 30% 이상 낮음",
      "metric": "daily_conversions",
      "condition": ">= 300 AND cpa_vs_target <= -0.30",
      "action": "예산 40~50% 증액 허용",
      "guardrail": "주 2회 상한, 증액 후 48시간 관망 의무",
      "confidence": "medium"
    },
    {
      "docId": "meta-scaling",
      "section": "meta",
      "id": "meta-premature-kill-adset",
      "when": "광고세트 집행 후 3일 미만 & 학습 단계 중 예산/타겟 중대 수정 시도",
      "metric": "adset_age_days",
      "condition": "< 3",
      "action": "조기 판단 경고, 최소 3~5일 관망 권고 알림",
      "guardrail": "명백한 정책 위반·과지출 등 긴급 사유는 예외",
      "confidence": "medium"
    },
    {
      "docId": "meta-routine",
      "section": "meta",
      "id": "meta-frequency-cold-warning",
      "when": "콜드(프로스펙팅) 캠페인 빈도가 2.5 초과",
      "metric": "frequency_cold",
      "condition": "> 2.5",
      "action": "소재 피로 경고, 신규 크리에이티브 투입 알림",
      "guardrail": "동일 알림 24시간 내 중복 발송 금지",
      "confidence": "medium"
    },
    {
      "docId": "meta-routine",
      "section": "meta",
      "id": "meta-frequency-retargeting-warning",
      "when": "리타겟팅 캠페인 빈도가 4.0 초과",
      "metric": "frequency_retargeting",
      "condition": "> 4.0",
      "action": "오디언스 확장 또는 소재 교체 알림",
      "guardrail": "재구매 유도 목적 캠페인은 임계값 상향 조정 가능",
      "confidence": "medium"
    },
    {
      "docId": "meta-routine",
      "section": "meta",
      "id": "meta-ctr-drop-early-warning",
      "when": "CTR이 7일 전 대비 10% 이상 하락",
      "metric": "ctr_7d_change_pct",
      "condition": "<= -0.10",
      "action": "조기 경보 알림, 크리에이티브 점검 요청",
      "guardrail": "최소 지출 기준(목표 CPA 2배) 미달 시 판정 보류",
      "confidence": "medium"
    },
    {
      "docId": "meta-routine",
      "section": "meta",
      "id": "meta-cpa-pause-rule",
      "when": "CPA가 목표 대비 150% 초과 상태로 3일 연속 지속",
      "metric": "cpa_vs_target_pct",
      "condition": ">= 1.50 for 3 consecutive days",
      "action": "해당 광고세트/광고 일시중지",
      "guardrail": "최소 지출(목표 CPA의 2~3배) 미충족 시 적용 제외, 일시중지는 재개 검토 전제",
      "confidence": "high"
    },
    {
      "docId": "meta-routine",
      "section": "meta",
      "id": "meta-daily-budget-flapping",
      "when": "7일 내 예산 변경 횟수가 3회 초과",
      "metric": "budget_change_count_7d",
      "condition": "> 3",
      "action": "예산 변경 빈도 과다 경고, 변경 주기 규칙(3~4일 간격) 안내",
      "guardrail": "성과 급락 대응 등 긴급 변경은 카운트에서 제외 가능",
      "confidence": "medium"
    },
    {
      "docId": "meta-youtube-insights",
      "section": "meta",
      "id": "meta-hard-deck-spend-floor",
      "when": "일 예산을 최저 방어선(하드덱) 미만으로 낮추려는 시도 발생 & 저성과 지속일수 3일 미만",
      "metric": "days_underperforming, proposed_daily_budget",
      "condition": "days_underperforming < 3 AND proposed_daily_budget < hard_deck_floor",
      "action": "감액 보류, 3일 연속 저성과 확인 후 재검토 알림",
      "guardrail": "하드덱 값 자체는 계정별 수동 설정, 명백한 과지출·정책위반은 예외",
      "confidence": "low"
    },
    {
      "docId": "meta-youtube-top100",
      "section": "meta",
      "id": "meta-avoid-cost-per-result-goal-default",
      "when": "신규 캠페인 입찰 전략을 Cost-Per-Result Goal(코스트캡)로 기본 설정하려는 시도 발생",
      "metric": "bid_strategy",
      "condition": "bid_strategy == 'cost_per_result_goal' AND account_has_min_roas_option == true",
      "action": "Min ROAS 입찰과 2주 A/B 테스트 후 결정, 코스트캡 단독 채택 보류",
      "guardrail": "학습단계(50 전환/주 미만) 계정은 예외, 전환량 부족 시 코스트캡 유지 허용",
      "confidence": "medium"
    },
    {
      "docId": "naver-account-structure",
      "section": "naver",
      "id": "naver-group-keyword-limit-warning",
      "when": "광고그룹 내 등록 키워드 수가 500개를 초과",
      "metric": "group_keyword_count",
      "condition": "> 500",
      "action": "그룹 분할(속성 기준 재분리) 검토 알림 발송",
      "guardrail": "실제 분할은 수동 승인 후 실행, 자동 이동 금지(키워드는 그룹 간 이동 불가하므로 신규 생성 필요)",
      "confidence": "medium"
    },
    {
      "docId": "naver-account-structure",
      "section": "naver",
      "id": "naver-mixed-brand-nonbrand-detect",
      "when": "동일 광고그룹 내 브랜드 키워드와 일반/경쟁사 키워드가 혼재",
      "metric": "group_keyword_type_diversity",
      "condition": ">= 2 categories in one group",
      "action": "그룹 분리 권고 리포트 생성",
      "guardrail": "키워드명 기반 브랜드 매칭은 오탐 가능 — 광고주 브랜드 사전(brand_dictionary) 대조 필수",
      "confidence": "medium"
    },
    {
      "docId": "naver-account-structure",
      "section": "naver",
      "id": "naver-device-cross-serve-check",
      "when": "PC 전용 그룹의 노출 매체 목록에 모바일 통합검색이 포함",
      "metric": "group_media_setting_mismatch",
      "condition": "device_type != media_targets",
      "action": "매체 설정 수정 알림, 자동 미수정",
      "guardrail": "매체 설정 변경은 광고주 승인 후에만 반영",
      "confidence": "high"
    },
    {
      "docId": "naver-account-structure",
      "section": "naver",
      "id": "naver-new-group-quality-caution",
      "when": "광고그룹 생성 후 24시간 이내",
      "metric": "group_age_hours",
      "condition": "< 24",
      "action": "신규 소재 품질지수 4단계(중간) 가정, 입찰가 상한 보수적 적용 플래그",
      "guardrail": "24시간 경과 후 자동 해제, 수동 재확인 권장",
      "confidence": "medium"
    },
    {
      "docId": "naver-keywords",
      "section": "naver",
      "id": "naver-longtail-ratio-low-warning",
      "when": "그룹 내 대표키워드(월검색량 상위 20%) 대비 세부키워드 등록 비율이 낮음",
      "metric": "longtail_keyword_ratio",
      "condition": "< 0.5",
      "action": "연관키워드 도구로 세부키워드 후보 20개 이상 추출해 확장 제안",
      "guardrail": "제안만 생성, 자동 등록 금지(사람 승인 필요)",
      "confidence": "medium"
    },
    {
      "docId": "naver-keywords",
      "section": "naver",
      "id": "naver-zero-conversion-search-term-exclude",
      "when": "검색어보고서 기준 특정 검색어의 클릭 20회 이상, 전환 0건이 최근 30일 지속",
      "metric": "search_term_conversions_30d",
      "condition": "clicks >= 20 AND conversions == 0",
      "action": "제외 검색어 등록 후보로 플래그",
      "guardrail": "브랜드/핵심 대표키워드는 자동 제외 후보에서 배제, 최종 등록은 수동 확인",
      "confidence": "medium"
    },
    {
      "docId": "naver-keywords",
      "section": "naver",
      "id": "naver-seasonal-keyword-lead-time",
      "when": "데이터랩 기준 특정 카테고리 검색량이 전년 동기 대비 상승 추세 진입",
      "metric": "datalab_trend_slope",
      "condition": "positive trend detected 60~90 days before peak",
      "action": "시즌 키워드 후보 리스트 생성 및 담당자 알림",
      "guardrail": "추세 판단은 최소 4주 이상 데이터로 확정",
      "confidence": "low"
    },
    {
      "docId": "naver-bidding",
      "section": "naver",
      "id": "naver-bid-above-breakeven-cpc",
      "when": "키워드의 실제 평균 CPC가 손익분기 CPC(CVR×AOV×마진율)를 7일 연속 초과",
      "metric": "avg_cpc_7d",
      "condition": "> breakeven_cpc",
      "action": "입찰가 15~20% 인하",
      "guardrail": "일 1회 조정 한도, 최저 입찰가 70원 미만 금지, 신규 소재(24시간 미만)는 제외",
      "confidence": "medium"
    },
    {
      "docId": "naver-bidding",
      "section": "naver",
      "id": "naver-bid-down-low-roas",
      "when": "키워드 ROAS가 손익분기 ROAS 미만으로 7일 연속",
      "metric": "roas_7d",
      "condition": "< breakeven_roas",
      "action": "입찰가 20% 인하",
      "guardrail": "일 1회, 최저 입찰가 70원 미만 금지",
      "confidence": "high"
    },
    {
      "docId": "naver-bidding",
      "section": "naver",
      "id": "naver-bid-up-safe-margin",
      "when": "키워드 ROAS가 목표 ROAS(손익분기+200%p)를 14일 연속 초과하고 노출순위가 5위 밖",
      "metric": "roas_14d",
      "condition": "> target_roas AND rank > 5",
      "action": "입찰가 10% 인상 후 순위 변화 모니터링",
      "guardrail": "1회 인상 후 최소 3일 관찰 없이 재인상 금지",
      "confidence": "medium"
    },
    {
      "docId": "naver-bidding",
      "section": "naver",
      "id": "naver-new-material-quality-grace",
      "when": "소재 게재 후 24시간 미만",
      "metric": "material_age_hours",
      "condition": "< 24",
      "action": "품질지수 4단계(중간)로 간주, 자동 입찰가 조정 규칙 적용 보류",
      "guardrail": "24시간 경과 시 자동 해제",
      "confidence": "high"
    },
    {
      "docId": "naver-bidding",
      "section": "naver",
      "id": "naver-budget-burn-midday-alert",
      "when": "오전 12시 이전 일예산 소진률이 50% 이상",
      "metric": "budget_burn_rate_by_noon",
      "condition": ">= 0.5",
      "action": "입찰가·소재 추가 점검 알림 발송",
      "guardrail": "알림만 발송, 자동 예산 증액 금지",
      "confidence": "low"
    },
    {
      "docId": "naver-ads-creative",
      "section": "naver",
      "id": "naver-creative-min-count-check",
      "when": "광고그룹 내 등록 소재 수가 1개",
      "metric": "group_creative_count",
      "condition": "== 1",
      "action": "성과기반 노출 활성화를 위해 소재 추가 등록 알림",
      "guardrail": "자동 생성 문구는 반려 위험 표현(최상급·의학적 효능) 필터링 후에만 등록 제안",
      "confidence": "low"
    },
    {
      "docId": "naver-ads-creative",
      "section": "naver",
      "id": "naver-creative-banned-phrase-filter",
      "when": "소재 문구 초안에 반려 위험 표현(1위/최고/압도적/통증 완화/후회 등) 포함",
      "metric": "creative_text_risk_flag",
      "condition": "contains banned_phrase_list",
      "action": "등록 전 차단 및 완곡 표현으로 수정 제안",
      "guardrail": "금칙어 사전은 정기적으로 검수 반려 사례 반영해 갱신",
      "confidence": "medium"
    },
    {
      "docId": "naver-ads-creative",
      "section": "naver",
      "id": "naver-extension-coverage-gap",
      "when": "업종상 사용 가능한 확장소재(가격링크/전화번호/서브링크 등) 중 미등록 항목 존재",
      "metric": "extension_coverage_ratio",
      "condition": "< 0.7",
      "action": "미등록 확장소재 목록 생성 및 등록 권고",
      "guardrail": "업종별 적용 가능 확장소재만 제안(예: 이미지형 서브링크는 식당/여행 등 한정 업종)",
      "confidence": "medium"
    },
    {
      "docId": "naver-shopping",
      "section": "naver",
      "id": "naver-shopping-soldout-auto-pause",
      "when": "스마트스토어 상품이 품절 또는 삭제 상태로 전환",
      "metric": "product_stock_status",
      "condition": "== soldout OR == deleted",
      "action": "해당 상품 쇼핑검색광고 자동 노출 중단 확인(EP 반영 지연 시 수동 확인 알림)",
      "guardrail": "EP 반영 주기(최대 1시간, 네이버쇼핑 반영 최대 6시간)를 감안해 즉시 조치 실패 시 알림만 발송",
      "confidence": "medium"
    },
    {
      "docId": "naver-shopping",
      "section": "naver",
      "id": "naver-shopping-negative-search-term-review",
      "when": "상품 소재의 검색어 리포트에서 특정 검색어 클릭 20회 이상, 전환 0건이 14일 지속",
      "metric": "shopping_search_term_conversions_14d",
      "condition": "clicks >= 20 AND conversions == 0",
      "action": "제외 검색어 등록 후보로 플래그",
      "guardrail": "핵심 카테고리 검색어는 자동 제외 후보에서 배제",
      "confidence": "medium"
    },
    {
      "docId": "naver-shopping",
      "section": "naver",
      "id": "naver-shopping-title-seo-gap-check",
      "when": "상품명에 카테고리 대표키워드가 미포함되거나 속성/태그 미등록",
      "metric": "product_title_seo_completeness",
      "condition": "< required_fields",
      "action": "상품명·속성·태그 보완 제안 리스트 생성",
      "guardrail": "과도한 키워드 나열(어뷰징성 상품명)은 제안에서 제외",
      "confidence": "low"
    },
    {
      "docId": "naver-routine",
      "section": "naver",
      "id": "naver-daily-budget-burn-check",
      "when": "매일 정오 기준 일예산 소진률 확인",
      "metric": "budget_burn_rate_noon",
      "condition": ">= 0.5",
      "action": "오후 소진 속도 예측 후 입찰가/예산 조정 알림",
      "guardrail": "자동 예산 증액 금지, 알림만 발송",
      "confidence": "low"
    },
    {
      "docId": "naver-routine",
      "section": "naver",
      "id": "naver-weekly-zero-conversion-term-sweep",
      "when": "매주 1회 검색어보고서 배치 분석",
      "metric": "search_term_conversions_7d",
      "condition": "clicks >= 15 AND conversions == 0",
      "action": "제외 검색어 후보 리스트 생성",
      "guardrail": "브랜드/대표키워드 자동 제외 후보에서 배제, 최종 등록은 수동 승인",
      "confidence": "medium"
    },
    {
      "docId": "naver-routine",
      "section": "naver",
      "id": "naver-weekly-underperform-keyword-flag",
      "when": "매주 1회, 키워드 CTR이 계정 평균의 50% 미만이고 클릭 30회 이상",
      "metric": "keyword_ctr_vs_account_avg",
      "condition": "< 0.5 * account_avg_ctr AND clicks >= 30",
      "action": "소재 교체 또는 입찰가 재검토 후보로 플래그",
      "guardrail": "신규 소재(24시간 미만)는 판단 대상에서 제외",
      "confidence": "medium"
    },
    {
      "docId": "naver-routine",
      "section": "naver",
      "id": "naver-monthly-budget-reallocation",
      "when": "매월 1회, 캠페인/그룹 ROAS가 계정 평균 대비 현저한 격차",
      "metric": "campaign_roas_vs_account_avg_monthly",
      "condition": "top quartile vs bottom quartile gap > 2x",
      "action": "저성과 그룹 예산 일부를 고성과 그룹으로 재배분 제안",
      "guardrail": "재배분 폭은 1회 최대 20%로 제한, 수동 승인 필요",
      "confidence": "low"
    },
    {
      "docId": "naver-routine",
      "section": "naver",
      "id": "naver-creative-refresh-cycle",
      "when": "동일 소재 문구가 90일 이상 무변경 게재",
      "metric": "creative_unchanged_days",
      "condition": ">= 90",
      "action": "소재 리프레시(문구 교체) 검토 알림",
      "guardrail": "CTR이 계정 평균 이상인 소재는 알림에서 제외 가능",
      "confidence": "low"
    },
    {
      "docId": "naver-youtube-insights",
      "section": "naver",
      "id": "naver-display-campaign-cap-alert",
      "when": "계정 내 디스플레이(GFA) 캠페인 총 개수가 신규 상한에 근접",
      "metric": "display_campaign_count",
      "condition": ">= 900",
      "action": "캠페인 통폐합 검토 알림 발송 (상한 1,000개, 2026-03-30 통합 플랫폼 기준)",
      "guardrail": "자동 삭제·병합 금지, 알림만 발송",
      "confidence": "low"
    },
    {
      "docId": "naver-youtube-insights",
      "section": "naver",
      "id": "naver-shorts-keyword-candidate",
      "when": "쇼츠·숏폼 유입 검색어 중 최근 2주 검색량이 이전 대비 급증",
      "metric": "shorts_referral_keyword_growth_2w",
      "condition": "growth_rate >= 2x",
      "action": "파워링크 키워드/확장소재 후보로 등록 제안",
      "guardrail": "자동 키워드 등록 금지, 사람 검토 후 반영",
      "confidence": "low"
    },
    {
      "docId": "naver-ai-search",
      "section": "naver",
      "id": "naver-ai-briefing-exposure-monitor",
      "when": "주요 브랜드/핵심 키워드 목록에 대해 AI 브리핑 노출 여부를 정기 크롤링",
      "metric": "ai_briefing_exposure_flag",
      "condition": "노출 여부가 이전 체크 대비 변경(신규 노출 or 노출 중단)",
      "action": "담당자에게 알림, 해당 키워드의 광고 CTR·전환 추이를 별도 추적 태그로 표시",
      "guardrail": "자동 입찰 조정 금지, 알림만 발송 — 확정 인과관계 데이터 없음",
      "confidence": "low"
    },
    {
      "docId": "naver-ai-search",
      "section": "naver",
      "id": "naver-ai-briefing-ctr-drop-flag",
      "when": "AI 브리핑이 노출되는 키워드의 검색광고 CTR이 노출 이전 4주 평균 대비 하락",
      "metric": "ctr_4w_change_on_ai_briefing_keywords",
      "condition": "<= -15%",
      "action": "쇼핑검색광고·애드부스트 비중 재검토 알림, 03번 품질지수 점검 항목에 편입",
      "guardrail": "자동 예산 재배분 금지, 사람 검토 후 반영. 표본 부족 시(주간 클릭 30회 미만) 규칙 적용 보류",
      "confidence": "low"
    },
    {
      "docId": "naver-ai-search",
      "section": "naver",
      "id": "naver-smartstore-attribute-completeness",
      "when": "스마트스토어 상품 등록/수정 시 네이버쇼핑 필터 대상 속성값 누락 여부 점검",
      "metric": "product_attribute_completeness_pct",
      "condition": "< 90%",
      "action": "속성값 보완 필요 상품 리스트 생성 및 담당자 알림",
      "guardrail": "자동 수정 금지, 사람 검토 후 반영",
      "confidence": "low"
    },
    {
      "docId": "naver-plus-store",
      "section": "naver",
      "id": "naver-plus-store-roas-window-extend",
      "when": "네플스/개인화 채널 비중이 높은 캠페인의 ROAS를 표준 7일 판정 주기로 평가하려는 경우",
      "metric": "roas_evaluation_window_days",
      "condition": "== 7 AND target_channel == naver_plus_store_personalized",
      "action": "판정 주기를 21~28일로 임시 연장 제안(재구매·재노출형 채널 특성 반영)",
      "guardrail": "자동 연장 금지 — 담당자 확인 후 수동 승인. 정량적 '개인화 재노출 지연기간' 공식 근거 없음(low), 연장폭은 자체 계정 데이터로 보정 필수",
      "confidence": "low"
    },
    {
      "docId": "naver-plus-store",
      "section": "naver",
      "id": "naver-plus-store-new-target-click-campaign-kpi",
      "when": "신규 타깃 발굴 목적의 블로그·지식인·파워링크·GFA 캠페인을 기존 즉시전환 ROAS 기준으로 조기 종료하려는 경우",
      "metric": "immediate_roas_7d",
      "condition": "< breakeven_roas AND campaign_purpose == new_target_discovery",
      "action": "즉시 예산 삭감 대신 '관심데이터 축적 KPI'(찜·재방문·재검색 발생률)로 별도 트래킹 태그 부여 후 재평가 알림",
      "guardrail": "이 규칙 자체가 검증되지 않은 가설(파워링크 클릭→개인화 재노출 연동, low confidence)에 기반하므로, 자동 예산 재배분·자동 연장 금지. 사람이 관심데이터 축적 효과를 자체 데이터로 확인한 뒤에만 캠페인 유지 결정",
      "confidence": "low"
    },
    {
      "docId": "naver-plus-store",
      "section": "naver",
      "id": "naver-plus-store-exposure-risk-monitor",
      "when": "최근 30일 벌점 합계 또는 어뷰징 적발 건수가 네플스 비노출 임계치에 근접",
      "metric": "penalty_points_30d, abuse_flags_weekly",
      "condition": "penalty_points_30d >= 10 AND penalty_ratio >= 40% OR abuse_flags_weekly >= 2",
      "action": "담당자에게 네플스 노출 중단 위험 알림, 원인(배송지연/응대/어뷰징) 태그별로 분류",
      "guardrail": "자동 조치 없음 — 사람이 셀러센터에서 직접 소명·개선 처리. 정책 세부 기준은 네이버 공지 변경 가능성 있으므로 분기 1회 원문 재확인",
      "confidence": "medium"
    },
    {
      "docId": "naver-youtube-top100",
      "section": "naver",
      "id": "naver-ads-not-showing-url-recollect",
      "when": "세팅 변경 없이 광고 노출/소진이 갑자기 0에 가깝게 떨어짐",
      "metric": "impressions_drop_pct_1d",
      "condition": ">= 80% (전일 대비)",
      "action": "사이트 색인·연결URL 재수집 상태 점검 알림 발송",
      "guardrail": "자동 예산 조정·중단 금지, 알림만 발송(원인 미확정 상태이므로 사람 확인 필수)",
      "confidence": "medium"
    },
    {
      "docId": "naver-youtube-top100",
      "section": "naver",
      "id": "naver-adboost-overlap-check",
      "when": "동일 상품군에서 ADboost(쇼핑)와 쇼핑검색광고를 동시 운영",
      "metric": "adboost_and_search_ads_active",
      "condition": "both == true",
      "action": "노출 인벤토리 중복 여부 리포트 점검 알림 발송",
      "guardrail": "자동 예산 조정·중단 금지, 알림만 발송",
      "confidence": "medium"
    },
    {
      "docId": "naver-youtube-top100",
      "section": "naver",
      "id": "naver-adboost-condition-required",
      "when": "애드부스트(쇼핑검색/GFA) 신규 활성화 시 노출 조건·제외키워드가 미설정",
      "metric": "adboost_condition_set",
      "condition": "== false",
      "action": "조건 미설정 상태로 켜져 있음을 담당자에게 경고, 조건 설계 전 임시 예산 상한 제안",
      "guardrail": "자동 조건 설정·자동 off 금지, 경고 알림만 발송",
      "confidence": "low"
    },
    {
      "docId": "naver-youtube-top100",
      "section": "naver",
      "id": "naver-place-precheck-before-ad",
      "when": "신규 플레이스 광고 캠페인 시작 예정",
      "metric": "place_basic_info_complete",
      "condition": "사진/기본정보/리뷰/소개글 중 1개 이상 미충족",
      "action": "광고 집행 전 기초 콘텐츠(사진·정보·리뷰·소개글) 보완 체크리스트 알림",
      "guardrail": "자동 광고 집행 차단 금지, 체크리스트 알림만 발송",
      "confidence": "low"
    },
    {
      "docId": "naver-youtube-top100",
      "section": "naver",
      "id": "naver-ai-content-policy-flag",
      "when": "상세페이지·블로그·광고소재 제작에 AI 생성 콘텐츠 사용",
      "metric": "ai_generated_content_used",
      "condition": "== true",
      "action": "2026-07-10 시행 네이버 AI 생성물 표시 정책 준수 여부(미노출·클린프로그램 리스크) 및 블로그 SEO 노출 제한 가능성 확인 알림",
      "guardrail": "자동 게시 차단 금지, 검수 담당자 알림만 발송",
      "confidence": "medium"
    },
    {
      "docId": "naver-youtube-top100",
      "section": "naver",
      "id": "naver-gfa-large-budget-patience",
      "when": "GFA 일 예산이 급격히 확대(예: 전주 대비 3배 이상)된 직후 ROAS가 목표 대비 하락",
      "metric": "roas_vs_target",
      "condition": "< target_roas AND days_since_budget_increase < 7",
      "action": "즉시 off/축소 대신 최소 7일 관찰 후 재판단하도록 담당자에게 안내",
      "guardrail": "자동 off 금지, 관찰 권고 알림만 발송 — 실제 손실이 임계치를 넘으면 사람이 직접 판단",
      "confidence": "low"
    },
    {
      "docId": "naver-youtube-top100",
      "section": "naver",
      "id": "naver-revenue-spike-risk-check",
      "when": "스토어 매출이 전월 대비 급등",
      "metric": "revenue_growth_mom",
      "condition": ">= 2x",
      "action": "재고·CS·계정정책 준수 상태 점검 알림 발송",
      "guardrail": "자동 광고 예산 증액 금지, 사람 검토 후 집행",
      "confidence": "low"
    },
    {
      "docId": "overview-how-to-use",
      "section": "overview",
      "id": "overview-doc-missing-hook",
      "when": "새 문서가 추가되는데 '## 자동화 훅' json 블록이 없음",
      "metric": "doc_has_automation_hook",
      "condition": "== false",
      "action": "머지 차단, 작성자에게 CONTENT_GUIDE 5단 구조 안내",
      "guardrail": "overview 섹션의 메타 안내 문서는 수동 검토 후 예외 허용",
      "confidence": "high"
    },
    {
      "docId": "sources-list",
      "section": "sources",
      "id": "sources-broken-link-check",
      "when": "소스 URL이 정기 헬스체크에서 404 또는 접근불가 응답",
      "metric": "source_url_status_code",
      "condition": ">= 400",
      "action": "해당 소스 행에 '점검필요' 태그, 수집 파이프라인에서 일시 제외",
      "guardrail": "로그인 필요로 표기된 소스(Coupang Ads 공지 등)는 401/403을 정상으로 간주",
      "confidence": "medium"
    },
    {
      "docId": "sources-pipeline",
      "section": "sources",
      "id": "sources-pipeline-no-auto-merge",
      "when": "AI 요약 초안이 생성되었는데 사람 검토(승인) 없이 병합 시도",
      "metric": "human_review_approved",
      "condition": "== false",
      "action": "병합 차단, 검토 대기열로 이동",
      "guardrail": "예외 없음 — 이 규칙은 항상 강제",
      "confidence": "high"
    },
    {
      "docId": "sources-pipeline",
      "section": "sources",
      "id": "sources-pipeline-no-transcript-scrape",
      "when": "파이프라인이 소유하지 않은 유튜브 채널의 자막(캡션) 텍스트를 대량 수집하려는 요청",
      "metric": "transcript_scrape_requested",
      "condition": "== true",
      "action": "수집 거부, 메타데이터(제목·설명)만 수집하도록 강제",
      "guardrail": "본인 소유 채널 또는 명시적 OAuth 권한이 있는 경우만 공식 캡션 API 사용 허용",
      "confidence": "high"
    },
    {
      "docId": "strategy-funnel-kpi",
      "section": "strategy",
      "id": "strategy-below-breakeven-roas",
      "when": "캠페인 ROAS가 손익분기 ROAS 미만으로 7일 연속",
      "metric": "roas_7d",
      "condition": "< breakeven_roas",
      "action": "입찰가 하향 또는 예산 축소 검토 알림 발송",
      "guardrail": "인지 목적(브랜드 캠페인) 태그가 붙은 캠페인은 제외, 최소 7일 데이터 확보 후 판단",
      "confidence": "high"
    },
    {
      "docId": "strategy-budget-mix",
      "section": "strategy",
      "id": "strategy-reallocate-underperform",
      "when": "검증 채널(70% 그룹) 캠페인이 최소 관측기간 14일 동안 손익분기 ROAS 미달",
      "metric": "roas_14d",
      "condition": "< breakeven_roas",
      "action": "해당 캠페인 예산 20% 축소, 성장 채널(20% 그룹)로 재배분 제안",
      "guardrail": "1회 재배분은 총 예산의 20% 초과 금지, 인지 목적 캠페인 제외",
      "confidence": "medium"
    },
    {
      "docId": "strategy-testing",
      "section": "strategy",
      "id": "strategy-test-early-stop-block",
      "when": "A/B 테스트 시작 후 14일 미만 또는 최소 표본 미달인데 결과 채택 요청 발생",
      "metric": "test_days_elapsed_or_sample_size",
      "condition": "< min_duration_14d OR < min_sample",
      "action": "결과 채택 차단, 추가 데이터 수집 안내",
      "guardrail": "긴급 소재 사고(어뷰징·클레임) 대응은 예외로 즉시 중단 허용",
      "confidence": "medium"
    },
    {
      "docId": "strategy-creative",
      "section": "strategy",
      "id": "strategy-creative-fatigue-refresh",
      "when": "훅률(3초 시청 유지율)이 최근 7일 대비 20% 이상 하락, CTR은 아직 안정적",
      "metric": "hook_rate_7d_change_pct",
      "condition": "<= -20",
      "action": "동일 바디·CTA에 신규 훅 3종 제작 및 교체 알림",
      "guardrail": "일예산 5,000달러 이상 캠페인은 교체 주기 3~5일로 단축, 신규 훅 검토 없이 자동 중단 금지",
      "confidence": "medium"
    },
    {
      "docId": "strategy-measurement",
      "section": "strategy",
      "id": "strategy-mer-below-target",
      "when": "블렌디드 MER이 14일 이동평균 기준 목표 하단(2.5배) 미달",
      "metric": "blended_mer_14d",
      "condition": "< 2.5",
      "action": "채널별 ROAS 합산치와 MER 격차(중복계산 규모) 리포트 생성, 예산 재검토 알림",
      "guardrail": "신제품 런칭 직후 30일은 예외(초기 학습기), 단일 채널 ROAS만으로 자동 예산 조정 금지",
      "confidence": "medium"
    },
    {
      "docId": "strategy-geo-aeo",
      "section": "strategy",
      "id": "strategy-content-freshness-geo",
      "when": "핵심 트래픽 상위 페이지가 90일 이상 미갱신",
      "metric": "days_since_content_update",
      "condition": ">= 90",
      "action": "콘텐츠 갱신 작업 티켓 생성 알림(30일 이내 갱신 시 인용 3.2배 근거)",
      "guardrail": "정적 레퍼런스성 페이지(약관 등)는 제외",
      "confidence": "medium"
    },
    {
      "docId": "strategy-geo-aeo",
      "section": "strategy",
      "id": "strategy-schema-coverage-check",
      "when": "핵심 페이지에 FAQPage/Article/Product/Organization 구조화 데이터 중 하나도 미검출",
      "metric": "schema_any_present",
      "condition": "== false",
      "action": "구조화 데이터 적용 우선순위 리스트 생성 알림",
      "guardrail": "없음",
      "confidence": "medium"
    },
    {
      "docId": "strategy-geo-aeo",
      "section": "strategy",
      "id": "strategy-ai-referral-tracking-missing",
      "when": "GA4 채널 그룹에 AI 챗봇 리퍼럴(chatgpt.com/perplexity.ai/gemini.google.com/copilot.microsoft.com) 커스텀 그룹 미설정",
      "metric": "ga4_ai_referral_channel_configured",
      "condition": "== false",
      "action": "커스텀 채널 그룹 설정 작업 알림",
      "guardrail": "없음",
      "confidence": "low"
    }
  ]
}