CCM

Last updated: 2026-03-01

System Map

10 diagrams showing how CCM fits together: architecture, dependencies, data flows, state machines, timeline, and risk.

1. System Context

CCM in the Ad Cloud Ecosystem ================================================ Ad Cloud Portal | |-- navigation, session, permission context | v +-------------------------------+ | CCM (Client Creative | | Management) | | | | Campaigns | Groups | TL | CR | +-------------------------------+ | | | v v v CPM API TGM API COD package tracker onboarding create create link | | v v GCR MMP TS Tool survey ext. campaign ID

2. Module Hierarchy

10 Modules grouped by Stage ================================================ Foundation Content M01 Navigation M03 Creative Upload M02 Campaign Pkg M04 Creative Group Tracking Lifecycle M05 Tracking Link M07 Campaign Lifecycle M06 Link Assignment M08 IsSynced Control Gate Cross-Cutting M09 Permission M10 Notification

3. Stage Dependency Flow

S1.1 Navigation No blocker. Start here. | S1.2 CPM Package No blocker. | | CP-1: Can enter CCM, select App ID, see Campaign list | S2.1 Creative Upload No blocker. | S2.2 Creative Group Needs S2.1 | | CP-1: Upload works, groups work, creatives organized | S3.1 Tracking Link Blocked by Decision-01 | S3.2 Link Assignment Needs S3.1 + S2.2 + S1.2 | | Links created, assigned to campaign/group | S4.1 Campaign Lifecycle Needs Decision-07 | S4.2 IsSynced Control Blocked by Decision-02 | | CP-2: Full lifecycle works, lock/unlock correct | S5.1 Permission Needs all of Stage 4 | External user gated correctly

4. Creative Upload Data Flow

Upload to Campaign Assignment ================================================ Client uploads files | v Ingestion -- validate format, size, type | v Auto-Categorize -- Banner / Video / Native / Native Video | v Sub-Component Entry -- CTA text, title, description | v Combinatorial Output -- generate all variant combinations | v Creative stored in Creatives tab | v Add to Creative Group -- organize by campaign intent | v Assign Tracking Link -- Entry B (Campaign) or Entry C (Group) | v Map to Campaign -- group linked to campaign package | v IsSynced check -- if True, locked; if False, editable

5. Campaign Status Transitions

Campaign Lifecycle State Machine ================================================ Incomplete ----[all fields filled]----> Ready ^ | | [campaign activated] | | | v | In Progress | | | [campaign ended] | | | v | Completed | | +------[any edit triggers]---------> Updated | [re-sync to backend] | v In Progress

6. IsSynced State Machine

IsSynced Per-Association Control ================================================ IsSynced = False | | Client can: | - Edit creatives in group | - Add/remove creatives | - Change tracking links | - Modify campaign settings | |--[AM syncs to backend]--> IsSynced = True | | Client CANNOT: | - Edit anything | - Add/remove creatives | - Change tracking links | - Modify campaign settings | | Must contact AM to unlock | |--[AM unlocks]--> IsSynced = False

7. Tracking Link Lifecycle

Tracking Link Creation & Assignment ================================================ Entry A -- standalone from TL tab | v TGM Create API -- send fields, get link URL [Decision-01] | v Link Created (Active) | +--Entry B -- assign from Campaign detail | +--Entry C -- assign from Creative Group detail | v Assigned -- linked to campaign + group | +--[URL edit allowed?] | Yes: status = Active, not synced | No: IsSynced = True, locked | v Auto-apply -- CPM auto-links tracking to campaign

8. Integration Contract Map

6 External System Connections ================================================ Ad Cloud Portal | IC-04: nav, session, permissions | +----------+----------+ | | CPM API CCM COD IC-02: pkg (this system) IC-03: onboard | | +----------+----------+ | TGM API IC-01: tracker | | GCR MMP TS Tool IC-05: survey IC-06: ext ID

9. Q1 Development Timeline

