Add configurable sub-linear scope-scaling bands to rate_card.yaml; estimate.py now multiplies monthly line-item rates by properties_total (local_seo) and subbrands_total (onpage_entity), with the scope note written into the 견적. Validated: L'Escape (1 property) stays at base 23-47M; SHR (25 properties, 5 sub-brands) scales to 54.8-110.6M (local ×4.5, on-page ×2.2). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
64 lines
2.1 KiB
YAML
64 lines
2.1 KiB
YAML
# OurDigital service rate card — single source for estimate.py
|
|
# Mirrors the ourdigital-backoffice quote ranges. Values are KRW, treated as
|
|
# pre-sales estimate RANGES (finalize after a precise diagnostic with access).
|
|
quote_prefix: OD # quote number format: OD-YYYY-NNN
|
|
currency: KRW
|
|
|
|
services:
|
|
technical_audit:
|
|
label_ko: "Technical Audit / 기술 SEO 진단"
|
|
unit: one_time # one_time | monthly | project
|
|
min: 3000000
|
|
max: 5000000
|
|
technical_remediation:
|
|
label_ko: "기술 개선 실행 (sitemap/CWV/SSR)"
|
|
unit: project
|
|
min: 3000000
|
|
max: 8000000
|
|
onpage_entity:
|
|
label_ko: "On-Page / Entity Optimization (월 운영)"
|
|
unit: monthly
|
|
min: 1500000
|
|
max: 3000000
|
|
schema_build:
|
|
label_ko: "구조화 데이터(Schema) 구축 (1회)"
|
|
unit: one_time
|
|
min: 2000000
|
|
max: 4000000
|
|
local_seo:
|
|
label_ko: "Local SEO (프로퍼티 로컬 최적화)"
|
|
unit: monthly
|
|
min: 1000000
|
|
max: 2000000
|
|
gtm_setup:
|
|
label_ko: "GTM Setup / 태그 관리 구축"
|
|
unit: project
|
|
min: 2000000
|
|
max: 4000000
|
|
ga4_impl:
|
|
label_ko: "GA4 Implementation / 분석 환경 구축"
|
|
unit: project
|
|
min: 1500000
|
|
max: 3000000
|
|
dashboard:
|
|
label_ko: "Dashboard Development / 대시보드 개발"
|
|
unit: project
|
|
min: 3000000
|
|
max: 6000000
|
|
|
|
defaults:
|
|
retainer_months: 6 # default contract length for monthly line items
|
|
disclaimer_ko: "본 견적은 공개 데이터 기반 사전 추정 범위이며, Search Console/Analytics 권한 확보 후 정밀 진단을 통해 확정됩니다."
|
|
|
|
# Scope scaling — monthly line items scale (sub-linearly) by portfolio size.
|
|
# driver: a count under findings.entity (properties_total | subbrands_total).
|
|
# bands: ordered [max_count, multiplier]; first band whose max_count >= count wins.
|
|
# A 25-property chain costs more to run than a single hotel, but not 25x.
|
|
scaling:
|
|
local_seo:
|
|
driver: properties_total
|
|
bands: [[1, 1.0], [5, 1.6], [15, 2.8], [30, 4.5], [999999, 6.5]]
|
|
onpage_entity:
|
|
driver: subbrands_total
|
|
bands: [[1, 1.0], [3, 1.6], [6, 2.2], [999999, 3.2]]
|