feat: add D.intelligence Agent Corps (9 skills + shared infra)

Add 9 agent skills (#70-#77, #88) for D.intelligence business operations:
brand guardian, brand editor, doc secretary, quotation manager, service
architect, marketing manager, back office manager, account manager, and
skill update meta-agent. Includes shared Python package (dintel), reference
docs, document/quotation templates, service module CSVs, cross-device
installer, and comprehensive user guide.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-09 00:49:04 +09:00
parent 72a6be6a74
commit 338176abbe
71 changed files with 15054 additions and 2 deletions

View File

@@ -0,0 +1,147 @@
# D.intelligence Agent Corps — Installation Audit Report
> **Date**: 2026-03-09
> **Auditor**: Claude (Cowork session)
> **Repository**: `custom-skills/` (mounted workspace)
---
## 1. Current Installation Status
### Claude Desktop (Cowork) — `.skills/skills/`
| # | Skill Name | Installed | Version | Status |
|---|-----------|-----------|---------|--------|
| 70 | dintel-brand-guardian | ✅ Yes | 1.1.0 | Active |
| 71 | dintel-brand-editor | ✅ Yes | 1.1.0 | Active |
| 72 | dintel-doc-secretary | ❌ No | — | **Needs install** |
| 73 | dintel-quotation-mgr | ❌ No | — | **Needs install** |
| 74 | dintel-service-architect | ❌ No | — | **Needs install** |
| 75 | dintel-marketing-mgr | ❌ No | — | **Needs install** |
| 76 | dintel-backoffice-mgr | ❌ No | — | **Needs install** |
| 77 | dintel-account-mgr | ❌ No | — | **Needs install** |
| 88 | dintel-skill-update | ❌ No | — | **Needs install** |
**Result**: 2 of 9 installed. **7 skills need installation.**
---
## 2. Skill File Validation — All Pass ✅
### SKILL.md (Desktop)
| # | Skill | Lines | Frontmatter | Content |
|---|-------|-------|-------------|---------|
| 70 | dintel-brand-guardian | 516 | ✅ name + description | Full brand review checklist |
| 71 | dintel-brand-editor | 146 | ✅ name + description | Content gen + eval workflows |
| 72 | dintel-doc-secretary | 377 | ✅ name + description | 6 document templates |
| 73 | dintel-quotation-mgr | 399 | ✅ name + description | Multi-agent quotation system |
| 74 | dintel-service-architect | 146 | ✅ name + description | Module decision tree |
| 75 | dintel-marketing-mgr | 198 | ✅ name + description | Content calendar + pipeline |
| 76 | dintel-backoffice-mgr | 184 | ✅ name + description | 5 contract/invoice templates |
| 77 | dintel-account-mgr | 162 | ✅ name + description | Meeting prep + status monitoring |
| 88 | dintel-skill-update | 260 | ✅ name + description | Cross-skill propagation logic |
### Reference Files per Skill
| # | Skill | `shared/` files | `desktop/references/` | `code/scripts/` |
|---|-------|----------------|----------------------|-----------------|
| 70 | brand-guardian | 0 | 0 | 0 |
| 71 | brand-editor | 1 (notion-schema-ref) | 1 (brand_guide.md) | 1 (generate_credential.py) |
| 72 | doc-secretary | 6 (document templates) | 0 | 0 |
| 73 | quotation-mgr | 6 (pricing + 4 xlsx templates) | 0 | 1 (generate_quotation.py) |
| 74 | service-architect | 5 (module decision + 4 CSVs) | 0 | 0 |
| 75 | marketing-mgr | 2 (calendar + GA4 guide) | 0 | 0 |
| 76 | backoffice-mgr | 6 (billing + 5 contract templates) | 0 | 0 |
| 77 | account-mgr | 1 (meeting-prep template) | 0 | 0 |
| 88 | skill-update | 1 (change-log.md) | 0 | 0 |
### Shared Infrastructure — `dintel-shared/`
| File | Lines | Purpose |
|------|-------|---------|
| `src/dintel/brand.py` | 132 | Brand constants, colors, service modules |
| `src/dintel/document.py` | 91 | DOCX generation with branding |
| `src/dintel/excel.py` | 71 | Excel/xlsx branded styles |
| `src/dintel/notion.py` | 50 | Notion DB IDs, client mappings |
| `references/dintelligence_brand_guide.md` | 439 | Full writing style guide |
| `references/pricing-reference.md` | 82 | Service pricing tables |
| `references/notion-schema-reference.md` | 140 | Notion database schemas |
| `references/design-system-2025.md` | 169 | Visual identity system |
---
## 3. Installation Instructions
### Option A: Use the Install Script (Recommended)
Run this in your **Mac Terminal** (not Cowork):
```bash
cd ~/Projects/our-claude-skills/custom-skills/dintel-shared/
chmod +x install.sh
# Preview first
./install.sh --dry-run
# Install for both Claude Code + Desktop
./install.sh --all
# Or Desktop only
./install.sh --desktop-only
```
The script will:
1. Create Python venv + install `dintel` package
2. Symlink `desktop/SKILL.md``~/.claude/skills/{skill-name}/`
3. Symlink shared references → `~/.claude/skills/dintel-references/`
4. Create `.claude-agents/` directory with Code directives
### Option B: Manual Claude Desktop Installation
In **Claude Desktop** app:
1. Go to **Settings → Skills** (or Project Knowledge)
2. For each missing skill, add the `desktop/SKILL.md` file:
```
custom-skills/72-dintel-doc-secretary/desktop/SKILL.md
custom-skills/73-dintel-quotation-mgr/desktop/SKILL.md
custom-skills/74-dintel-service-architect/desktop/SKILL.md
custom-skills/75-dintel-marketing-mgr/desktop/SKILL.md
custom-skills/76-dintel-backoffice-mgr/desktop/SKILL.md
custom-skills/77-dintel-account-mgr/desktop/SKILL.md
custom-skills/88-dintel-skill-update/desktop/SKILL.md
```
3. For skills with references, also add:
- `71-dintel-brand-editor/desktop/references/dintelligence_brand_guide.md`
- All `shared/` files in the respective skill directories
### Option C: Claude.ai (Web) Installation
Skills for Claude.ai are managed via **Projects**:
1. Open [claude.ai](https://claude.ai) → **Projects**
2. Create a project "D.intelligence Agent Corps" (or use existing)
3. Under **Project Knowledge**, upload each `desktop/SKILL.md`
4. Upload shared reference files as additional knowledge
---
## 4. Post-Installation Verification
After installing, verify in a new Cowork/Desktop session:
```
"D.intelligence 브랜드 검토해줘" → Should trigger #70 Brand Guardian
"견적서 만들어줘" → Should trigger #73 Quotation Manager
"미팅 준비해줘" → Should trigger #77 Account Manager
```
---
## 5. Notes
- The `code/CLAUDE.md` files are for **Claude Code** (CLI) — separate from Desktop/Cowork
- `code/scripts/` Python files (`generate_credential.py`, `generate_quotation.py`) require the `dintel-shared` Python package
- All 9 skills share `dintel-shared/` — changes there propagate via `#88 Skill Update`
- The installed #70 and #71 match the source with minor version line differences (cosmetic)

View File

@@ -0,0 +1,32 @@
# dintel-shared — D.intelligence Agent Corps Shared Environment
Shared Python package and utilities used by all `dintel-` Claude Skills (agents 70-77, 88).
## Setup
```bash
cd /Users/ourdigital/Projects/our-claude-skills/custom-skills/dintel-shared
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
```
## Package Structure
```
src/dintel/
├── __init__.py # Version
├── brand.py # Brand constants, colors, service architecture, prohibited words
├── document.py # DOCX generation with D.intelligence branding
├── excel.py # Excel/xlsx generation with branded styles
└── notion.py # Notion database IDs, status options, client mappings
```
## Usage
```python
from dintel.brand import BRAND_NAME, SERVICE_MODULES, COLOR_PRIMARY
from dintel.document import create_branded_doc, save_doc
from dintel.excel import create_branded_workbook, style_header_row
from dintel.notion import DB_TASKS_DASHBOARD, CLIENT_DB_MAP
```

View File

@@ -0,0 +1,520 @@
# D.intelligence Agent Corps — User Guide
> **Version**: 1.0.0
> **Updated**: 2026-03-09
> **Author**: D.intelligence Engineering
---
## Overview
D.intelligence Agent Corps는 9개의 AI 에이전트로 구성된 스킬 번들입니다.
모든 에이전트는 D.intelligence의 브랜드 가이드, 서비스 아키텍처, 가격 정책을 공유하며,
일관된 품질의 결과물을 생성합니다.
```
┌─────────────────────────────────────────────────────┐
│ D.intelligence Agent Corps │
│ │
│ #70 Brand Guardian ←── 브랜드 컴플라이언스 │
│ #71 Brand Editor ←── 카피라이팅 │
│ #72 Doc Secretary ←── 문서 포맷팅 │
│ #73 Quotation Mgr ←── 견적서 생성 │
│ #74 Service Architect ←── 서비스 설계 │
│ #75 Marketing Mgr ←── 콘텐츠 파이프라인 │
│ #76 Back Office Mgr ←── 계약/인보이스/HR │
│ #77 Account Mgr ←── 고객 관계 관리 │
│ #88 Skill Update ←── 메타 에이전트 (일괄 변경)│
│ │
│ dintel-shared/ ←── 공유 인프라 │
└─────────────────────────────────────────────────────┘
```
---
## Quick Start
### Installation
```bash
cd our-claude-skills/custom-skills/dintel-shared/
./install.sh # Interactive — choose Code, Desktop, or both
./install.sh --all # Install everything
./install.sh --dry-run # Preview without changes
```
### Autonomy Levels
| Level | Agents | Meaning |
|-------|--------|---------|
| **Auto** | #70 | Runs automatically when D.intelligence content is detected |
| **Auto + Ask** | #71 | Auto-activates, asks before making changes |
| **Draft & Wait** | #72, #73, #75, #76 | Generates draft, then STOPS for Andrew's review |
| **Inquiry-driven** | #74 | Asks structured questions before recommending |
| **Mixed** | #77 | Monitors autonomously, asks before client-facing actions |
| **Triggered** | #88 | Only runs when explicitly invoked by Andrew |
---
## Agent Reference & Use Cases
---
### #70 Brand Guardian — 브랜드 가디언
**What it does**: D.intelligence가 생산하는 모든 콘텐츠의 브랜드 준수 여부를 100점 체계로 검토합니다.
**When to use**:
- 제안서, 리포트, 블로그, 뉴스레터 작성 전후
- 프레젠테이션 슬라이드 검토
- AI가 생성한 응답의 톤앤매너 검증
- 비주얼 자산(로고, 컬러, 타이포그래피) 검수
**Example use cases**:
```
1. "이 제안서 초안을 브랜드 가이드 기준으로 검토해줘"
→ 100점 체크리스트 실행 → 위반 사항 + 수정안 제시
2. "A3 데이터 분석 서비스 소개 페이지를 작성해줘"
→ 브랜드 톤(~합니다 서술체) + 서비스 아키텍처 정확성 보장
3. "이 콘텐츠의 서비스 모듈 코드가 맞는지 확인해줘"
→ A1-G4 코드 정확성 + 카테고리 태그(DI/MD/MPO/BVT) 검증
4. "프레젠테이션 디자인이 2025 디자인 시스템에 맞는지 검토해줘"
→ 컬러(D Beige, D Olive 등), 타이포그래피, 레이아웃 검수 (125점)
```
**Review output example**:
```
브랜드 적합성 리뷰 리포트
총점: 87/100
A. 톤앤매너 (22/25)
✗ LINE 12: "획기적인 성과" → 금지 표현. "측정 가능한 성과 개선"으로 수정
✓ 전반적 톤: ~합니다 서술체 일관
B. 메시지 구조 (25/25)
✓ 문제 진단 → 데이터 근거 → 해결 방안 → 예상 성과 흐름 준수
...
```
---
### #71 Brand Editor — 브랜드 에디터
**What it does**: D.intelligence 브랜드 가이드에 맞는 콘텐츠를 생성하고, 기존 콘텐츠의 스타일 적합성을 평가합니다.
**When to use**:
- Magazine D. 블로그 기사 작성
- 서비스 페이지 카피라이팅
- 뉴스레터, LinkedIn 포스트 초안
- 기존 텍스트의 스타일 가이드 적합성 평가
**Example use cases**:
```
1. "[SEO] 검색엔진 최적화가 브랜드에 미치는 영향 — Magazine D. 기사를 써줘"
→ ~다 간결 서술체 + [카테고리] 태그 + 결론적으로 마무리
2. "T6 Brand Visibility Treatment 서비스 소개 페이지를 작성해줘"
→ ~합니다 존칭 서술체 + 문제→근거→해법→성과 구조
3. "이 블로그 초안을 D.intelligence 스타일 가이드 기준으로 평가해줘"
→ 14-point 체크리스트 실행 → PASS/FAIL 판정 + 수정 제안
4. "회사소개서(Credential) 텍스트를 최신 브랜드 가이드에 맞게 업데이트해줘"
→ Company Credential 2025 참조하여 최신 톤으로 수정
```
---
### #72 Doc Secretary — 문서 비서
**What it does**: 회의록, 리포트, 제안서 등 문서를 브랜드 양식에 맞게 포맷팅합니다.
**When to use**:
- 회의 후 회의록 작성
- 분석 리포트 구조화
- 제안서 포맷팅
- 월간 리포트 작성
- 내부 메모 작성
**Example use cases**:
```
1. "오늘 JHR 미팅 회의록을 작성해줘. 참석자: 임명재, 김OO.
주요 논의: SEO 월간 보고서 리뷰, Q2 마케팅 예산"
→ 회의록 템플릿 적용: 참석자, 안건, 결정사항, 액션아이템
2. "SLA 디지털 마케팅 진단 결과를 리포트로 만들어줘"
→ D.intelligence_Digital_Marketing_Audit_2026 템플릿 기반
→ [DRAFT - Awaiting Review] 워터마크 포함
3. "이번 달 JAM 월간 성과 보고서를 만들어줘"
→ Marketing Performance 템플릿 + Notion 태스크 데이터 반영
4. "제안 준비 절차를 안내해줘"
→ 제안 SOP 문서 참조하여 체크리스트 안내
```
**Available templates** (shared/document-templates/):
- Initial Brief, Digital Marketing Audit, Marketing Performance
- Website Diagnosis, Social Media Excellence, Blank Template
---
### #73 Quotation Manager — 견적 관리자
**What it does**: 4개 서브 에이전트(Scope → Resource → Pricing → Output)를 순차 실행하여 브랜드된 견적서를 생성합니다.
**When to use**:
- 신규 클라이언트 견적 요청
- 서비스 패키지 가격 산출
- 기존 견적서 수정/업데이트
- 가격 시뮬레이션
**Example use cases**:
```
1. "JHR에게 A3 데이터 분석 + T6 Brand Visibility Treatment 견적서를 만들어줘"
→ Scope Agent: 모듈 매핑
→ Resource Agent: 투입 인력·기간 추정
→ Pricing Agent: 가격 산출 + 재계약 할인 10% 적용
→ Output: DI-Q-20260309-001_JHR_DRAFT.xlsx 생성
→ [DRAFT] Andrew 승인 대기
2. "콘텐츠 마케팅 3개월 패키지 가격이 얼마인지 시뮬레이션해줘"
→ T4 + G2 3개월 기준 가격 산출 + 할인 시나리오
3. "지난번 SLA 견적서에서 T5를 빼고 T3를 추가해줘"
→ 기존 견적 수정 → 새 버전 생성
4. "GA4 교육 워크숍 견적서를 만들어줘 (반일, 5명)"
→ GA교육 템플릿 참조 → 커리큘럼 + 가격 포함
```
**Quotation templates** (shared/quotation-templates/):
- 표준 견적서 2026, GA Analytics 템플릿, 콘텐츠 마케팅 템플릿, GA 교육 템플릿
**Key rules**:
- 모든 가격: VAT 별도
- 할인: 최대 35% (기본 할인 + 재계약 10% 누적)
- 결제 조건 기본: 착수금 50% / 완료 후 50%
- 견적 유효기간: 30일
---
### #74 Service Architect — 서비스 설계사
**What it does**: 7단계 구조화 질문으로 클라이언트 니즈를 파악하고, 최적의 서비스 모듈 조합을 설계합니다.
**When to use**:
- 신규 클라이언트 서비스 설계
- 기존 클라이언트 서비스 확장
- 서비스 모듈 조합 최적화
- Pain point → 모듈 매핑
**Example use cases**:
```
1. "중견 이커머스 회사에서 연락이 왔어. GA4는 설치했는데 데이터를 활용 못하고 있대"
→ 7단계 질문 시작: 업종, 규모, 현재 마케팅 채널, 페인포인트...
→ Pain point 매핑: "데이터 축적만 되고 해석 없음" → A3 + T3
→ Starter 패키지 추천 + Scope Document 생성
→ #73 Quotation Mgr에 핸드오프
2. "SLA에서 퍼포먼스 마케팅 진단도 추가하고 싶다고 해"
→ 기존 서비스에 A5 추가 → Standard 패키지로 업그레이드 제안
3. "검색 노출이 전혀 안 되는 스타트업이 있어"
→ 매핑: "검색 미노출" → A3 + T6 (SEO Intensive 패키지)
→ BVT 카테고리 중심 추천
4. "이 회사에 맞는 서비스를 추천해줘" + 회사 브리프 첨부
→ 브리프 분석 → Maturity Level 판정 → 맞춤 모듈 조합
```
**Service module data** (shared/service-modules/):
- 서비스 명세 일람표, 고객 소구점, 전략 키워드, 타겟 오디언스 CSV
---
### #75 Marketing Manager — 마케팅 매니저
**What it does**: Magazine D. 블로그, 뉴스레터, LinkedIn, WordPress 콘텐츠 파이프라인을 관리합니다.
**When to use**:
- Magazine D. 기사 기획/초안
- 뉴스레터 에디션 준비
- LinkedIn 포스트 작성
- 콘텐츠 캘린더 관리
- WordPress 서비스 페이지 콘텐츠 준비
- SEO 키워드 전략 연동
**Example use cases**:
```
1. "이번 주 Magazine D. 기사 주제를 추천해줘"
→ 전략 키워드 + 업계 트렌드 분석 → 3개 주제 제안
→ 선택 후 기사 초안 작성 (Chain C: #75 → #71 → #70 → Andrew)
2. "3월 뉴스레터를 준비해줘"
→ 핵심 수치 + 실무 시사점 구조
→ 최근 Magazine D. 기사 링크 + 교육 일정 포함
3. "GA4 교육 프로모션 LinkedIn 포스트를 써줘"
→ 인사이트 중심 + Data Intelligence Workshop 홍보
→ 해시태그: #GA4 #DataAnalytics #MarketingIntelligence
4. "Q2 콘텐츠 캘린더를 만들어줘"
→ content-calendar-template.md 기반 → 월별/주별 계획
→ 상태 트래킹: IDEA → DRAFT → REVIEW → APPROVED → PUBLISHED
5. "Data Intelligence Workshop 서비스 페이지 콘텐츠를 준비해줘"
→ GA4-GTM 실무가이드 참조 + ~합니다/~세요 교육 안내체
```
---
### #76 Back Office Manager — 백오피스 매니저
**What it does**: 계약서, 인보이스, NDA, 고용계약 등 행정 문서를 관리하고, 빌링/HR/경비를 트래킹합니다.
**When to use**:
- 용역 계약서 초안 작성
- 세금계산서 발행 준비
- NDA 작성
- 인력 온보딩/오프보딩
- 월간 빌링 정산
- 경비/구독 관리
**Example use cases**:
```
1. "JHR 3개월 SEO 컨설팅 계약서를 만들어줘"
→ D.intelligence_Service_Contract_2026.txt 템플릿 기반
→ 서비스 범위, 기간, 금액 (Andrew 확인 필요)
→ CEO 서명 파일 위치 안내
→ [DRAFT - Awaiting Review]
2. "이번 달 JAM 인보이스를 준비해줘"
→ Notion Tasks Dashboard에서 Billable 태스크 집계
→ D.intelligence_Invoice_2026.txt 템플릿으로 생성
3. "새로운 파트타임 매니저 온보딩 체크리스트를 만들어줘"
→ D.intelligence_Job_Readiness_2026.txt 참조
→ 계약서 + 계정 설정 + 교육 일정 체크리스트
4. "이번 달 세금계산서 마감일 알려줘"
→ billing-checklist.md 참조 → 한국 세금 캘린더 기준
5. "SLA NDA 초안을 작성해줘"
→ NDA 템플릿 기반 → 클라이언트 정보 반영
```
**Document templates** (shared/document-templates/):
- Service Contract, Invoice, NDA, Employment Contract, Ad Agency Contract
**Corporate documents** (reference only):
- 사업자등록증, 은행정보, CEO 서명, 법인인감
---
### #77 Account Manager — 어카운트 매니저
**What it does**: Andrew의 고객 관계 관리 코파일럿 — Notion 기반 프로젝트 모니터링, 미팅 준비, 이슈 에스컬레이션.
**When to use**:
- 클라이언트별 프로젝트 현황 파악
- 미팅 준비 자료 생성
- 주간/월간 상태 요약
- 마감 임박 태스크 알림
- 신규 클라이언트 온보딩 시작
**Example use cases**:
```
1. "내일 JHR 미팅인데 브리프를 준비해줘"
→ meeting-prep-template.md 기반
→ Notion Tasks에서 JHR 진행 현황 수집
→ 논의 사항 + 데이터 + 미해결 이슈 정리
2. "이번 주 전체 클라이언트 현황을 요약해줘"
→ Notion 5개 DB 스캔 → 클라이언트별 완료/진행/블로킹 요약
3. "마감이 3일 이내인 태스크가 있어?"
→ 자율 모니터링 Rule #1: Due Date 3일 이내 + Not Done 필터
4. "새 클라이언트 온보딩을 시작하자. 회사명: ABC Corp"
→ Chain A 시작: #77 접수 → #74 서비스 설계 → #73 견적
→ Credential 2025 + Initial Brief 템플릿 안내
5. "SLA 프로젝트가 2주 넘게 진행이 없는 것 같은데 확인해줘"
→ 자율 모니터링 Rule #2: In Progress > 2주 stale 태스크 체크
```
---
### #88 Skill Update — 스킬 업데이트 (메타 에이전트)
**What it does**: 공유 참조(브랜드, 가격, 서비스 모듈 등)가 변경될 때, 영향 받는 모든 스킬을 일괄 업데이트합니다.
**When to use**:
- 가격 정책 변경
- 서비스 모듈 추가/변경/삭제
- 브랜드 가이드 수정
- Notion 스키마 변경
- 클라이언트 코드 추가
- 금지 표현 목록 업데이트
**Example use cases**:
```
1. "T5 가격이 500만원에서 600만원으로 변경됐어"
→ Dependency Map 조회: 가격 변경 → #73, #74, #76 영향
→ Impact Report 제시 → Andrew 승인
→ dintel-shared/references/pricing-reference.md 먼저 수정
→ #73 pricing table, #74 package pricing, #76 billing ref 업데이트
→ change-log.md 기록
2. "새 서비스 모듈 T8 디지털 PR을 추가하자"
→ 영향: #70, #71, #73, #74, #75 (서비스 모듈 변경)
→ brand.py SERVICE_MODULES에 T8 추가
→ 각 스킬의 모듈 목록 업데이트
→ 일관성 검증 실행
3. "클라이언트 코드 HYT를 추가해줘. 현대호텔"
→ 영향: #72, #73, #76, #77 (클라이언트 코드 변경)
→ brand.py CLIENT_CODES, notion.py CLIENT_DB_MAP 업데이트
→ 각 스킬의 클라이언트 목록 업데이트
4. "전체 스킬의 서비스 모듈 코드가 brand.py와 일치하는지 검증해줘"
→ 일관성 검증 모드 → 9개 스킬 전수 검사 → 불일치 리포트
```
---
## Workflow Chains
에이전트들은 단독으로도 작동하지만, 체인으로 연결될 때 가장 강력합니다.
### Chain A — New Client Onboarding
```
#77 Account Mgr (접수)
→ #74 Service Architect (서비스 설계)
→ #73 Quotation Mgr (견적 생성)
→ #72 Doc Secretary (문서 포맷팅)
→ #71 Brand Editor (카피 검수)
→ #70 Brand Guardian (브랜드 검토)
→ Andrew (최종 승인)
```
**Example**: "ABC Corp에서 디지털 마케팅 컨설팅 문의가 왔어"
### Chain B — Ongoing Monitoring
```
#77 Account Mgr (Notion 모니터링)
→ #72 Doc Secretary (리포트 포맷팅)
→ #70 Brand Guardian (검토)
```
**Example**: "이번 주 JHR 진행 상황 리포트를 만들어줘"
### Chain C — Content Publishing
```
#75 Marketing Mgr (콘텐츠 기획/초안)
→ #71 Brand Editor (스타일 검수)
→ #70 Brand Guardian (브랜드 검토)
→ Andrew (승인)
→ WordPress 게시
```
**Example**: "Magazine D. 새 기사를 기획하고 작성해줘"
### Chain D — Administrative
```
#76 Back Office Mgr (계약서/인보이스 초안)
→ #72 Doc Secretary (포맷팅)
→ Andrew (승인/서명)
```
**Example**: "SLA 3개월 계약서를 만들어줘"
---
## Universal Guardrails
모든 에이전트에 공통 적용되는 5대 규칙:
1. **Andrew 승인 없이 클라이언트에게 전달하지 않는다**
2. **삭제하지 않는다 — 항상 아카이브**
3. **Andrew 확인 없이 가격을 확정하지 않는다**
4. **Korean-first, 전문용어는 한글(English) 이중 표기**
5. **동의 없이 클라이언트 간 데이터를 교차 참조하지 않는다**
---
## Shared Infrastructure
### dintel-shared/
```
dintel-shared/
├── install.sh ← 이 번들 설치 스크립트
├── pyproject.toml ← Python 패키지 설정
├── src/dintel/
│ ├── brand.py ← 브랜드 상수 (컬러, 폰트, 서비스 모듈, 금지어)
│ ├── document.py ← DOCX 생성 유틸리티
│ ├── excel.py ← Excel 생성 유틸리티
│ └── notion.py ← Notion DB ID, 상태값, 필드 정의
└── references/
├── dintelligence_brand_guide.md ← 라이팅 스타일 가이드
├── design-system-2025.md ← 비주얼 아이덴티티
├── pricing-reference.md ← 가격 테이블
└── notion-schema-reference.md ← Notion DB 스키마
```
### Skill-Level Shared Libraries
각 스킬은 자체 `shared/`에 업무별 참조 파일을 보유합니다:
| Skill | shared/ Contents |
|-------|-----------------|
| #72 Doc Secretary | `document-templates/` — 6개 리포트/감사 TXT 템플릿 |
| #73 Quotation Mgr | `quotation-templates/` — 4개 XLSX 견적 템플릿 |
| #74 Service Architect | `service-modules/` — 4개 CSV (서비스 명세, 키워드, 오디언스, 소구점) |
| #75 Marketing Mgr | `training-materials/` — GA4-GTM 실무가이드 |
| #76 Back Office | `document-templates/` — 5개 계약/인보이스 TXT 템플릿 |
---
## Troubleshooting
### "서비스 모듈 코드가 존재하지 않습니다"
→ A1-A6, T1-T7, G1-G4 범위 확인. 존재하지 않는 코드(A7, T8 등)는 #88로 먼저 추가해야 합니다.
### "브랜드 검토 점수가 낮게 나옵니다"
#70의 100점 체크리스트 결과를 확인하세요. 가장 흔한 감점:
- 금지 표현 사용 (획기적, 혁신적, 놀라운)
- ~합니다/~다 톤 혼용
- 서비스 모듈 코드 없이 서비스명만 사용
### "견적서 생성 시 가격이 0으로 나옵니다"
`shared/pricing-reference.md`에 해당 모듈 가격이 등록되어 있는지 확인하세요.
### "다른 기기에서 스킬이 작동하지 않습니다"
`./install.sh`를 새 기기에서 다시 실행하세요. 절대 경로 대신 상대 경로를 사용하므로 저장소만 클론하면 됩니다.
---
## Version History
| Version | Date | Changes |
|---------|------|---------|
| 1.0.0 | 2026-03-09 | Initial release — 9 agents + shared infra |

View File

@@ -0,0 +1,651 @@
#!/usr/bin/env bash
# ─────────────────────────────────────────────────────────────────
# D.intelligence Agent Corps — Skill Bundle Installer
# Version: 1.0.0
# ─────────────────────────────────────────────────────────────────
#
# Installs the D.intelligence Agent Corps skill bundle for
# Claude Code and/or Claude Desktop on any macOS/Linux device.
#
# Usage:
# ./install.sh # Interactive mode
# ./install.sh --all # Install everything
# ./install.sh --code-only # Claude Code skills only
# ./install.sh --desktop-only # Claude Desktop skills only
# ./install.sh --dry-run # Preview without changes
# ./install.sh --uninstall # Remove installed skills
#
# Prerequisites:
# - Python >= 3.12
# - pip or uv (for Python dependencies)
# - Claude Code or Claude Desktop installed
# - Git (to clone the repository if not already present)
#
# ─────────────────────────────────────────────────────────────────
set -eu
# ── Constants ────────────────────────────────────────────────────
VERSION="1.0.0"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
SKILLS_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
SHARED_DIR="$SCRIPT_DIR"
# Skill definitions: number|name|description
SKILLS=(
"70|dintel-brand-guardian|Brand compliance review & content generation"
"71|dintel-brand-editor|Brand-compliant copywriting & style evaluation"
"72|dintel-doc-secretary|Document formatting, meeting notes, reports"
"73|dintel-quotation-mgr|Quotation generation with multi-agent sub-system"
"74|dintel-service-architect|Service scope design & module recommendation"
"75|dintel-marketing-mgr|Marketing content pipeline management"
"76|dintel-backoffice-mgr|Administrative operations, invoicing, contracts"
"77|dintel-account-mgr|Client relationship management & monitoring"
"88|dintel-skill-update|Cross-skill consistency management (meta-agent)"
)
# Color output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
BOLD='\033[1m'
NC='\033[0m' # No Color
# ── Helper Functions ─────────────────────────────────────────────
log_info() { echo -e "${BLUE}[INFO]${NC} $*"; }
log_success() { echo -e "${GREEN}[OK]${NC} $*"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
log_error() { echo -e "${RED}[ERR]${NC} $*"; }
log_step() { echo -e "\n${BOLD}${CYAN}── $* ──${NC}"; }
DRY_RUN=false
INSTALL_CODE=false
INSTALL_DESKTOP=false
UNINSTALL=false
# ── Platform Detection ───────────────────────────────────────────
detect_platform() {
local os
os="$(uname -s)"
case "$os" in
Darwin) PLATFORM="macos" ;;
Linux) PLATFORM="linux" ;;
*) log_error "Unsupported platform: $os"; exit 1 ;;
esac
}
detect_claude_paths() {
# Claude Code config
CLAUDE_CODE_CONFIG="$HOME/.claude.json"
CLAUDE_CODE_DIR="$HOME/.claude"
# Claude Desktop config (platform-dependent)
if [[ "$PLATFORM" == "macos" ]]; then
CLAUDE_DESKTOP_CONFIG="$HOME/Library/Application Support/Claude/claude_desktop_config.json"
CLAUDE_DESKTOP_DIR="$HOME/Library/Application Support/Claude"
else
CLAUDE_DESKTOP_CONFIG="$HOME/.config/Claude/claude_desktop_config.json"
CLAUDE_DESKTOP_DIR="$HOME/.config/Claude"
fi
# Check which Claude products are installed
HAS_CLAUDE_CODE=false
HAS_CLAUDE_DESKTOP=false
if command -v claude &>/dev/null || [[ -f "$CLAUDE_CODE_CONFIG" ]]; then
HAS_CLAUDE_CODE=true
fi
if [[ -d "$CLAUDE_DESKTOP_DIR" ]]; then
HAS_CLAUDE_DESKTOP=true
fi
}
detect_python() {
PYTHON_CMD=""
for cmd in python3.13 python3.12 python3; do
if command -v "$cmd" &>/dev/null; then
local ver
ver="$($cmd --version 2>&1 | grep -oE '[0-9]+\.[0-9]+')"
local major minor
major="${ver%%.*}"
minor="${ver#*.}"
if [[ "$major" -ge 3 && "$minor" -ge 12 ]]; then
PYTHON_CMD="$cmd"
PYTHON_VERSION="$ver"
return
fi
fi
done
log_warn "Python >= 3.12 not found. Python utilities will not be installed."
}
detect_package_manager() {
PKG_MGR=""
if command -v uv &>/dev/null; then
PKG_MGR="uv"
elif command -v pip3 &>/dev/null; then
PKG_MGR="pip3"
elif command -v pip &>/dev/null; then
PKG_MGR="pip"
fi
}
# ── Parse Arguments ──────────────────────────────────────────────
parse_args() {
while [[ $# -gt 0 ]]; do
case "$1" in
--all)
INSTALL_CODE=true
INSTALL_DESKTOP=true
;;
--code-only)
INSTALL_CODE=true
;;
--desktop-only)
INSTALL_DESKTOP=true
;;
--dry-run)
DRY_RUN=true
;;
--uninstall)
UNINSTALL=true
;;
--help|-h)
show_help
exit 0
;;
*)
log_error "Unknown option: $1"
show_help
exit 1
;;
esac
shift
done
}
show_help() {
cat <<'HELP'
D.intelligence Agent Corps — Skill Bundle Installer v1.0.0
Usage:
./install.sh Interactive mode
./install.sh --all Install for both Claude Code and Desktop
./install.sh --code-only Claude Code only
./install.sh --desktop-only Claude Desktop only
./install.sh --dry-run Preview without making changes
./install.sh --uninstall Remove installed skills
Skills Included:
#70 Brand Guardian Brand compliance review
#71 Brand Editor Copywriting & style evaluation
#72 Doc Secretary Document formatting & reports
#73 Quotation Manager Quotation generation (multi-agent)
#74 Service Architect Service scope & module design
#75 Marketing Manager Content pipeline management
#76 Back Office Manager Admin, invoicing, contracts
#77 Account Manager Client relationship & monitoring
#88 Skill Update Cross-skill consistency (meta-agent)
Shared Infrastructure:
dintel-shared/ Python package + reference docs
HELP
}
# ── Pre-flight Checks ────────────────────────────────────────────
preflight() {
log_step "Pre-flight Checks"
detect_platform
log_info "Platform: $PLATFORM"
detect_claude_paths
if $HAS_CLAUDE_CODE; then
log_success "Claude Code detected"
else
log_warn "Claude Code not detected"
fi
if $HAS_CLAUDE_DESKTOP; then
log_success "Claude Desktop detected"
else
log_warn "Claude Desktop not detected"
fi
detect_python
if [[ -n "$PYTHON_CMD" ]]; then
log_success "Python $PYTHON_VERSION ($PYTHON_CMD)"
fi
detect_package_manager
if [[ -n "$PKG_MGR" ]]; then
log_success "Package manager: $PKG_MGR"
else
log_warn "No pip/uv found — skipping Python package install"
fi
# Verify skill directories exist
local missing=0
for entry in "${SKILLS[@]}"; do
IFS='|' read -r num name desc <<< "$entry"
local dir="$SKILLS_ROOT/${num}-${name}"
if [[ ! -d "$dir" ]]; then
log_error "Missing skill directory: ${num}-${name}/"
((missing++))
fi
done
if [[ $missing -gt 0 ]]; then
log_error "$missing skill directories not found. Is the repository complete?"
exit 1
fi
log_success "All 9 skill directories present"
# Verify shared infrastructure
if [[ ! -f "$SHARED_DIR/pyproject.toml" ]]; then
log_error "dintel-shared/pyproject.toml not found"
exit 1
fi
if [[ ! -f "$SHARED_DIR/src/dintel/brand.py" ]]; then
log_error "dintel-shared/src/dintel/brand.py not found"
exit 1
fi
log_success "Shared infrastructure intact"
}
# ── Interactive Mode ─────────────────────────────────────────────
interactive_prompt() {
if $INSTALL_CODE || $INSTALL_DESKTOP || $UNINSTALL; then
return # Already specified via flags
fi
echo ""
echo -e "${BOLD}D.intelligence Agent Corps — Skill Bundle Installer v${VERSION}${NC}"
echo ""
echo " Available targets:"
if $HAS_CLAUDE_CODE; then
echo -e " ${GREEN}[1]${NC} Claude Code (code/CLAUDE.md directives)"
else
echo -e " ${RED}[1]${NC} Claude Code (not detected)"
fi
if $HAS_CLAUDE_DESKTOP; then
echo -e " ${GREEN}[2]${NC} Claude Desktop (desktop/SKILL.md skills)"
else
echo -e " ${RED}[2]${NC} Claude Desktop (not detected)"
fi
echo -e " ${GREEN}[3]${NC} Both"
echo ""
read -rp " Select target [1/2/3]: " choice
case "$choice" in
1) INSTALL_CODE=true ;;
2) INSTALL_DESKTOP=true ;;
3) INSTALL_CODE=true; INSTALL_DESKTOP=true ;;
*)
log_error "Invalid choice"
exit 1
;;
esac
}
# ── Install Python Environment ───────────────────────────────────
install_python_env() {
if [[ -z "$PYTHON_CMD" || -z "$PKG_MGR" ]]; then
log_warn "Skipping Python environment setup (missing Python or pip)"
return
fi
log_step "Python Environment — dintel-shared"
local venv_dir="$SHARED_DIR/.venv"
if $DRY_RUN; then
log_info "[DRY-RUN] Would create venv at: $venv_dir"
log_info "[DRY-RUN] Would install dintel package in editable mode"
return
fi
# Create virtual environment if it doesn't exist
if [[ ! -d "$venv_dir" ]]; then
log_info "Creating virtual environment..."
"$PYTHON_CMD" -m venv "$venv_dir"
log_success "Virtual environment created at $venv_dir"
else
log_info "Virtual environment already exists"
fi
# Activate and install
log_info "Installing dintel package (editable mode)..."
"$venv_dir/bin/pip" install --quiet --upgrade pip
"$venv_dir/bin/pip" install --quiet -e "$SHARED_DIR"
log_success "dintel package installed"
# Verify
if "$venv_dir/bin/python" -c "from dintel.brand import BRAND_NAME; print(f' Brand: {BRAND_NAME}')" 2>/dev/null; then
log_success "Package verification passed"
else
log_error "Package verification failed"
return 1
fi
}
# ── Install Claude Code Skills ───────────────────────────────────
install_code_skills() {
if ! $INSTALL_CODE; then return; fi
log_step "Claude Code Skills (code/CLAUDE.md)"
# Claude Code skills are activated by project CLAUDE.md includes.
# We create a project-level CLAUDE.md fragment that includes all skills.
local target_dir
if [[ -t 0 ]]; then
read -rp " Service Package repo path [default: current dir]: " target_dir
else
target_dir=""
fi
target_dir="${target_dir:-$(pwd)}"
# Resolve to absolute
target_dir="$(cd "$target_dir" 2>/dev/null && pwd)" || {
log_error "Invalid path: $target_dir"
return 1
}
local claude_md="$target_dir/CLAUDE.md"
local include_block=""
# Generate include block for CLAUDE.md
include_block+=$'\n'"# ── D.intelligence Agent Corps Skills ────────────────────────"$'\n'
include_block+="# Auto-generated by dintel-shared/install.sh v${VERSION}"$'\n'
include_block+="# Skills are loaded from: ${SKILLS_ROOT}"$'\n'
include_block+="#"$'\n'
include_block+="# To activate a specific agent in Claude Code, reference its CLAUDE.md:"$'\n'
for entry in "${SKILLS[@]}"; do
IFS='|' read -r num name desc <<< "$entry"
local skill_claude_md="$SKILLS_ROOT/${num}-${name}/code/CLAUDE.md"
if [[ -f "$skill_claude_md" ]]; then
include_block+="# Agent #${num} (${name}): ${skill_claude_md}"$'\n'
fi
done
include_block+="# ─────────────────────────────────────────────────────────────"$'\n'
if $DRY_RUN; then
log_info "[DRY-RUN] Would append agent index to: $claude_md"
echo "$include_block"
return
fi
# Create symlinks in the project for easy access
local agents_dir="$target_dir/.claude-agents"
mkdir -p "$agents_dir"
for entry in "${SKILLS[@]}"; do
IFS='|' read -r num name desc <<< "$entry"
local src="$SKILLS_ROOT/${num}-${name}/code/CLAUDE.md"
local dest="$agents_dir/${num}-${name}.md"
if [[ -f "$src" ]]; then
ln -sf "$src" "$dest"
log_success "#${num} ${name} → symlinked"
fi
done
# Symlink shared library
ln -sf "$SHARED_DIR" "$agents_dir/dintel-shared"
log_success "dintel-shared → symlinked"
# Write a loader CLAUDE.md fragment
cat > "$agents_dir/README.md" <<EOF
# D.intelligence Agent Corps — Claude Code
Symlinks to agent directives for Claude Code.
Generated by \`dintel-shared/install.sh v${VERSION}\`.
## Agents
| # | Agent | Directive |
|---|-------|-----------|
EOF
for entry in "${SKILLS[@]}"; do
IFS='|' read -r num name desc <<< "$entry"
echo "| ${num} | ${name} | \`${num}-${name}.md\` |" >> "$agents_dir/README.md"
done
cat >> "$agents_dir/README.md" <<EOF
## Usage
In Claude Code, reference an agent directive:
\`\`\`
Read .claude-agents/70-dintel-brand-guardian.md
\`\`\`
Or add to your project CLAUDE.md as an include.
## Shared Library
\`dintel-shared/\` contains:
- \`src/dintel/brand.py\` — Brand constants, colors, service modules
- \`src/dintel/document.py\` — DOCX generation
- \`src/dintel/excel.py\` — Excel generation
- \`src/dintel/notion.py\` — Notion DB IDs
- \`references/\` — Brand guide, pricing, Notion schema, design system
EOF
log_success "Agent index created at $agents_dir/"
echo ""
log_info "To use agents in Claude Code:"
log_info " 1. cd $target_dir"
log_info " 2. claude (start Claude Code)"
log_info " 3. Reference .claude-agents/XX-name.md in your prompts"
}
# ── Install Claude Desktop Skills ────────────────────────────────
install_desktop_skills() {
if ! $INSTALL_DESKTOP; then return; fi
log_step "Claude Desktop Skills (desktop/SKILL.md)"
# Claude Desktop skills are stored as project knowledge files.
# They are loaded when the user opens a project that includes them.
local skills_target="$HOME/.claude/skills"
if $DRY_RUN; then
log_info "[DRY-RUN] Would create skill directory: $skills_target"
for entry in "${SKILLS[@]}"; do
IFS='|' read -r num name desc <<< "$entry"
log_info "[DRY-RUN] Would symlink: ${num}-${name}/desktop/ → $skills_target/${num}-${name}/"
done
return
fi
mkdir -p "$skills_target"
for entry in "${SKILLS[@]}"; do
IFS='|' read -r num name desc <<< "$entry"
local src="$SKILLS_ROOT/${num}-${name}/desktop"
local dest="$skills_target/${name}"
if [[ -d "$src" ]]; then
# Remove existing symlink/dir if present
rm -rf "$dest"
ln -sf "$src" "$dest"
log_success "#${num} ${name}$dest"
else
log_warn "#${num} ${name}: no desktop/ directory"
fi
done
# Symlink shared references
ln -sf "$SHARED_DIR/references" "$skills_target/dintel-references"
log_success "Shared references → $skills_target/dintel-references"
# Create an index file
cat > "$skills_target/dintel-index.md" <<EOF
# D.intelligence Agent Corps — Claude Desktop Skills
Installed by \`dintel-shared/install.sh v${VERSION}\`.
Source: \`${SKILLS_ROOT}\`
## Available Skills
| # | Skill | Description |
|---|-------|-------------|
EOF
for entry in "${SKILLS[@]}"; do
IFS='|' read -r num name desc <<< "$entry"
echo "| ${num} | ${name} | ${desc} |" >> "$skills_target/INDEX.md"
done
cat >> "$skills_target/INDEX.md" <<EOF
## Usage in Claude Desktop
Add skill files as Project Knowledge when creating a new Claude Desktop project:
1. Open Claude Desktop → Settings → Projects
2. Create or open a D.intelligence project
3. Skills are auto-discovered from \`~/.claude/skills/dintel-*/SKILL.md\`
## Shared References
\`dintel-references/\` contains:
- \`dintelligence_brand_guide.md\` — Writing style guide
- \`design-system-2025.md\` — Visual identity system
- \`pricing-reference.md\` — Service pricing tables
- \`notion-schema-reference.md\` — Notion database schemas
EOF
log_success "Skill index created at $skills_target/INDEX.md"
echo ""
log_info "To use skills in Claude Desktop:"
log_info " 1. Open Claude Desktop → Projects"
log_info " 2. Skills are auto-registered as slash commands in Claude Code"
}
# ── Uninstall ────────────────────────────────────────────────────
uninstall() {
log_step "Uninstalling D.intelligence Agent Corps"
local skills_target="$HOME/.claude/skills"
local venv_dir="$SHARED_DIR/.venv"
if $DRY_RUN; then
log_info "[DRY-RUN] Would remove: $skills_target"
log_info "[DRY-RUN] Would remove: $venv_dir"
return
fi
if [[ -d "$skills_target" ]]; then
rm -rf "$skills_target"
log_success "Removed $skills_target"
else
log_info "No Desktop skills installed"
fi
if [[ -d "$venv_dir" ]]; then
rm -rf "$venv_dir"
log_success "Removed Python venv at $venv_dir"
else
log_info "No Python venv found"
fi
# Check for .claude-agents symlinks
# Don't auto-remove — user may have customized
if [[ -d ".claude-agents" ]]; then
log_warn "Found .claude-agents/ in current directory — remove manually if desired"
fi
log_success "Uninstall complete"
}
# ── Summary ──────────────────────────────────────────────────────
show_summary() {
log_step "Installation Summary"
echo ""
echo -e " ${BOLD}D.intelligence Agent Corps v${VERSION}${NC}"
echo -e " ─────────────────────────────────────────"
echo ""
if $INSTALL_CODE; then
echo -e " ${GREEN}${NC} Claude Code skills installed"
fi
if $INSTALL_DESKTOP; then
echo -e " ${GREEN}${NC} Claude Desktop skills installed"
fi
if [[ -n "$PYTHON_CMD" ]]; then
echo -e " ${GREEN}${NC} Python environment ready (dintel package)"
fi
echo ""
echo -e " ${BOLD}Agents:${NC}"
for entry in "${SKILLS[@]}"; do
IFS='|' read -r num name desc <<< "$entry"
echo -e " ${CYAN}#${num}${NC} ${name}${desc}"
done
echo ""
echo -e " ${BOLD}Shared Infrastructure:${NC}"
echo -e " ${CYAN}dintel-shared/${NC}"
echo " src/dintel/{brand,document,excel,notion}.py"
echo " references/{brand_guide,pricing,notion_schema,design_system}"
echo ""
echo -e " ${BOLD}Source:${NC} ${SKILLS_ROOT}"
echo ""
}
# ── Main ─────────────────────────────────────────────────────────
main() {
parse_args "$@"
echo ""
echo -e "${BOLD}╔══════════════════════════════════════════════════════════╗${NC}"
echo -e "${BOLD}║ D.intelligence Agent Corps — Skill Installer ║${NC}"
echo -e "${BOLD}║ v${VERSION} • 9 Agents + Shared Infrastructure ║${NC}"
echo -e "${BOLD}╚══════════════════════════════════════════════════════════╝${NC}"
if $DRY_RUN; then
echo -e "\n ${YELLOW}── DRY RUN MODE — No changes will be made ──${NC}\n"
fi
# Pre-flight
preflight
if $UNINSTALL; then
uninstall
exit 0
fi
# Interactive selection if no flags
interactive_prompt
# Install steps
install_python_env
install_code_skills
install_desktop_skills
# Summary
if ! $DRY_RUN; then
show_summary
fi
}
main "$@"

View File

@@ -0,0 +1,33 @@
[project]
name = "dintel"
version = "0.1.0"
description = "D.intelligence Agent Corps — shared Python utilities"
requires-python = ">=3.12"
license = "MIT"
authors = [
{ name = "Andrew Yim", email = "andrew.yim@dintelligence.co.kr" },
]
dependencies = [
"python-docx>=1.1.0",
"python-pptx>=0.6.23",
"openpyxl>=3.1.2",
"fpdf2>=2.7.9",
"Pillow>=10.3.0",
]
[project.optional-dependencies]
dev = [
"pytest>=8.0",
"ruff>=0.4",
]
[build-system]
requires = ["setuptools>=68.0", "wheel"]
build-backend = "setuptools.build_meta"
[tool.setuptools.packages.find]
where = ["src"]
[tool.ruff]
line-length = 100
target-version = "py312"

View File

@@ -0,0 +1,169 @@
# D.intelligence Design System 2025
> **Source**: `D.intelligence_Design_System_2025.pdf`
> **Updated**: 2025 Edition (2022 → 2025 migration)
---
## 1. Logo & Logomark
### Primary Logo
Pentagon/arrow logomark with "think forward" + wordmark.
### Clear Space
Minimum clear space = height of the "D." element on all sides.
### Logo Variants
| Variant | File | Usage |
|---------|------|-------|
| Horizontal | `D.intelligence_logo_horizontal.svg/.png` | Standard use |
| Horizontal White | `D.intelligence_logo_horizontal_white.png` | Dark backgrounds |
| Vertical | `D.intelligence_logo_vertical.png` | Narrow spaces |
| Vertical White | `D.intelligence_logo_vertical_white.svg/.png` | Dark BG narrow |
| Wordtype | `D.intelligence_logo_wordtype.svg/.png` | Text-only contexts |
| Wordtype White | `D.intelligence_logo_wordtype_white.png` | Dark BG text-only |
| Square | `D.intelligence_logo_square.png` | Social/profile images |
| Motto | `D.intelligence_logo_motto.svg/.png` | With tagline |
| Motto White | `D.intelligence_logo_motto_white.svg/.png` | Dark BG with tagline |
### Logo Files Location
`Source Files/디자인 가이드/` and `Source Files/로고/`
---
## 2. Color System
### Primary Palette
| Name | Hex | RGB | Usage |
|------|-----|-----|-------|
| **D Beige** | `#E5E1D2` | R229 G225 B210 | **NEW — Primary BG** (cover, section dividers) |
| **D Olive** | `#CEDC00` | R206 G220 B0 | **Accent only** (circles, highlights, Venn overlaps) |
| **D Brown** | `#231815` | R35 G24 B21 | **Primary text** / Dark BG |
| **D Black** | `#000000` | R0 G0 B0 | Dark BG / Text |
### Secondary Palette
| Name | Hex | RGB | Usage |
|------|-----|-----|-------|
| **D Gray** | `#727171` | R114 G113 B113 | Secondary text, subtitles, captions |
| **D Light Gray** | `#F2F2F2` | R242 G242 B242 | Card / BG |
| **D Blue** | `#0075C0` | R0 G117 B192 | **Digital accent only** — diagrams, data visualizations |
| **D Border** | `#BFBFBF` | R191 G191 B191 | Border 0.5pt |
| **Warm Gray** | `#C8C4B8` | R200 G196 B184 | Header bar, vertical line accent |
### Color Usage Rules
| Element | Color |
|---------|-------|
| Cover & Section Divider BG | D Beige `#E5E1D2` |
| Content Slide BG | White `#FFFFFF` |
| Closing / Dark slides | D Brown `#231815` |
| D Olive `#CEDC00` | **Accent only** — circles, highlights, Venn overlaps |
| D Blue `#0075C0` | **Digital/web accent only** — diagrams, data viz |
| Borders | 0.5pt, D Border `#BFBFBF` |
| Text (primary) | D Brown `#231815` or D Black `#000000` |
| Text (secondary) | D Gray `#727171` |
### 2022 → 2025 Key Change
**D Olive (#CEDC00) demoted from dominant background color to accent-only.** New warm D Beige (#E5E1D2) conveys a more mature, consultancy-grade aesthetic.
---
## 3. Typography
### Font Families
| Language | Font | Weights |
|----------|------|---------|
| **Korean** | Apple SD Gothic Neo | Regular, Bold, ExtraBold, Heavy, Light, Medium |
| **English** | DM Sans | Regular, Medium, Bold (+Italic variants) |
### Type Scale
| Element | Size | Weight | Color |
|---------|------|--------|-------|
| Display Title (Section Divider) | 54-72pt | Bold / Black | D Brown `#231815` |
| Slide Title | 28-36pt | Bold | D Brown `#231815` |
| Subtitle / Caption | 14-16pt | Regular | D Gray `#727171` |
| Body Text | 11-14pt | Regular | D Brown `#231815` |
| Footnote / Page Info | 8-10pt | Regular | D Gray `#727171` |
| Header Bar (Top-left) | 10pt | Regular | Warm Gray `#C8C4B8` |
---
## 4. Layout Motifs & Grid
### Three Visual Signatures
| Motif | Description | Usage |
|-------|-------------|-------|
| **Vertical Line Accent** | Thin vertical line (`#C8C4B8`) on left side of section dividers | Height varies with title |
| **Three-Dot Motif** | `• • •` in upper-right corner | Cover and featured content slides |
| **Footer Convention** | "Analysis, Treatment & Growth" + page number | Bottom of all content slides |
### Spacing & Margins
- Minimum margins: **0.5 inches** on all sides
- Generous whitespace maintained throughout
- Left-alignment for body text
---
## 5. Slide Templates
### Cover Slide
- D Beige background
- Three-dot motif (• • •) upper-right
- "D.intelligence" logo
- Title area
- "- Analysis, Treatment & Growth -" subtitle
### Section Divider
- D Beige background
- Vertical line accent (left)
- Large display title (54-72pt, Bold)
- "DATA INTELLIGENCE" or section keyword
### Content Slide
- White background
- Slide title (28-36pt, Bold, D Brown)
- Body text area (11-14pt)
- Visual/chart placeholder
- Footer: "Analysis, Treatment & Growth" + page number
### Closing Slide
- D Brown `#231815` background (dark)
- "Thank You" / "Think Forward"
- Company info footer
---
## 6. Do's & Don'ts
### DO
- Use D Beige for cover and section dividers
- Maintain vertical line accent on section slides
- Keep body text 11-14pt for readability
- Use D Brown (#231815) as primary text colour
- Include "Analysis, Treatment & Growth" footer
- Use D Olive sparingly as accent only
- Maintain generous whitespace (0.5" margins min)
### DON'T
- Use D Olive as full slide background (2022 style)
- Mix D Blue and D Olive as equal-weight colours
- Use text smaller than 8pt anywhere
- Place logo on every content slide
- Use gradients or drop shadows on text
- Stretch or distort the logomark
- Use colours outside the defined palette
---
## Company Info (Footer)
```
(주)디인텔리전스
경기도 성남시 수정구 창업로 43 판교글로벌비즈센터 업무동 1층 36호 | 13449
T. 82. 70. 5118. 5582 | W. https://dintelligence.co.kr | E. info@dintelligence.co.kr
```

View File

@@ -0,0 +1,439 @@
# D.intelligence 브랜드 한국어 라이팅 스타일 가이드
> Source: [Notion — D.intelligence Brand Guide](https://www.notion.so/dintelligence/Review-D-intelligence-Brand-Guide-31c581e58a1e805eb980cf01ccc9a8d4)
---
## Mission & Vision
- **Mission**: 데이터 기반 의사결정으로 기업의 지속가능한 성장을 실현하는 Marketing Intelligence 파트너
- **Vision**: AI 기반 마케팅 인텔리전스 서비스 플랫폼
## Brand Definition (최종안)
> D.intelligence는 디지털 마케팅과 데이터 분석의 경계를 허물고, 고객의 지속가능한 성장을 이끄는 **Marketing Intelligence 파트너**이다.
---
## 1. 브랜드 개요
D.intelligence는 데이터 인텔리전스 기반의 마케팅 전략 진단 및 컨설팅 서비스를 제공하는 브랜드이다.
**"SMART Marketing Clinic"**이라는 콘셉트 아래 데이터 분석, 진단, 교육 서비스를 운영하며, 전문성과 신뢰감을 핵심 브랜드 가치로 전달한다.
---
## 2. 톤 & 보이스 (Tone & Voice)
### 2.1 전체 톤
| 항목 | 특성 | 설명 |
|------|------|------|
| 전문성 | ★★★★★ | 업계 전문 용어와 기술적 표현을 적극 활용 |
| 격식 | ★★★★☆ | 존칭체와 간결한 서술체를 문맥에 따라 혼용 |
| 권위감 | ★★★★☆ | 데이터와 논리에 기반한 단정적 서술 |
| 친근감 | ★★☆☆☆ | 감정적, 구어적 표현은 최소화 |
| 실용성 | ★★★★★ | 구체적 사례, 실천 과제 중심의 서술 |
### 2.2 문체 유형별 톤 구분
#### (1) 서비스 소개 및 회사 소개 페이지 — ~합니다 존칭 서술체
예시: "D.intelligence는 데이터 기반의 사용자 경험 여정 진단을 통해 디지털 광고, 콘텐츠 마케팅, 검색 최적화, 웹 & 앱 최적화 서비스를 제공하며, 이를 통해 비즈니스 성과 중심의 마케팅 솔루션을 함께하는 성장 파트너입니다."
#### (2) Magazine D. (블로그/아티클) — ~다 간결 서술체
예시: "디지털 마케팅 전략의 핵심은, 데이터를 기반으로 한 의사 결정 과정에 있다."
예시: "이런 세분화된 접근 방식은 마케팅 메시지의 관련성을 높이고, 전환율을 증가시키는 데 중요한 역할을 한다."
#### (3) 교육/워크숍 페이지 — ~합니다/~세요 안내체 혼용
예시: "한 주에 하나씩 업무에 바로쓰는 마케팅 애널리틱스 완전정복"
예시: "레슨은 진행 과정과 상관없이 관심 주제별로 언제든 참여하실 수 있습니다."
#### (4) 상담문의 페이지 — ~주시면/~드리겠습니다 정중한 요청체
예시: "기대 사항 등을 남겨주시면, 최선을 다해 구체적이고 명료한 검토의견을 드리도록하겠습니다."
---
## 3. 문장 구조 및 문법 규칙
### 3.1 문장 길이
- 평균 40~80자 내외의 중장문 위주
- 쉼표(,)로 절을 구분하여 가독성 유지
- 논리적 흐름을 갖춘 복문 구조 선호
- 지나치게 짧은 문장은 지양
예시 (복문 구조): "특정 행동을 보인 사용자 그룹에게만 타겟팅하여 광고를 전달함으로써, 광고 비용 대비 효율을 크게 높일 수 있다."
### 3.2 접속 표현 패턴
| 표현 | 용도 | 빈도 |
|------|------|------|
| ~을 통해 | 수단, 방법 제시 | ★★★★★ |
| ~함으로써 | 결과, 효과 연결 | ★★★★☆ |
| ~에 기여한다 | 성과 강조 | ★★★★☆ |
| ~하는 데 있다 | 핵심 포인트 강조 | ★★★★☆ |
| ~의 관점에서 | 시각 제시 | ★★★☆☆ |
| 이를 통해 | 앞 내용과 연결 | ★★★★★ |
| 따라서 | 논리적 귀결 | ★★★★☆ |
| 결론적으로 | 마무리 요약 | ★★★☆☆ |
### 3.3 문장 종결 패턴
**Magazine D. 아티클 종결:**
~다 / ~한다 / ~할 수 있다 / ~에 기여한다 / ~역할을 한다 / ~중요하다 / ~필요하다
예시: "이는 광고 캠페인의 효과를 최적화하고 불필요한 광고 지출을 줄이는 데 도움이 된다."
**서비스 및 회사 소개 종결:**
~입니다 / ~파트너입니다 / ~서비스입니다 / ~돕는 ...입니다 / ~드리겠습니다
예시: "D.intelligence는 생산적인 데이터 활용을 위한 개인 역량과 조직 문화 차원의 데이터 리터러시 증진을 돕는 엑셀러레이터입니다."
---
## 4. 어휘 및 용어 사용 규칙
### 4.1 외래어 및 영문 용어 병기 원칙
한글과 영문을 적극적으로 병기하는 것이 브랜드의 핵심 특징이다.
**규칙 1: 업계 표준 용어는 영문 그대로 사용**
| 사용 | 지양 |
|------|------|
| Google Analytics 4 | 구글 분석 도구 4 |
| KPI | 핵심 성과 지표(만 단독 사용) |
| SEO | 검색 엔진 최적화(만 단독 사용) |
| ROI | 투자 수익률(만 단독 사용) |
| Technical SEO | 기술적 검색 최적화 |
**규칙 2: 첫 등장 시 한글(영문) 또는 영문(한글) 형태로 병기**
예시: "핵심 성과 지표(KPI) 설정"
예시: "프로덕트 애널리틱스 Product Analytics"
예시: "사용자 행동 속성(Behaviors)과 사용자 정보(Demographics)"
**규칙 3: 제품명 및 서비스명은 원어 그대로 표기**
예시: Mixpanel, Google Analytics 4, Meta ADs, Looker Studio
### 4.2 브랜드 고유 핵심 용어 사전
| 용어 | 설명 | 사용 맥락 |
|------|------|----------|
| SMART Marketing Clinic | 브랜드 핵심 콘셉트 | 서비스 총칭 |
| 데이터 인텔리전스 | 데이터 기반 마케팅 분석 | 브랜드 정체성 |
| Data Intelligence Counselor | 전문 역할 명칭 | About 페이지 |
| Marketing Data Translator | 데이터 통역사 | About 페이지 |
| Data Literacy Enabler | 데이터 리터러시 촉진자 | About 페이지 |
| 검토의견 | 컨설팅 결과 전달물 | 상담문의 |
| 성장 파트너 | 고객과의 관계 정의 | 서비스 설명 |
| 데이터 기반 의사 결정 | 핵심 가치 | 전 페이지 공통 |
| 마케팅 인텔리전스 | 마케팅 분석 총칭 | 서비스 설명 |
| 사용자 경험 여정 | 고객 여정 분석 | 서비스 설명 |
### 4.3 한자어 전문 어휘 사용 경향
브랜드는 한자어 기반의 격식 있는 전문 어휘를 선호한다.
| 선호 표현 | 비선호 표현 |
|----------|----------|
| 극대화 | 최대한 늘리기 |
| 세분화 | 나누기, 쪼개기 |
| 도출 | 끌어내기 |
| 수립 | 세우기 |
| 진단 | 살펴보기 |
| 구축 | 만들기 |
| 증진 | 높이기 |
| 배분 | 나누기 |
| 활용 | 쓰기 |
| 준수 | 지키기 |
---
## 5. 구두점 및 표기법
### 5.1 쉼표(,)
문장 내 절 구분과 항목 나열 시 적극 활용한다.
예시: "디지털 광고, 콘텐츠 마케팅, 검색 최적화, 웹 & 앱 최적화 서비스를 제공하며"
### 5.2 마침표(.)
모든 서술 문장은 마침표로 종결한다. 제목과 헤딩에는 생략한다.
### 5.3 파이프(|) 기호
유사한 개념을 병렬 표기할 때 사용한다.
예시: "문의 | 상담 요청 사항"
예시: "디지털 애널리틱스 진단 | 설정 문의"
### 5.4 괄호
영문 용어 병기 또는 보충 설명 시 소괄호를 사용한다.
예시: "핵심 성과 지표(KPI)"
예시: "기기 기반 식별자(Device ID)"
### 5.5 대괄호([])
Magazine D. 기사 제목에서 카테고리 태그로 사용한다.
예시: "[Google Analytics 4] 잠재고객, 무엇이고 왜 설정해야 할까?"
예시: "[Meta ADs] 광고예산을 효율적으로 결정하는 방법"
### 5.6 작은따옴표
강조하고자 하는 핵심 단어에 사용한다.
예시: "'필수 요소'다"
---
## 6. 콘텐츠 구조 패턴
### 6.1 서비스 소개 페이지 구조
[영문 서비스명 (헤딩)]
[한국어 서비스 부제 또는 설명 한 줄]
[상세 설명 문단 — 무엇을, 왜, 어떻게의 순서]
예시:
- H3: SMART Measurement & Audit
- P: 디지털 마케팅 성과를 극대화하기 위한 핵심 성과 지표(KPI) 설정, 성과 측정 계획 수립, 채널 퍼포먼스 리포팅...데이터 기반 의사 결정을 지원하는 진단, 컨설팅 서비스
### 6.2 Magazine D. 아티클 구조
[대괄호 카테고리] 제목 — 질문형 또는 화제 제시형
도입: 주제의 배경 및 중요성 서술
본론 1: 핵심 개념 설명 (첫째, 둘째 등 순서 표현)
본론 2: 구체적 사례 및 활용법 제시
결론: '결론적으로' 시작, 핵심 메시지 요약
참고 링크: [출처명] 제목 형식
### 6.3 제목(헤딩) 작성 규칙
**아티클 제목 패턴:**
- 질문형: "~무엇이고 왜 설정해야 할까?"
- 방법 제시형: "~효율적으로 결정하는 방법"
- 주의점 제시형: "~어떻게 사용해야 할까? 사용 시 주의점은?"
**서비스 헤딩 패턴:**
- 영문 헤딩 + 한국어 부제 조합
**교육 헤딩 패턴:**
- 캐치프레이즈 + 부제 조합
- 예시: "마케터를 위한 애널리틱스 트리트먼트 하루에 한 가지!"
- 예시: "1 Insight per Day"
---
## 7. 자주 사용하는 표현 및 구문 패턴
### 7.1 가치 제안 구문
| 패턴 | 예시 |
|------|------|
| ~을 통해 ~을 돕는 [역할]입니다 | "성장을 돕는 SMART Marketing Clinic입니다" |
| ~을 위한 ~을 지원하는 서비스 | "데이터 기반 의사 결정을 지원하는 진단, 컨설팅 서비스" |
| ~의 효율성을 극대화하고 | "마케팅 캠페인의 효율성을 극대화하고" |
| ~에 크게 기여한다 | "효과적으로 배분하는 데 크게 기여한다" |
### 7.2 논리 전개 구문
| 패턴 | 예시 |
|------|------|
| 첫째. / 둘째. | "첫째. 잠재고객 설정을 통해..." |
| ~라고 가정해보자 | "제품을 구매하지 않은 사용자가 있다고 가정해보자" |
| 결론적으로, | "결론적으로, GA4에서 잠재고객 설정은..." |
| 예를 들어, | "예를 들어, 가격이 높아 관여도 역시 높은..." |
| 이런 관점에서 | "이런 관점에서, GA4 잠재고객 설정은..." |
### 7.3 나열 구문
명사구 나열 시 쉼표 구분 후 마지막에 동사구로 마무리한다.
예시: "핵심 성과 지표(KPI) 설정, 성과 측정 계획 수립, 채널 퍼포먼스 리포팅, 사용자 경험 모델링, 성과 관리 체계 디자인까지"
---
## 8. 피해야 할 표현
| 피해야 할 표현 | 대신 사용할 표현 | 이유 |
|-------------|-------------|------|
| ~해요 / ~이에요 | ~합니다 / ~입니다 | 구어체 지양 |
| 엄청 / 진짜 / 너무 | 매우 / 크게 / 상당히 | 격식 유지 |
| 쉽게 말하면 | 구체적으로 | 전문성 유지 |
| 꿀팁 / 꿀정보 | 핵심 포인트 / 주요 사항 | 브랜드 격식 유지 |
| ㅎㅎ / ㅋㅋ / 이모지 | (사용하지 않음) | 전문 브랜드 톤 |
| ~거든요 / ~잖아요 | ~이기 때문이다 / ~이므로 | 논리적 서술체 유지 |
---
## 9. 참고 링크 표기법
Magazine D. 아티클 하단 참고 자료 표기 형식:
참고 링크
[출처명] 제목 또는 설명
예시:
- [Meta Business] 어드밴티지+ 타겟 정보
- [Jon Loomer] How Advantage+ Audience Works
- [madgicx] The Advantages and Disadvantages of Meta Advantage+ Tools
---
## 10. 웹 카피라이팅 세트 (Web Copywriting Set)
### 10.1 브랜드 슬로건 및 태그라인
| 구분 | 카피 | 사용 위치 |
|------|------|----------|
| 브랜드 슬로건 | Think Forward | 홈페이지 히어로 섹션 |
| 브랜드 키워드 | Context, Content, Connection | 홈페이지 가치 제안 |
| 서비스 태그라인 | Analysis, Treatment & Growth | 홈페이지 서비스 소개 상단 |
| 서비스 서브 태그라인 | Data Intelligence Audit, Digital Analytics Consulting & Data Storytelling | SMART Marketing Clinic 섹션 |
### 10.2 역할 타이틀 (Role Titles)
| 타이틀 | 한국어 설명 | 사용 위치 |
|--------|----------|----------|
| Data Intelligence Counselor | 데이터 인텔리전스 기반 진단 파트너 | 홈페이지, About |
| Marketing Data Translator | 마케팅-데이터-IT 간 데이터 통역사 | 홈페이지, About |
| Data Literacy Enabler | 데이터 리터러시 증진 엑셀러레이터 | 홈페이지, About |
| D.Mentor | Magazine D. 필진 프로필 명칭 | Magazine D. |
| Data Analytics Consultant | 필진 직책 표기 | Magazine D. |
| Data Analyst & Marketing Intelligence Advisor | 필진 전문분야 표기 | Magazine D. |
### 10.3 서비스명 (Service Titles)
모든 서비스명은 영문으로 작성하며, 아래에 한국어 설명을 부제로 배치한다.
| 서비스명 (영문) | 한국어 부제 |
|-------------|----------|
| SMART Measurement & Audit | KPI 설정, 성과 측정 계획 수립, 성과 관리 체계 디자인 |
| Marketing Intelligence Audit | 디지털 마케팅 채널 성과 진단, 사용자 여정 분석 |
| Data Analytics Consulting | 디지털 애널리틱스 진단, 설정, 최적화 컨설팅 |
| Performance Dashboard Design | 퍼포먼스 대시보드 설계, 구축, 자동화 |
| Data Storytelling Design | 데이터 시각화, 인터랙티브 프레젠테이션 디자인 |
| Data Literacy Training | 데이터 리터러시 교육, 워크숍 운영 |
### 10.4 교육 프로그램명 및 캐치프레이즈
| 프로그램명 | 캐치프레이즈 |
|----------|----------|
| GA4 코어 트레이닝 캠프 | (별도 캐치프레이즈 없음) |
| 마케팅 애널리틱스 1Day 챌린지 | 1 Insight per Day |
| | 마케터를 위한 애널리틱스 트리트먼트 하루에 한 가지! |
| | Google Analytics 4 기본부터 고급 활용 테크닉 완전 정복! |
**교육 페이지 라벨:**
| 영문 라벨 | 사용 위치 |
|---------|----------|
| 1 DAY TREATMENT | 교육 단위 설명 |
| 3 STEP APPROACH | 학습 방법론 |
| 8 WEEKS PER ANALYTICS | 교육 기간 안내 |
| Course Content | 커리큘럼 섹션 제목 |
| NOT ENROLLED | 수강 상태 표시 |
| Get Started | CTA 버튼 |
| Take this Course | CTA 버튼 |
### 10.5 섹션 라벨 (Section Labels)
| 라벨 | 사용 위치 | 역할 |
|------|----------|------|
| ABOUT D.INTELLIGENCE | 홈페이지 상단 | 브랜드 소개 섹션 식별자 |
| WHAT WE DO | 홈페이지 서비스 섹션 | 서비스 소개 섹션 식별자 |
| Fact Sheet | About 페이지 | 회사 기본 정보 섹션 |
| Location | About 페이지 | 위치 안내 섹션 |
| D.intelligence Sector Magazine | Magazine D. 페이지 | 매거진 섹션 식별자 |
| Current Status | 교육 페이지 | 수강 상태 섹션 |
| Price | 교육 페이지 | 가격 정보 섹션 |
### 10.6 네비게이션 메뉴명
| 메뉴명 | 언어 | 비고 |
|--------|------|------|
| About | 영문 | 회사 소개 |
| SMART Marketing Clinic | 영문 | 서비스 소개 |
| Data Intelligence Workshop | 영문 | 교육 프로그램 |
| Magazine D. | 영문 | 블로그/매거진 |
| 상담문의 | 한국어 | CTA 버튼 (강조색 배경) |
### 10.7 Magazine D. 기사 제목 카테고리 태그
| 태그 | 사용 예시 |
|------|----------|
| [Google Analytics 4] | [Google Analytics 4] 잠재고객, 무엇이고 왜 설정해야 할까? |
| [Meta ADs] | [Meta ADs] 어드밴티지+ 타겟, 어떻게 사용해야 할까? |
| [Mixpanel] | Mixpanel 소개 및 기본 기능: Google Analytics 4과 비교하여 |
### 10.8 웹 카피라이팅 작성 규칙
**규칙 1: 영문-한국어 이중 구조 (Bilingual Layering)**
브랜드의 웹 카피는 영문 타이틀 + 한국어 설명의 이중 구조를 기본으로 한다.
예시:
- 영문: "Data Storytelling Design"
- 한국어: "발견된 데이터 인사이트를 목표 청중에게 효과적으로 전달하여, 공통의 문제의식과 실천의 방향을 제시하는 데이터 시각화, 인터랙티브 프레젠테이션 디자인"
**규칙 2: 영문 타이틀 스타일**
- Title Case 사용 (각 단어의 첫 글자 대문자)
- 관사(a, an, the)와 전치사는 소문자 유지
- 앰퍼샌드(&) 사용 (and 대신)
- 간결한 명사구 중심 (3~5단어)
올바른 예시: Analysis, Treatment & Growth / SMART Measurement & Audit
**규칙 3: 섹션 라벨 스타일**
- ALL CAPS (전체 대문자) 사용
- 간결한 명사구 (1~3단어)
올바른 예시: ABOUT D.INTELLIGENCE / WHAT WE DO
**규칙 4: 캐치프레이즈 스타일**
- 짧고 임팩트 있는 구문
- 느낌표(!)로 종결하여 행동 유도
- 영문과 한국어 혼용 가능
올바른 예시: "Think Forward" / "1 Insight per Day" / "마케터를 위한 애널리틱스 트리트먼트 하루에 한 가지!"
**규칙 5: CTA(Call to Action) 버튼 스타일**
- 교육/워크숍 CTA는 영문 사용: "Get Started", "Take this Course"
- 상담/문의 CTA는 한국어 사용: "상담문의", "문의하기"
- CTA 버튼은 강조색(노란색/라임) 배경으로 시각적 차별화
**규칙 6: 푸터(Footer) 정보 표기**
- 회사명: 영문 로고 "D.intelligence" 사용
- 연락처, 주소 등 기본 정보는 한국어로 표기
- 저작권 표기: 영문 형식 사용
### 10.9 웹 카피 톤 매트릭스
| 페이지 유형 | 영문 카피 톤 | 한국어 카피 톤 |
|-----------|-----------|-------------|
| 홈페이지 히어로 | 임팩트, 비전 제시 | 브랜드 가치 서술 |
| 서비스 소개 | 전문적, 간결 | 상세 설명, 존칭체 |
| 교육 프로그램 | 동기부여, 행동 유도 | 안내, 설명체 |
| Magazine D. | 카테고리 태깅 | 논리적 서술체 |
| About | 포지셔닝, 역할 정의 | 비전 서술, 존칭체 |
| 상담문의 | (사용 안 함) | 정중한 요청체 |
---
## 11. 체크리스트: 브랜드 톤 적합성 검증
- [ ] 전문 용어는 영문 병기가 되어 있는가?
- [ ] 문장이 논리적 흐름(배경, 설명, 사례, 결론)을 따르는가?
- [ ] 구어체가 사용되지 않았는가?
- [ ] 한자어 기반 격식 어휘를 사용했는가?
- [ ] 서비스 페이지는 존칭체, 아티클은 서술체로 통일되었는가?
- [ ] 쉼표로 적절히 절을 구분했는가?
- [ ] 제목에 [카테고리] 태그가 포함되었는가? (Magazine D.)
- [ ] 브랜드 특유의 접속 표현을 활용했는가?
- [ ] 결론부에 결론적으로 로 시작하는 요약이 있는가? (아티클)
- [ ] 감정적, 과장된 표현 없이 데이터와 논리에 기반한 서술인가?
- [ ] 영문 타이틀은 Title Case로 작성되었는가?
- [ ] 섹션 라벨은 ALL CAPS로 표기되었는가?
- [ ] CTA 버튼이 적절한 언어(교육=영문, 문의=한국어)로 표기되었는가?
- [ ] 영문-한국어 이중 구조가 올바르게 적용되었는가?
---
이 스타일 가이드는 [dintelligence.co.kr](http://dintelligence.co.kr/) 웹사이트의 전체 페이지 (About, SMART Marketing Clinic, Data Intelligence Workshop, Magazine D., 상담문의) 콘텐츠를 분석하여 작성되었습니다.

View File

@@ -0,0 +1,140 @@
# D.intelligence Notion Database Schema Reference
> **Last verified**: 2026-03-08
> **Update policy**: Check and update schema when writing to Notion tasks. Structure rarely changes.
---
## DB1: Client Service Tasks Dashboard
- **ID**: `2c0581e58a1e816d9948c3f3591c372c`
- **Collection**: `collection://2c0581e5-8a1e-8178-aa9a-000b44537e0a`
- **Purpose**: Unified task tracker across all clients
### Schema
| Property | Type | Options/Notes |
|----------|------|---------------|
| Task Name | title | |
| Task Status | status | Not Started, Planning, In Progress, In Review, Waiting, Done, On Hold, Archived |
| Client Code | select | JHR, JAM, SLA, SHR, OurDigital |
| Client | relation | → Client DB (`collection://ac212daf-4eda-4a99-8c97-89699c846331`) |
| Priority | select | A1, A2, A3, B1, B2, B3, C1, C2, C3 |
| Service Line | select | SEO, Local SEO, Digital Ads, Content Marketing, Growth Package, AI Literacy, Data Literacy, Data Analytics, GTM/Tagging, Web Dev |
| Category | multi_select | SEO, 데이터 분석, 광고, 콘텐츠, 웹사이트, 리포트, 회의, 리서치, 교육, 프롬프트, 프로젝트 관리, 기타 |
| Type | select | Task, Audit, Report, Billing, Meeting, Project, Analysis, Research, Guide, Editorial, Ad Management |
| Tags | multi_select | SEO, Looker Studio, WordPress, Google Analytics, Google Tag Manager, Way of Working, Workshop, D.intelligence Services, WPForms, Membership, Infra, Policy, Transaction, D.intel, R&D, Research |
| Due Date | date | |
| Start Date | date | |
| Effort (hrs) | number | |
| Billable | checkbox | |
| Billing Month | date | |
| Assignee | person | |
| Notes | text | |
| Source DB | select | JHR-Original, JAM-Original, SLA-Original, New |
| URL | url | |
| Daily Work Plans | relation | → `collection://2ef581e5-8a1e-80b9-81cb-000b121910d3` |
| Google Drive File | relation | → `collection://2d0581e5-8a1e-8096-8577-000b5152a9f2` |
| JHR Related Tasks | relation | → JHR DB |
| JAM Related Tasks | relation | → JAM DB |
| SLA Related Tasks | relation | → SLA DB |
---
## DB2: Client Reference Library
- **ID**: `f0508d67b26042c1a0c7f2283f87eab4`
- **Collection**: `collection://b8ddab91-d3a7-4b84-86d7-35e46711598c`
- **Purpose**: Knowledge base of client-related references
### Schema
| Property | Type | Options/Notes |
|----------|------|---------------|
| Title | title | |
| Account Code | select | D.intelligence, JHR, JAM, SLA, SHR, OurDigital |
| Category | select | SEO, Data Analytics, Content Marketing, Digital Ads, etc. |
| AI Summary | text | Brief summary of key points (3-5 sentences) |
---
## DB3: 조선호텔앤리조트 디지털마케팅 (JHR)
- **ID**: `529587363fe04a8da588337e8eb1aa0b`
- **Collection**: `collection://931a663c-4b76-4903-858c-f801b973a1aa`
- **Purpose**: JHR client-specific task board
### Schema
| Property | Type | Options/Notes |
|----------|------|---------------|
| Task Name | title | |
| Task Status | status | Not Started, Planning, In Progress, In Review, Waiting, Done, On Hold, Archived |
| Account Code | select | JHR, JAM, SLA, SHR |
| Assign | person | |
| Billable | checkbox | |
| Blocked by | relation | self-referential |
| Blocking | relation | self-referential |
| Service Line | select | |
| AI summary | text | |
---
## DB4: The Shilla Hotels & Resorts SEO & Data Intelligence (SLA)
- **ID**: `1e0581e58a1e80e28802d19bf8d468c7`
- **Collection**: `collection://1e0581e5-8a1e-8070-96b0-000bd2aacc88`
- **Purpose**: SLA client-specific task board
### Schema
| Property | Type | Options/Notes |
|----------|------|---------------|
| Task Name | title | |
| Task Status | status | Not Started, Planning, In Progress, In Review, Waiting, Done, On Hold, Archived |
| Account Code | select | |
| Assign | person | |
| Billable | checkbox | |
| Backup Start Date | date | Backup before reset |
| Backup End Date | date | Backup before reset |
| Backup Task Status | status | Backup before reset |
| Service Line | select | |
---
## DB5: 제이미성형외과 디지털 마케팅 (JAM)
- **ID**: `4d76fb5bb4134e81883c21a8c4aa80c1`
- **Collection**: `collection://9f183ecb-9364-410e-91a7-a41a20455272`
- **Purpose**: JAM client-specific task board
### Schema
| Property | Type | Options/Notes |
|----------|------|---------------|
| Task Name | title | |
| Account Code | select | JHR, JAM, SLA, SHR |
| Assign | person | |
| Billable | checkbox | |
| Billing Month | select | Jan-Dec |
| AI 요약 | text | |
---
## Cross-Reference Map
```
Client Service Tasks Dashboard (central hub)
├── → Client DB (ac212daf)
├── → Daily Work Plans (2ef581e5)
├── → Google Drive Files (2d0581e5)
├── ↔ JHR DB (931a663c) via JHR Related Tasks
├── ↔ JAM DB (9f183ecb) via JAM Related Tasks
└── ↔ SLA DB (1e0581e5) via SLA Related Tasks
```
## Meeting Library Hub
- **Location**: Notion (exact DB ID to be confirmed on first use)
- **Purpose**: All meeting minutes and notes
- **Workflow**: Account Manager auto-posts meeting notes → optional Slack share

View File

@@ -0,0 +1,82 @@
# Pricing Quick Reference
> D.intelligence Service Module Pricing | VAT 별도
---
## Individual Module Pricing
### Analysis (진단) -- Phase 1
| Code | Module | Duration | Price Range |
|------|--------|----------|-------------|
| A1 | 비즈니스·브랜드 진단 | 2--3주 | 300--500만원 |
| A2 | 고객·소비자 분석 | 3--4주 | 400--700만원 |
| A3 | 데이터 분석 (웹·앱) | 3--5주 | 400--800만원 |
| A4 | 디지털 마케팅 진단 | 2--4주 | 300--600만원 |
| A5 | 퍼포먼스 마케팅 진단 | 2--3주 | 300--500만원 |
| A6 | 운영·관리 진단 | 2--3주 | 200--400만원 |
### Treatment (처방) -- Phase 2
| Code | Module | Duration | Price Range |
|------|--------|----------|-------------|
| T1 | 브랜드 스토리텔링 & 가이드 | 4--8주 | 500--1,200만원 |
| T2 | 고객 접점 경험 최적화 | 4--6주 | 400--800만원 |
| T3 | 디지털 자산 통합관리 | 4--8주 | 600--1,500만원 |
| T4 | 콘텐츠 마케팅 | 4--8주 | 400--1,000만원 |
| T5 | 광고·전환 최적화 | 3--6주 | 400--800만원 |
| T6 | Brand Visibility Treatment | 4--12주 | 500--1,500만원 |
| T7 | 운영 시스템·자동화 | 4--8주 | 400--1,000만원 |
### Growth (성장) -- Phase 3
| Code | Module | Duration | Price Range |
|------|--------|----------|-------------|
| G1 | 퍼포먼스 마케팅 | 월간 | 200--500만원/월 |
| G2 | 콘텐츠 마케팅 대행 | 월간 | 300--600만원/월 |
| G3 | 모니터링·이슈관리 | 월간 | 200--400만원/월 |
| G4 | 연간 계약·운영 | 12개월 | 별도 협의 |
---
## Complexity Pricing Position
| Tier | Percentile in Range | Multiplier (hours) |
|------|--------------------|--------------------|
| Standard | 30th percentile | 1.0x |
| Complex | 60th percentile | 1.5x |
| Enterprise | 90th percentile | 2.0x |
---
## Discount Policies
| Condition | Discount | Stackable |
|-----------|----------|-----------|
| 3개 모듈 이상 동시 계약 | 15% | No (base) |
| Analysis -> Treatment 연계 | 20% | No (base) |
| Full cycle (Analysis -> Treatment -> Growth) | 25% | No (base) |
| G4 연간 계약 | 월 단가 20% 할인 | No (base) |
| 재계약 (기존 고객) | 10% 추가 할인 | Yes (stacks on base) |
**Rule**: Apply the single highest base discount. 재계약 stacks on top. Max total discount: 35%.
---
## Pre-built Packages
| Package | Modules | Price Range | Discount |
|---------|---------|-------------|----------|
| Starter | A3 + A4 + A5 | 800--1,500만원 | 15% |
| Standard | Starter + T3/T5/T6 택1 | 1,500--2,800만원 | 20% |
| Premium | Starter + 2 Treatment + 1 Growth (3개월) | 3,000--5,000만원 | 25% |
| SEO Intensive | A3 + T6 + G2 (3개월) | 2,000--3,500만원 | 20% |
---
## Standard Terms
- **Payment**: 착수금 50% / 완료 후 50%
- **Validity**: 견적 유효기간 30일
- **VAT**: 별도 (10%)

View File

@@ -0,0 +1,3 @@
"""D.intelligence Agent Corps — shared utilities."""
__version__ = "0.1.0"

View File

@@ -0,0 +1,132 @@
"""Brand constants and identity for D.intelligence."""
# ── Brand Core ──────────────────────────────────────────────────
BRAND_NAME = "D.intelligence"
BRAND_CONCEPT = "SMART Marketing Clinic"
TAGLINE = "Analysis, Treatment & Growth"
MOTTO = "Think Forward"
MISSION = "데이터 기반 의사결정으로 기업의 지속가능한 성장을 실현하는 전문 파트너"
WEBSITE = "https://dintelligence.co.kr"
CORE_VALUES = {
"Scientific": "과학적 방법론, 검증, 데이터 기반 판단",
"Practical": "실행 가능하고 현실적인 해법",
"Outcome": "측정 가능한 성과 중심",
"Insights": "복잡한 문제를 분명한 인사이트로 전환",
}
# ── Brand Colors — 2025 Design System ───────────────────────────
# Source: D.intelligence_Design_System_2025.pdf
# Primary palette (RGB)
COLOR_D_BEIGE = (229, 225, 210) # #E5E1D2 — Cover/Section BG (NEW primary BG)
COLOR_D_OLIVE = (206, 220, 0) # #CEDC00 — Accent only (demoted from 2022 BG)
COLOR_D_BROWN = (35, 24, 21) # #231815 — Primary text / Dark BG
COLOR_D_BLACK = (0, 0, 0) # #000000 — Dark BG / Text
# Secondary palette (RGB)
COLOR_D_GRAY = (114, 113, 113) # #727171 — Secondary text
COLOR_D_LIGHT_GRAY = (242, 242, 242) # #F2F2F2 — Card / BG
COLOR_D_BLUE = (0, 117, 192) # #0075C0 — Digital accent (diagrams, data viz)
COLOR_D_BORDER = (191, 191, 191) # #BFBFBF — Border 0.5pt
COLOR_D_WARM_GRAY = (200, 196, 184) # #C8C4B8 — Header bar, vertical line accent
COLOR_WHITE = (255, 255, 255)
# Hex versions
HEX_D_BEIGE = "#E5E1D2"
HEX_D_OLIVE = "#CEDC00"
HEX_D_BROWN = "#231815"
HEX_D_BLACK = "#000000"
HEX_D_GRAY = "#727171"
HEX_D_LIGHT_GRAY = "#F2F2F2"
HEX_D_BLUE = "#0075C0"
HEX_D_BORDER = "#BFBFBF"
HEX_D_WARM_GRAY = "#C8C4B8"
# Semantic aliases (for backward compatibility)
COLOR_PRIMARY = COLOR_D_BROWN # Primary text color
COLOR_ACCENT = COLOR_D_OLIVE # Accent (sparingly)
COLOR_TEXT = COLOR_D_BROWN # Body text
COLOR_BG = COLOR_D_BEIGE # Cover/section background
COLOR_SECONDARY = COLOR_D_GRAY # Secondary text
HEX_PRIMARY = HEX_D_BROWN
HEX_ACCENT = HEX_D_OLIVE
HEX_TEXT = HEX_D_BROWN
HEX_BG = HEX_D_BEIGE
HEX_SECONDARY = HEX_D_GRAY
# ── Typography — 2025 Design System ─────────────────────────────
FONT_KR = "Apple SD Gothic Neo"
FONT_EN = "DM Sans"
FONT_FALLBACK_KR = "Apple SD Gothic Neo"
FONT_FALLBACK_EN = "DM Sans"
# Type Scale
TYPE_SCALE = {
"display_title": {"size_pt": (54, 72), "weight": "Bold", "color": "D_BROWN"},
"slide_title": {"size_pt": (28, 36), "weight": "Bold", "color": "D_BROWN"},
"subtitle": {"size_pt": (14, 16), "weight": "Regular", "color": "D_GRAY"},
"body": {"size_pt": (11, 14), "weight": "Regular", "color": "D_BROWN"},
"footnote": {"size_pt": (8, 10), "weight": "Regular", "color": "D_GRAY"},
"header_bar": {"size_pt": (10, 10), "weight": "Regular", "color": "WARM_GRAY"},
}
# ── Layout Motifs — 2025 Design System ──────────────────────────
LAYOUT = {
"vertical_line_accent": {"color": "WARM_GRAY", "note": "Thin vertical line on left of section dividers"},
"three_dot_motif": {"symbol": "• • •", "position": "upper-right corner of cover/featured slides"},
"footer_tagline": "Analysis, Treatment & Growth",
"min_margin": "0.5 inches",
"border_weight": "0.5pt",
}
# ── Service Architecture ────────────────────────────────────────
SERVICE_PHASES = {
"Analysis": {"kr": "진단", "modules": ["A1", "A2", "A3", "A4", "A5", "A6"]},
"Treatment": {"kr": "처방", "modules": ["T1", "T2", "T3", "T4", "T5", "T6", "T7"]},
"Growth": {"kr": "성장", "modules": ["G1", "G2", "G3", "G4"]},
}
SERVICE_MODULES = {
"A1": "비즈니스·브랜드 진단",
"A2": "고객·소비자 분석",
"A3": "데이터 분석 — 웹·앱",
"A4": "디지털 마케팅 진단",
"A5": "퍼포먼스 마케팅 진단",
"A6": "운영·관리 진단",
"T1": "브랜드 스토리텔링 & 가이드",
"T2": "고객 접점 경험 최적화",
"T3": "디지털 자산 통합관리",
"T4": "콘텐츠 마케팅",
"T5": "광고·전환 최적화",
"T6": "Brand Visibility Treatment",
"T7": "운영 시스템·자동화",
"G1": "퍼포먼스 마케팅",
"G2": "콘텐츠 마케팅 대행",
"G3": "모니터링·이슈관리",
"G4": "연간 계약·운영",
}
SERVICE_CATEGORIES = {
"DI": "Data Intelligence",
"MD": "Measurement Design",
"MPO": "Marketing Performance Optimization",
"BVT": "Brand Visibility Treatment",
}
# ── Client Codes ────────────────────────────────────────────────
CLIENT_CODES = {
"JHR": "조선호텔앤리조트",
"JAM": "제이미성형외과",
"SLA": "신라호텔",
"SHR": "SHR",
"OurDigital": "OurDigital",
}
# ── Prohibited Expressions ──────────────────────────────────────
PROHIBITED_WORDS = [
"획기적", "혁신적", "놀라운", "독보적", "최고의",
"반드시", "확실히", "무조건", "100%", "보장",
"대행사", "에이전시", "바이럴",
]

View File

@@ -0,0 +1,91 @@
"""Document generation utilities for D.intelligence branded outputs."""
from __future__ import annotations
import datetime
from pathlib import Path
from docx import Document
from docx.shared import Inches, Pt, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH
from dintel.brand import (
BRAND_NAME,
COLOR_PRIMARY,
COLOR_SECONDARY,
COLOR_TEXT,
FONT_FALLBACK_EN,
FONT_FALLBACK_KR,
TAGLINE,
)
def create_branded_doc(
title: str,
subtitle: str = "",
author: str = "D.intelligence",
) -> Document:
"""Create a new DOCX document with D.intelligence branding."""
doc = Document()
# Core properties
doc.core_properties.author = author
doc.core_properties.title = title
doc.core_properties.created = datetime.datetime.now()
# Default style
style = doc.styles["Normal"]
font = style.font
font.name = FONT_FALLBACK_EN
font.size = Pt(10)
font.color.rgb = RGBColor(*COLOR_TEXT)
# Title
heading = doc.add_heading(title, level=0)
for run in heading.runs:
run.font.color.rgb = RGBColor(*COLOR_PRIMARY)
if subtitle:
p = doc.add_paragraph(subtitle)
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
for run in p.runs:
run.font.color.rgb = RGBColor(*COLOR_SECONDARY)
run.font.size = Pt(12)
# Tagline footer
p = doc.add_paragraph(f"{BRAND_NAME}{TAGLINE}")
p.alignment = WD_ALIGN_PARAGRAPH.CENTER
for run in p.runs:
run.font.size = Pt(8)
run.font.color.rgb = RGBColor(*COLOR_SECONDARY)
doc.add_paragraph("") # spacer
return doc
def add_section_heading(doc: Document, text: str, level: int = 1) -> None:
"""Add a branded section heading."""
heading = doc.add_heading(text, level=level)
for run in heading.runs:
run.font.color.rgb = RGBColor(*COLOR_PRIMARY)
def add_bilingual_heading(
doc: Document, en_text: str, kr_text: str, level: int = 2
) -> None:
"""Add a bilingual heading (English + Korean subtitle)."""
heading = doc.add_heading(en_text, level=level)
for run in heading.runs:
run.font.color.rgb = RGBColor(*COLOR_PRIMARY)
p = doc.add_paragraph(kr_text)
for run in p.runs:
run.font.color.rgb = RGBColor(*COLOR_SECONDARY)
run.font.size = Pt(10)
def save_doc(doc: Document, output_path: str | Path) -> Path:
"""Save document and return the path."""
output_path = Path(output_path)
output_path.parent.mkdir(parents=True, exist_ok=True)
doc.save(str(output_path))
return output_path

View File

@@ -0,0 +1,71 @@
"""Excel utilities for D.intelligence branded spreadsheets."""
from __future__ import annotations
from pathlib import Path
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from dintel.brand import (
BRAND_NAME,
HEX_PRIMARY,
HEX_SECONDARY,
HEX_ACCENT,
HEX_TEXT,
)
# ── Style Constants ─────────────────────────────────────────────
HEADER_FILL = PatternFill(start_color=HEX_PRIMARY.lstrip("#"), end_color=HEX_PRIMARY.lstrip("#"), fill_type="solid")
HEADER_FONT = Font(name="Arial", size=10, bold=True, color="FFFFFF")
SUBHEADER_FILL = PatternFill(start_color=HEX_SECONDARY.lstrip("#"), end_color=HEX_SECONDARY.lstrip("#"), fill_type="solid")
SUBHEADER_FONT = Font(name="Arial", size=10, bold=True, color="FFFFFF")
ACCENT_FONT = Font(name="Arial", size=10, bold=True, color=HEX_ACCENT.lstrip("#"))
BODY_FONT = Font(name="Arial", size=10, color=HEX_TEXT.lstrip("#"))
THIN_BORDER = Border(
left=Side(style="thin"),
right=Side(style="thin"),
top=Side(style="thin"),
bottom=Side(style="thin"),
)
CENTER_ALIGN = Alignment(horizontal="center", vertical="center", wrap_text=True)
LEFT_ALIGN = Alignment(horizontal="left", vertical="center", wrap_text=True)
RIGHT_ALIGN = Alignment(horizontal="right", vertical="center")
def create_branded_workbook(title: str = "D.intelligence") -> Workbook:
"""Create an openpyxl Workbook with brand defaults."""
wb = Workbook()
wb.properties.title = title
wb.properties.creator = BRAND_NAME
return wb
def style_header_row(ws, row: int = 1, col_start: int = 1, col_end: int = 10) -> None:
"""Apply header styling to a row."""
for col in range(col_start, col_end + 1):
cell = ws.cell(row=row, column=col)
cell.fill = HEADER_FILL
cell.font = HEADER_FONT
cell.alignment = CENTER_ALIGN
cell.border = THIN_BORDER
def style_body_cell(cell, align: str = "left") -> None:
"""Apply body styling to a cell."""
cell.font = BODY_FONT
cell.border = THIN_BORDER
if align == "center":
cell.alignment = CENTER_ALIGN
elif align == "right":
cell.alignment = RIGHT_ALIGN
else:
cell.alignment = LEFT_ALIGN
def save_workbook(wb: Workbook, output_path: str | Path) -> Path:
"""Save workbook and return the path."""
output_path = Path(output_path)
output_path.parent.mkdir(parents=True, exist_ok=True)
wb.save(str(output_path))
return output_path

View File

@@ -0,0 +1,50 @@
"""Notion database IDs and helper constants for D.intelligence."""
from __future__ import annotations
# ── Database IDs ────────────────────────────────────────────────
DB_TASKS_DASHBOARD = "2c0581e58a1e816d9948c3f3591c372c"
DB_CLIENT_REFERENCE = "f0508d67b26042c1a0c7f2283f87eab4"
DB_JHR = "529587363fe04a8da588337e8eb1aa0b"
DB_SLA = "1e0581e58a1e80e28802d19bf8d468c7"
DB_JAM = "4d76fb5bb4134e81883c21a8c4aa80c1"
# ── Collection IDs ──────────────────────────────────────────────
COLLECTION_TASKS = "2c0581e5-8a1e-8178-aa9a-000b44537e0a"
COLLECTION_CLIENT_REF = "b8ddab91-d3a7-4b84-86d7-35e46711598c"
COLLECTION_JHR = "931a663c-4b76-4903-858c-f801b973a1aa"
COLLECTION_SLA = "1e0581e5-8a1e-8070-96b0-000bd2aacc88"
COLLECTION_JAM = "9f183ecb-9364-410e-91a7-a41a20455272"
# ── Related Collections ─────────────────────────────────────────
COLLECTION_CLIENT_DB = "ac212daf-4eda-4a99-8c97-89699c846331"
COLLECTION_DAILY_WORK = "2ef581e5-8a1e-80b9-81cb-000b121910d3"
COLLECTION_GDRIVE_FILES = "2d0581e5-8a1e-8096-8577-000b5152a9f2"
# ── Task Status Options ─────────────────────────────────────────
TASK_STATUSES = [
"Not Started", "Planning", "In Progress", "In Review",
"Waiting", "Done", "On Hold", "Archived",
]
# ── Priority Codes ──────────────────────────────────────────────
PRIORITY_CODES = [
"A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3",
]
# ── Client Codes for Notion ─────────────────────────────────────
NOTION_CLIENT_CODES = ["JHR", "JAM", "SLA", "SHR", "OurDigital"]
# ── Service Lines ───────────────────────────────────────────────
SERVICE_LINES = [
"SEO", "Local SEO", "Digital Ads", "Content Marketing",
"Growth Package", "AI Literacy", "Data Literacy",
"Data Analytics", "GTM/Tagging", "Web Dev",
]
# ── DB Mapping (client code → database ID) ──────────────────────
CLIENT_DB_MAP = {
"JHR": DB_JHR,
"JAM": DB_JAM,
"SLA": DB_SLA,
}