March 2026 -- Spec Delivery Schedule ==================================================================== Week 1 2 3 4 Date Mar 3-7 Mar 10-14 Mar 17-21 Mar 24-28 -------------------------------------------------------------------- S1.1 [========] S1.2 [========] S2.1 [========] S2.2 [====] S3.1 [====----] * Decision-01 S3.2 [========] S4.1 [========] * Decision-07 S4.2 [========] * Decision-02 S5.1 [========] -------------------------------------------------------------------- CP-1 ^ CP-2 ^ -------------------------------------------------------------------- [====] = no blocker [----] = Decision-dependent * = blocker

10. Risk & Critical Path

Critical Path & Risk Assessment ================================================ CRITICAL PATH (longest dependency chain): S1.1 -> S1.2 -> S2.1 -> S2.2 -> S3.1 -> S3.2 -> S4.1 -> S4.2 -> S5.1 ^ ^ ^ Decision-01 Decision-07 Decision-02 RISK HEAT MAP: HIGH Decision-01 not resolved by Week 3 -> S3.1 cannot start, cascades to S3.2, S4.x, S5.1 -> Mitigation: Lead escalates by Mar 10 HIGH S2.1 spec takes longer than 1 week -> Largest module (12 ACs), Spec Matrix is complex -> Mitigation: Start reading PRD during Week 1 MED Decision-02/07 not resolved by Week 4 -> S4.1/S4.2 can be spec'd partially (mark TBD) -> Mitigation: Spec everything except blocked fields LOW S5.1 (Permission) PRD Part 2 not ready -> Document known requirements, list unknowns -> Not on critical path for internal launch

IsSynced: The Critical Flag

IsSynced controls whether a client can edit anything. It cuts across all modules. Its trigger timing (Decision-02) must be resolved before Stage 4.

IsSyncedCampaign StatusClient Can Do
FalseIncomplete / ReadyFull edit
FalseUpdated / In ProgressEdit allowed (not yet synced)
TrueUpdated / In Progress / CompletedLocked -- must contact AM

Master Plan

10 Modules, 5 Stages, 71 Acceptance Criteria, 6 Integration Contracts, 14 Open Decisions. This is the complete system breakdown.

10
Modules
5
Stages
71
ACs
6
Integrations
14
Decisions

Core Functions to Stages

3 Core Functions Stages PRD Source ------------------------------------------------------------------- 1. Upload Creative S2.1 Creative Upload Part 3 > Creative S2.2 Creative Group CRUD Part 3 > Creative Group 2. Set Default Tracker S3.1 TGM API + Link Create Part 3 > Tracking Links S3.2 Link Assignment Part 3 > Tracking Links + Creative Group + Campaigns 3. Map to Campaign S4.1 Campaign Lifecycle Part 3 > Campaigns S4.2 IsSynced Control All modules (cross-cutting) + Foundation (required before all Core Functions) S1.1 Navigation + App ID Part 3 > Section 1-2 S1.2 CPM Package Part 1 + Gate (required before external users go live) S5.1 Permission Control Part 2 (NOT READY)

10 Module TDD Cards

Click a module to expand its acceptance criteria.

M01 Navigation & App Context S1.1 5 ACs

PRD Source: Part 3 > Section 1-2

  • AC-01: CCM menu item appears in Ad Cloud Portal sidebar when user has access
  • AC-02: App ID dropdown populated from user's permitted applications
  • AC-03: 4 tabs visible after App ID selection: Campaigns, Creative Groups, Tracking Links, Creatives
  • AC-04: Selecting a new App ID reloads all module data for that context
  • AC-05: Tab navigation state persists during switching (no data loss)
M02 Campaign Package (CPM) S1.2 6 ACs

PRD Source: Part 1 > Campaign Package Management

  • AC-06: Package creation form includes Entity, App ID, Ad Solution, Region fields
  • AC-07: "Enable CCM" toggle present in package creation flow
  • AC-08: External Campaign Name field correctly mapped and stored
  • AC-09: Package links to Entity with all required metadata
  • AC-10: Created package visible in CCM campaign table after creation
  • AC-11: Multiple packages per App ID supported without conflict
M03 Creative Upload & Categorization S2.1 12 ACs

