#!/usr/bin/env python3 """ D.intelligence Company Credential Generator Brand-compliant DOCX following the D.intelligence Korean Writing Style Guide. Tone: ~합니다 존칭 서술체 (service/company intro style) Agent #71 (dintel-brand-editor) v1.2.0 — D.intelligence Agent Corps Canon compliance: v1.3 (2026-05-18) Shared brand constants: _dintel-shared/src/dintel/brand.py Authoritative source for credential content: knowledge-base/reference/company/D.intelligence-Company Credential 2026.pptx This generator produces a DOCX skeleton — review against the official PPTX before delivery. """ from docx import Document from docx.shared import Inches, Pt, Cm, RGBColor from docx.enum.text import WD_ALIGN_PARAGRAPH from docx.enum.table import WD_TABLE_ALIGNMENT from docx.oxml.ns import qn import os # ── Brand Colors ────────────────────────────────────── # See also: _dintel-shared/src/dintel/brand.py for canonical values BRAND_DARK = RGBColor(0x1A, 0x1A, 0x2E) # Dark navy BRAND_PRIMARY = RGBColor(0x2D, 0x2D, 0x44) # Primary text BRAND_ACCENT = RGBColor(0xC8, 0xD6, 0x2C) # Lime/yellow accent BRAND_GRAY = RGBColor(0x66, 0x66, 0x66) # Body text gray BRAND_LIGHT_BG = RGBColor(0xF5, 0xF5, 0xF0) # Light background BRAND_WHITE = RGBColor(0xFF, 0xFF, 0xFF) OUTPUT_PATH = os.path.expanduser("~/Documents/D.intelligence_Company_Credential.docx") def set_cell_shading(cell, color_hex): """Set cell background color.""" shading = cell._element.get_or_add_tcPr() shading_elem = shading.makeelement(qn('w:shd'), { qn('w:fill'): color_hex, qn('w:val'): 'clear', }) shading.append(shading_elem) def add_section_label(doc, label_text): """Add ALL CAPS section label (brand rule: section labels in ALL CAPS).""" p = doc.add_paragraph() p.space_before = Pt(24) p.space_after = Pt(4) run = p.add_run(label_text.upper()) run.font.size = Pt(9) run.font.color.rgb = BRAND_ACCENT run.font.bold = True run.font.name = "Arial" def add_heading_bilingual(doc, en_title, kr_subtitle=None): """Add bilingual heading: English Title Case + Korean subtitle (brand rule: bilingual layering).""" h = doc.add_heading(level=2) h.space_before = Pt(4) h.space_after = Pt(8) run = h.add_run(en_title) run.font.size = Pt(16) run.font.color.rgb = BRAND_DARK run.font.bold = True run.font.name = "Arial" if kr_subtitle: p = doc.add_paragraph() p.space_before = Pt(0) p.space_after = Pt(12) run = p.add_run(kr_subtitle) run.font.size = Pt(10) run.font.color.rgb = BRAND_GRAY run.font.name = "Malgun Gothic" def add_body(doc, text, bold_phrases=None): """Add body paragraph in 존칭 서술체 with brand formatting.""" p = doc.add_paragraph() p.space_after = Pt(10) p.paragraph_format.line_spacing = Pt(20) if bold_phrases: remaining = text for phrase in bold_phrases: if phrase in remaining: before, _, after = remaining.partition(phrase) if before: run = p.add_run(before) run.font.size = Pt(10) run.font.color.rgb = BRAND_PRIMARY run.font.name = "Malgun Gothic" run = p.add_run(phrase) run.font.size = Pt(10) run.font.color.rgb = BRAND_PRIMARY run.font.bold = True run.font.name = "Malgun Gothic" remaining = after if remaining: run = p.add_run(remaining) run.font.size = Pt(10) run.font.color.rgb = BRAND_PRIMARY run.font.name = "Malgun Gothic" else: run = p.add_run(text) run.font.size = Pt(10) run.font.color.rgb = BRAND_PRIMARY run.font.name = "Malgun Gothic" def add_service_table(doc, services): """Add service table with brand styling.""" table = doc.add_table(rows=1, cols=2) table.alignment = WD_TABLE_ALIGNMENT.CENTER # Header hdr = table.rows[0].cells for i, text in enumerate(["Service", "Description"]): hdr[i].text = text for paragraph in hdr[i].paragraphs: for run in paragraph.runs: run.font.size = Pt(9) run.font.bold = True run.font.color.rgb = BRAND_WHITE run.font.name = "Arial" set_cell_shading(hdr[i], "1A1A2E") # Rows for en_name, kr_desc in services: row = table.add_row().cells # English service name p0 = row[0].paragraphs[0] run0 = p0.add_run(en_name) run0.font.size = Pt(9) run0.font.bold = True run0.font.color.rgb = BRAND_DARK run0.font.name = "Arial" # Korean description p1 = row[1].paragraphs[0] run1 = p1.add_run(kr_desc) run1.font.size = Pt(9) run1.font.color.rgb = BRAND_GRAY run1.font.name = "Malgun Gothic" doc.add_paragraph() # spacer def build_credential(): doc = Document() # ── Page setup ── section = doc.sections[0] section.page_width = Cm(21) section.page_height = Cm(29.7) section.top_margin = Cm(2.5) section.bottom_margin = Cm(2.5) section.left_margin = Cm(2.5) section.right_margin = Cm(2.5) # ── Default font ── style = doc.styles["Normal"] font = style.font font.name = "Malgun Gothic" font.size = Pt(10) font.color.rgb = BRAND_PRIMARY # ════════════════════════════════════════════════════ # COVER PAGE # ════════════════════════════════════════════════════ for _ in range(6): doc.add_paragraph() # Brand name title = doc.add_paragraph() title.alignment = WD_ALIGN_PARAGRAPH.CENTER run = title.add_run("D.intelligence") run.font.size = Pt(36) run.font.color.rgb = BRAND_DARK run.font.bold = True run.font.name = "Arial" # Slogan slogan = doc.add_paragraph() slogan.alignment = WD_ALIGN_PARAGRAPH.CENTER slogan.space_before = Pt(8) run = slogan.add_run("Think Forward") run.font.size = Pt(14) run.font.color.rgb = BRAND_ACCENT run.font.italic = True run.font.name = "Arial" # Tagline tagline = doc.add_paragraph() tagline.alignment = WD_ALIGN_PARAGRAPH.CENTER tagline.space_before = Pt(24) run = tagline.add_run("Analysis, Treatment & Growth") run.font.size = Pt(11) run.font.color.rgb = BRAND_GRAY run.font.name = "Arial" # Subtitle subtitle = doc.add_paragraph() subtitle.alignment = WD_ALIGN_PARAGRAPH.CENTER subtitle.space_before = Pt(8) run = subtitle.add_run("Company Credential") run.font.size = Pt(12) run.font.color.rgb = BRAND_GRAY run.font.name = "Arial" # Date date_p = doc.add_paragraph() date_p.alignment = WD_ALIGN_PARAGRAPH.CENTER date_p.space_before = Pt(36) run = date_p.add_run("2026") run.font.size = Pt(10) run.font.color.rgb = BRAND_GRAY run.font.name = "Arial" # ── Page break ── doc.add_page_break() # ════════════════════════════════════════════════════ # ABOUT D.INTELLIGENCE # ════════════════════════════════════════════════════ add_section_label(doc, "ABOUT D.INTELLIGENCE") add_heading_bilingual(doc, "Brand Overview", "브랜드 소개") add_body( doc, "D.intelligence는 디지털 마케팅과 데이터 분석의 경계를 허물고, " "고객의 지속가능한 성장을 이끄는 Marketing Intelligence 파트너입니다.", bold_phrases=["Marketing Intelligence 파트너"] ) add_body( doc, "데이터 인텔리전스 기반의 마케팅 전략 진단 및 컨설팅 서비스를 제공하며, " "\"SMART Marketing Intelligence\"라는 경험 차원(Experiential dimension) 아래 " "데이터 분석, 진단, 처방, 성장 운영 서비스를 일관되게 제공합니다. " "이를 통해 과학적 엄정성과 측정 가능한 성과를 핵심 브랜드 가치로 전달합니다.", bold_phrases=["SMART Marketing Intelligence"] ) # Mission & Vision add_section_label(doc, "MISSION & VISION") add_heading_bilingual(doc, "Mission") add_body( doc, "데이터 기반 의사결정으로 기업의 지속가능한 성장을 실현하는 " "Marketing Intelligence 파트너입니다." ) add_heading_bilingual(doc, "Vision") add_body( doc, "마케팅 과학과 데이터 리터러시의 전도사로서, " "대기업 수준의 데이터·AI 역량을 중견기업과 스타트업에 " "맞춤 실행력으로 전달합니다." ) # Core Values add_section_label(doc, "CORE VALUES") kw_p = doc.add_paragraph() kw_p.alignment = WD_ALIGN_PARAGRAPH.CENTER kw_p.space_before = Pt(16) kw_p.space_after = Pt(16) for i, kw in enumerate(["Science", "Practice", "Outcome", "Insights"]): run = kw_p.add_run(kw) run.font.size = Pt(18) run.font.color.rgb = BRAND_DARK run.font.bold = True run.font.name = "Arial" if i < 3: sep = kw_p.add_run(" · ") sep.font.size = Pt(18) sep.font.color.rgb = BRAND_ACCENT sep.font.name = "Arial" doc.add_page_break() # ════════════════════════════════════════════════════ # WHAT WE DO — Services # ════════════════════════════════════════════════════ add_section_label(doc, "WHAT WE DO") add_heading_bilingual( doc, "SMART Marketing Intelligence", "Analysis · Treatment · Growth — 3-Phase / 4 Category / 17 Modules" ) add_body( doc, "D.intelligence는 데이터 기반의 진단-처방-성장 프레임워크를 통해 " "Data Intelligence, Measurement Design, Marketing Performance Optimization, " "Brand Visibility Treatment를 일관되게 제공하며, " "이를 통해 측정 가능한 성과를 함께 설계하는 Marketing Intelligence 파트너입니다.", bold_phrases=["진단-처방-성장 프레임워크", "Marketing Intelligence 파트너"] ) add_service_table(doc, [ ( "Analysis (진단) — A1~A6", "비즈니스·브랜드, 고객·소비자, 데이터 분석, 디지털 마케팅, 퍼포먼스 마케팅, " "운영·관리 영역의 6개 진단 모듈" ), ( "Treatment (처방) — T1~T7", "브랜드 스토리텔링, 고객 접점, 디지털 자산 통합, 콘텐츠 마케팅, 광고·전환 최적화, " "Brand Visibility Treatment ⭐ Signature, 운영 시스템·자동화의 7개 처방 모듈" ), ( "Growth (성장) — G1~G4", "퍼포먼스 마케팅, 콘텐츠 마케팅 대행, 모니터링·이슈관리, 연간 계약·운영의 " "4개 성장 모듈 (프로젝트 + 운영 계약 하이브리드)" ), ( "1Day Clinic (부가 채널)", "Analysis Phase 경량 진단 — 6-8시간 1일 진단으로 " "Pain Point를 빠르게 식별하는 게이트웨이 서비스" ), ( "Magazine D. (부가 채널)", "데이터·마케팅·인사이트 매거진 — 진단 사례, 프레임워크 해설, " "인사이트 시사평을 운영하는 브랜드 미디어" ), ( "Newsletter (부가 채널)", "정기 뉴스레터 — 핵심 수치와 실무 시사점을 큐레이션하여 " "리드 너처링과 콘텐츠 유통을 담당" ), ]) doc.add_page_break() # ════════════════════════════════════════════════════ # OUR ROLE — Positioning # ════════════════════════════════════════════════════ add_section_label(doc, "OUR ROLE") add_heading_bilingual(doc, "Brand Character", "성과중심의 데이터 기반 마케팅 과학자") roles = [ ("Outcome-focused Marketing Scientist", "엄밀한 가설 검증, 측정 가능한 KPI, 재현 가능한 방법론으로 마케팅 성과를 설계하는 분석가형 전문가로서, 추측과 일반론 대신 데이터·실험·구조로 의사결정을 지원합니다."), ("Data-driven Decision Partner", "마케팅·데이터·IT 부서 간 언어 장벽을 해소하여, 각 부서의 요구를 데이터 관점에서 해석하고 비즈니스 의사결정에 직접 연결합니다."), ("Marketing Intelligence Architect", "Analysis-Treatment-Growth 3-Phase 프레임워크를 통해 진단으로 끝나지 않고 실행과 성장까지 연결하는 통합 운영 파트너 역할을 수행합니다."), ] for en_title, kr_desc in roles: h = doc.add_heading(level=3) h.space_before = Pt(16) h.space_after = Pt(4) run = h.add_run(en_title) run.font.size = Pt(12) run.font.color.rgb = BRAND_DARK run.font.bold = True run.font.name = "Arial" add_body(doc, kr_desc) doc.add_page_break() # ════════════════════════════════════════════════════ # DATA INTELLIGENCE WORKSHOP # ════════════════════════════════════════════════════ add_section_label(doc, "DATA INTELLIGENCE WORKSHOP") add_heading_bilingual(doc, "Training & Education", "교육 프로그램") add_body( doc, "D.intelligence는 클라이언트 조직 내 데이터 활용 역량을 강화하는 워크숍 프로그램을 " "T4 모듈(콘텐츠 마케팅·역량 트레이닝)의 일부로 운영합니다. " "외부 상품화된 정규 코스(OurDigital Practice)와 구분되며, 본 워크숍은 " "프로젝트 컨설팅과 연계된 맞춤형 형태로 제공됩니다." ) programs = [ ("Measurement Design Workshop", "GA4·GTM·BigQuery 환경에서 KPI 설계와 이벤트 구조화를 실습하는 워크숍으로, T3 디지털 자산 통합관리 모듈과 연계 운영됩니다."), ("Data Literacy Workshop", "조직 구성원의 데이터 해석·의사결정 역량을 강화하는 워크숍으로, 진단 결과를 클라이언트 팀이 자체적으로 활용할 수 있도록 지원합니다."), ] for name, desc in programs: h = doc.add_heading(level=3) h.space_before = Pt(12) h.space_after = Pt(4) run = h.add_run(name) run.font.size = Pt(11) run.font.color.rgb = BRAND_DARK run.font.bold = True run.font.name = "Malgun Gothic" add_body(doc, desc) # Approach add_section_label(doc, "3 STEP APPROACH") approach_p = doc.add_paragraph() approach_p.space_before = Pt(8) for i, (step_en, step_kr) in enumerate([ ("Analysis", "현황 진단 및 데이터 분석"), ("Treatment", "맞춤형 솔루션 설계 및 적용"), ("Growth", "지속적 성과 관리 및 성장 지원"), ], 1): run = approach_p.add_run(f" {i}. {step_en} ") run.font.size = Pt(10) run.font.bold = True run.font.color.rgb = BRAND_DARK run.font.name = "Arial" run = approach_p.add_run(f"— {step_kr}") run.font.size = Pt(10) run.font.color.rgb = BRAND_GRAY run.font.name = "Malgun Gothic" if i < 3: approach_p.add_run("\n") doc.add_page_break() # ════════════════════════════════════════════════════ # WHY D.INTELLIGENCE — Differentiators # ════════════════════════════════════════════════════ add_section_label(doc, "WHY D.INTELLIGENCE") add_heading_bilingual(doc, "Core Differentiators", "핵심 차별화 요소") differentiators = [ ("데이터 기반 의사 결정 체계 수립", "단편적인 보고서 제공을 넘어, 고객사의 비즈니스 목표에 부합하는 " "핵심 성과 지표(KPI) 설정부터 성과 관리 체계 디자인까지, " "데이터 기반 의사 결정의 전 과정을 체계적으로 지원합니다."), ("마케팅-데이터-IT 간 통합 커뮤니케이션", "마케팅 부서의 전략적 요구와 데이터 부서의 기술적 역량, " "IT 부서의 인프라 환경을 유기적으로 연결함으로써, " "조직 내 데이터 활용의 효율성을 극대화합니다."), ("실무 중심의 교육 및 역량 강화", "이론에 그치지 않는 실무 중심의 교육 커리큘럼을 통해, " "마케팅 실무자가 데이터를 직접 분석하고 활용할 수 있는 역량을 구축합니다."), ("엔드투엔드(End-to-End) 서비스 제공", "진단, 컨설팅, 대시보드 구축, 데이터 스토리텔링, 교육에 이르기까지, " "마케팅 인텔리전스의 전 영역을 아우르는 통합 서비스를 제공합니다."), ] for title, desc in differentiators: h = doc.add_heading(level=3) h.space_before = Pt(12) h.space_after = Pt(4) run = h.add_run(title) run.font.size = Pt(11) run.font.color.rgb = BRAND_DARK run.font.bold = True run.font.name = "Malgun Gothic" add_body(doc, desc) doc.add_page_break() # ════════════════════════════════════════════════════ # CONTACT — Inquiry # ════════════════════════════════════════════════════ add_section_label(doc, "CONTACT") add_heading_bilingual(doc, "상담문의", "Get in Touch") add_body( doc, "D.intelligence의 서비스에 관심을 가져주셔서 감사합니다. " "디지털 마케팅 성과 진단, 데이터 애널리틱스 컨설팅, 대시보드 구축, " "데이터 리터러시 교육 등에 관한 문의 사항이나 기대 사항을 남겨주시면, " "최선을 다해 구체적이고 명료한 검토의견을 드리도록 하겠습니다." ) # Contact info — v1.3 정합 (canon/fact-sheet.md) doc.add_paragraph() contact_items = [ ("Company", "주식회사 디인텔리전스 / D.intelligence Co., Ltd."), ("CEO", "임명재 (Andrew Yim), 대표이사"), ("Biz Reg No.", "458-88-01899"), ("Address", "경기도 성남시 수정구 창업로 43 판교글로벌비즈센터 업무동 1층 36호 (13449)"), ("Website", "dintelligence.co.kr"), ("Email", "info@dintelligence.co.kr"), ] for label, value in contact_items: p = doc.add_paragraph() p.space_after = Pt(4) run = p.add_run(f"{label}: ") run.font.size = Pt(10) run.font.bold = True run.font.color.rgb = BRAND_DARK run.font.name = "Arial" run = p.add_run(value) run.font.size = Pt(10) run.font.color.rgb = BRAND_GRAY run.font.name = "Arial" # Footer doc.add_paragraph() doc.add_paragraph() footer_p = doc.add_paragraph() footer_p.alignment = WD_ALIGN_PARAGRAPH.CENTER run = footer_p.add_run("D.intelligence") run.font.size = Pt(9) run.font.color.rgb = BRAND_GRAY run.font.name = "Arial" copyright_p = doc.add_paragraph() copyright_p.alignment = WD_ALIGN_PARAGRAPH.CENTER run = copyright_p.add_run("Copyright 2026 D.intelligence. All rights reserved.") run.font.size = Pt(8) run.font.color.rgb = BRAND_GRAY run.font.name = "Arial" # ── Save ── doc.save(OUTPUT_PATH) print(f"Credential saved: {OUTPUT_PATH}") if __name__ == "__main__": build_credential()