PRD Source: Part 3 > Creative Module (entire section + Spec Matrix). Largest module.

  • AC-12: File upload supports drag-and-drop and file picker
  • AC-13: Banner format validation (dimensions, file size, file type per Spec Matrix)
  • AC-14: Video format validation (dimensions, duration, codec, file size)
  • AC-15: Native Image format validation per Spec Matrix
  • AC-16: Native Video format validation per Spec Matrix
  • AC-17: Auto-categorization assigns creative type based on file properties
  • AC-18: Sub-component entry UI for each creative type (CTA text, title, description)
  • AC-19: Combinatorial output correctly generates all variant combinations
  • AC-20: Upload progress indicator with cancel capability
  • AC-21: Invalid file rejection with clear error message and reason
  • AC-22: Creative preview renders after successful upload
  • AC-23: Bulk upload (multiple files at once) supported
M04 Creative Group Management S2.2 9 ACs

PRD Source: Part 3 > Creative Group, Sections 1-9

  • AC-24: Creative Group table displays all groups with status, count, campaign link
  • AC-25: Creative Group detail view (drill-down) shows all creatives in group
  • AC-26: Create single Creative Group with name and metadata
  • AC-27: Add Creatives to an existing Group (multi-select)
  • AC-28: Remove Creatives from Group with confirmation
  • AC-29: Delete Creative Group with dependency check
  • AC-30: "Add to Campaign" assigns group to selected campaign within App ID
  • AC-31: "Remove from Campaign" detaches group with IsSynced validation
  • AC-32: Group status definitions enforced (Incomplete, Ready, Updated, etc.)
M05 Tracking Link Management S3.1 8 ACs

PRD Source: Part 3 > Tracking Links. Blocked by Decision-01.

  • AC-33: Tracking Link table displays links with status, campaign, group assignment
  • AC-34: Status lifecycle enforced (Active, Paused, Archived transitions)
  • AC-35: Add Tracking Link via Entry Point A (standalone creation from TL tab)
  • AC-36: TGM Create API field mapping completed and validated
  • AC-37: Edit Tracking Link URL only when workflow rules permit
  • AC-38: Workflow status impact rules enforced on edit
  • AC-39: Tracker group associated with correct App ID
  • AC-40: External Campaign Name & ID fields handled correctly
M06 Link Assignment S3.2 7 ACs

PRD Source: Part 3 > Tracking Links (Sec 3 B/C) + Campaigns + Creative Group

  • AC-41: Entry Point B -- assign tracking link from Campaign detail view
  • AC-42: Entry Point C -- assign tracking link from Creative Group detail view
  • AC-43: Auto-assign default tracking link when campaign package created
  • AC-44: Group-level tracker assignment overrides campaign-level default
  • AC-45: Assignment visible and editable in Campaign detail panel
  • AC-46: Assignment visible and editable in Creative Group detail panel
  • AC-47: Batch assignment operations for multiple groups
M07 Campaign Lifecycle S4.1 8 ACs

PRD Source: Part 3 > Campaigns, Sections 1-2. Needs Decision-07.

  • AC-48: Campaign table displays all campaigns with status, creative count, tracking links
  • AC-49: Status transition: Incomplete → Ready (all required fields filled)
  • AC-50: Status transition: Ready → In Progress (campaign activated)
  • AC-51: Status transition: In Progress → Completed (campaign ended)
  • AC-52: Status transition: any → Updated (edit triggers re-validation)
  • AC-53: "Notify AM" action available at appropriate lifecycle points
  • AC-54: Setup status auto-calculated from component completeness
  • AC-55: Campaign table supports sort, pagination, status filtering
M08 IsSynced Permission Control S4.2 6 ACs

Cross-module (all IsSynced references). Blocked by Decision-02.

  • AC-56: IsSynced flag stored per creative-campaign association (not global)
  • AC-57: IsSynced=True locks all editing across Campaign, Group, Creative, TL modules
  • AC-58: IsSynced=False permits editing based on module-specific rules
  • AC-59: Cross-module permission matrix enforced consistently
  • AC-60: Mixed-selection batch ops handle synced + unsynced items correctly
  • AC-61: Locked UI indicator visible to client with "Contact AM" guidance
M09 User Permission & Access S5.1 5 ACs

PRD Source: Part 2 (NOT READY -- spec in progress)

  • AC-62: Internal user has full access to all CCM features
  • AC-63: External user access restricted by permission grant
  • AC-64: Binary permission model enforced (Internal vs External)
  • AC-65: Grant/revoke permission flow for entity-level access
  • AC-66: App ID filtering limits external user to permitted apps only
M10 Notification System cross 5 ACs

Cross-cutting concern. Depends on Decision-07.

  • AC-67: "Notify AM" trigger fires from campaign lifecycle events
  • AC-68: Notification delivered via resolved channel (email/Slack/in-app TBD)
  • AC-69: Notification payload includes campaign ID, App ID, action context
  • AC-70: AM receives actionable notification with link back to campaign
  • AC-71: Notification event logged for audit trail

6 Integration Contracts

IDSystemDirectionData ExchangedDepends On
IC-01 TGM API CCM → TGM Create tracker group, get link URL, field mapping Decision-01
IC-02 CPM API CPM → CCM Package creation, "Enable CCM" toggle, entity/app metadata --
IC-03 COD COD ↔ CCM Onboarding flag, package linkage, COD ID reference --
IC-04 Ad Cloud Portal Portal ↔ CCM Navigation injection, session/permission context, App ID list --
IC-05 GCR MMP Survey CCM → GCR Survey form embed in tracking link flow IC-01
IC-06 TS Tool TS → CCM External Campaign ID generation, tracker verification IC-01

14 Open Decisions

3 critical decisions block development stages. 11 are lower priority and can be resolved in parallel.

Critical Blockers (3): Decision-01, Decision-02, Decision-07 must be resolved before their blocked stages can begin spec work.
IDDecisionStatusImpact
Decision-01 TGM Create API Field Mapping OPEN Blocks S3.1
Decision-02 IsSynced Flag Trigger Timing OPEN Blocks S4.2
Decision-07 "Notify AM" Channel & Method OPEN Blocks S4.1
Decision-03 Creative Duplicate Detection Strategy DEFERRED Affects S2.1
Decision-04 Browser vs Server Timezone for Schedules CLOSED S2.2 -- use browser timezone
Decision-05 Batch Operations Maximum Items DEFERRED All modules
Decision-06 Cross-App Creative Duplication Rules DEFERRED S2.2 -- out of scope
Decision-08 KR Creative Types Inclusion Timeline DEFERRED S2.1 -- out of scope
Decision-09 Filter Implementation Priority DEFERRED All modules -- post-launch
Decision-10 Archived Status Visibility Rules DEFERRED S4.1 -- internal only
Decision-11 Permission Role Granularity CLOSED S5.1 -- binary model for now
Decision-12 Asset Library Import Support DEFERRED S2.1 -- upload only for now
Decision-13 COD vs CPM Package Entry Point CLOSED S1.2 -- CPM only for now
Decision-14 Sub-Component Auto-Generation Scope DEFERRED S2.1 -- manual only for now

Q1 Weekly Cadence

Weekly rhythm for Q1: spec delivery on Friday, review on Monday. Decision escalation runs parallel.

DayActivityOwner
MondayReview last week's deliverables, update Decision TrackerLead + Spec Owner
Tuesday-ThursdaySpec writing per weekly plan, flag blockers immediatelySpec Owner
ThursdayDecision escalation check -- push pending decisionsLead
FridayDeliver week's specs, update playbook statusSpec Owner

Release Checklist

5 Stages, 68 must-have items, 3 Decision Blockers. Stages are sequential -- each stage builds on the previous.

5
Stages
68
Must-Haves
3
Blockers

Stage Must-Haves

Stage 1 Foundation S1.1 + S1.2 // 12 items

S1.1 -- Navigation & App Context

  • CCM sidebar menu entry in Ad Cloud Portal
  • App ID dropdown with user's permitted apps
  • 4-tab module structure (Campaigns, Creative Groups, Tracking Links, Creatives)
  • App ID context reload on selection change
  • Tab state preservation during navigation
  • Empty state for each tab when no data exists

S1.2 -- Campaign Package (CPM)

  • Package creation with Entity, App ID, Ad Solution, Region
  • "Enable CCM" toggle in creation flow
  • External Campaign Name field mapping
  • Package-to-Entity linkage validation
  • Created package reflected in CCM campaign table
  • Multiple packages per App ID
[✓] Verification: User can log in → select App ID → see empty Campaign list
Stage 2 Content S2.1 + S2.2 // 20 items

S2.1 -- Creative Upload & Categorization

  • Drag-and-drop + file picker upload
  • Banner validation (dimension, size, type)
  • Video validation (dimension, duration, codec, size)
  • Native Image validation per Spec Matrix
  • Native Video validation per Spec Matrix
  • Auto-categorization by file properties
  • Sub-component entry (CTA text, title, description)
  • Combinatorial output generation
  • Upload progress + cancel
  • Invalid file error with reason
  • Creative preview post-upload
  • Bulk upload support

S2.2 -- Creative Group CRUD

  • Group table with status, count, campaign link
  • Group detail drill-down view
  • Create single group
  • Add/remove creatives (multi-select)
  • Delete group with dependency check
  • "Add to Campaign" within App ID
  • "Remove from Campaign" with IsSynced check
  • Status definitions enforced
[✓] Verification: Upload image/video → system auto-categorizes correctly → create group → add creatives
Stage 3 Tracking S3.1 + S3.2 // 15 items

S3.1 -- TGM API & Tracking Link [Decision-01 required]

  • Tracking Link table with status columns
  • Status lifecycle (Active / Paused / Archived)
  • Add via Entry Point A (standalone)
  • TGM API field mapping validated
  • Edit link URL (when workflow permits)
  • Workflow & status impact rules
  • App ID association for tracker groups
  • External Campaign Name/ID handling

S3.2 -- Link Assignment

  • Entry Point B (from Campaign)
  • Entry Point C (from Creative Group)
  • Auto-assign default link
  • Group-level overrides campaign-level
  • Assignment visible in Campaign detail
  • Assignment visible in Creative Group detail
  • Batch assignment operations
[✓] Verification: Create tracking link → TGM returns success → auto-assign to campaign/group
Stage 4 Lifecycle S4.1 + S4.2 // 14 items

S4.1 -- Campaign Lifecycle [Decision-07 required]

  • Campaign table with status, creative count, links
  • Incomplete → Ready transition
  • Ready → In Progress transition
  • In Progress → Completed transition
  • Edit triggers → Updated transition
  • "Notify AM" action
  • Setup status auto-calculation
  • Sort, pagination, status filtering

S4.2 -- IsSynced Control [Decision-02 required]

  • Per-association IsSynced flag
  • IsSynced=True locks all editing
  • IsSynced=False permits editing
  • Cross-module permission matrix
  • Mixed-selection batch logic
  • Locked UI indicator
[✓] Verification: Complete full Incomplete → Ready → In Progress → Completed lifecycle. IsSynced=True correctly locks client editing.
Stage 5 Gate S5.1 // 7 items

S5.1 -- Permission Control (PRD Part 2 -- NOT READY)

  • Internal user full access
  • External user restricted access
  • Binary permission model (Internal vs External)
  • Grant/revoke permission flow
  • App ID filtering for external users
  • Permission change audit log
  • Graceful error when access denied
[✓] Verification: External user logs in → sees only authorized App IDs → operations correctly restricted

Decision Blockers

Decision-01
TGM Create API Field Mapping
OPEN
Blocks: S3.1
Decision-02
IsSynced Flag Trigger Timing
OPEN
Blocks: S4.2
Decision-07
"Notify AM" Channel
OPEN
Blocks: S4.1
Stages 1-2 have no decision blockers. Spec work starts immediately while decisions are being resolved in parallel.

Scope Boundaries

In Scope

AreaIncluded
Creative TypesBanner, Video, Native Image, Native Video
Sub-Component SourceUpload only
Permission ModelInternal vs External (binary)
Schedule TimezoneBrowser timezone
Package CreationVia CPM only

Out of Scope (Deferred)

FeatureReason
KR creative types (Kakao/Naver)Region-specific
Cross-app duplicateHigh complexity
Batch create groupsPRD marks as TBC
Automation tools (end card/thumbnail)Manual upload sufficient
Filters (all modules)Low data volume at launch
Archived statusInternal only
6-role granular permissionsBinary model sufficient
Import from Asset LibraryUpload only
COD package entryCPM only

March Action Plan

Goal: by end of March, all 9 stage specs delivered as functional specs. UI wireframes are not required. When blocked, flag it and move to the next item.

Done Criteria

MustNiceOut of Scope
All 9 stage specs delivered
Decision-01, 02, 07 closed
All flagged items concluded
UI wireframe for S1-S2
Permission (Part 2) initial spec
Pixel-perfect mockups
Full UI interaction details
Engineering estimates
Week 1 // Mar 3-7 Foundation

Focus: S1.1 + S1.2 -- the simplest specs, well-defined in PRD.

  • S1.1 Navigation & App Context
    Read: PRD Part 3, Section 1-2. Spec: sidebar rules, App ID dropdown, 4 tabs, context reload.
  • S1.2 Campaign Package (CPM Minimum)
    Read: PRD Part 1. Spec: every field in the package creation table.

Parallel: Lead pushes Decision-01, 02, 07 with relevant teams.

Deliver: S1.1 spec + S1.2 spec (functional, all fields documented)
Week 2 // Mar 10-14 Content

Focus: S2.1 -- the largest single spec. Take the full week.

  • S2.1 Creative Upload & Auto-Categorization
    Read: PRD Part 3 > Creative module (entire section + Spec Matrix).
  • Build the Supported Formats Table (Banner, Video, Native, Native Video only)
  • Document: upload flow, validation rules, auto-categorization logic, sub-component requirements, combinatorial output
  • KR types (Kakao/Naver) = out of scope, note and skip
Deliver: S2.1 spec + format table + categorization rules
Week 3 // Mar 17-21 Content Tracking

Focus: S2.2 + S3.1 (begin tracking spec if Decision-01 is closed).

  • S2.2 Creative Group CRUD
    Read: PRD Part 3 > Creative Group, Sections 1-9. Spec: table, detail view, create/add/remove/delete.
  • IsSynced checks in Creative Group = mark as "added in Stage 4", do not spec now
  • Schedule timezone issue = use browser timezone, note the open question
Decision-01 checkpoint: If closed, begin S3.1 (Tracking Link Table + TGM API fields). If still open, continue refining S2.1/S2.2 and flag the blocker.
Deliver: S2.2 spec + S3.1 spec (or partial S3.1 if Decision-01 still open)
Week 4 // Mar 24-28 Tracking Lifecycle

Focus: remaining stages. Scope depends on which decisions are closed.

  • S3.1 (if not completed in Week 3) -- finish TGM API + Tracking Link spec
  • S3.2 Tracking Link Assignment -- entry points B/C, auto-assign, override logic
  • S4.1 Campaign Lifecycle -- status transitions, Notify AM
    If Decision-07 open: spec everything except notification channel.
  • S4.2 IsSynced Permission -- cross-module behavior matrix
    If Decision-02 open: spec per-module impact, mark trigger timing as TBD.
  • S5.1 Permission Control -- minimum scope (Internal vs External binary)
    PRD Part 2 is NOT READY. Document what exists, list all unknowns.
Deliver: S3.2 + S4.1 + S4.2 + S5.1 specs (with TBD items clearly marked if decisions remain open)

Checkpoints

CheckpointWhenGate Criteria
CP-1 End of Week 2 (Mar 14) S1.1 + S1.2 + S2.1 specs delivered. Can enter CCM, select App ID, see Campaign list, upload creatives.
CP-2 End of Week 4 (Mar 28) All 9 stage specs delivered. Decision-01/02/07 resolved or TBD items clearly marked. Full lifecycle spec complete.

Weekly Check-in Template

#Question
1Which specs were completed this week?
2What items are flagged as TBD or unresolved?
3Which decisions need to close this week? Are they on track?
4Is anything blocked that was not expected?

Decision Blocker

DecisionNeeded ByStakeholders
Decision-01 Week 3 (Mar 17) TGM team, TS team
Decision-02 Week 4 (Mar 24) Backend team, Product
Decision-07 Week 4 (Mar 24) AM team, Product