diff --git a/Python-Version/COMPLETE_WORKFLOW_GUIDE.md b/Python-Version/COMPLETE_WORKFLOW_GUIDE.md
index adecac3..f60474d 100644
--- a/Python-Version/COMPLETE_WORKFLOW_GUIDE.md
+++ b/Python-Version/COMPLETE_WORKFLOW_GUIDE.md
@@ -8,6 +8,134 @@
---
+## Complete Workflow Overview: A1 → A4 (with A5-A6 Rejection Cycle)
+
+```mermaid
+flowchart TB
+ subgraph Creation["PHASE 1: Campaign Creation"]
+ A1_START[Campaign Manager creates campaign in DAM] --> A1_UPLOAD[Creative team uploads master assets]
+ A1_UPLOAD --> A1_STATUS[Set campaign status to A1]
+ end
+
+ subgraph A1toA2["PHASE 2: A1→A2 Master Download (AUTOMATED - Every 5 min)"]
+ A1_STATUS -->|Script detects A1 campaign| A1_DETECT[a1_to_a2_download.py]
+ A1_DETECT --> A1_DOWNLOAD[Download all master assets from DAM]
+ A1_DOWNLOAD --> A1_TRACKING[Generate unique tracking IDs
pOiJ9s, a7K9mP, bvSGyd]
+ A1_TRACKING --> A1_BOX[Upload to Box with tracking IDs
nutella_hero_pOiJ9s.mp4]
+ A1_BOX --> A1_DB[Store in database with full metadata]
+ A1_DB --> A1_CX{CreativeX in
master metadata?}
+ A1_CX -->|Yes| A1_CX_STORE[Store master score
status='master-cx-score']
+ A1_CX -->|No| A1_CX_SKIP[Log: No CreativeX normal]
+ A1_CX_STORE --> A1_CHECK{All assets
successful?}
+ A1_CX_SKIP --> A1_CHECK
+ A1_CHECK -->|Yes| A1_UPDATE[Update DAM status A1 → A2]
+ A1_CHECK -->|No| A1_RETRY[Retry failed on next run]
+ A1_UPDATE --> A1_EMAIL[Email: Masters ready for localization]
+ A1_RETRY -.->|5 min later| A1_DETECT
+ end
+
+ subgraph Agency["PHASE 3: Agency Localization + CreativeX Scoring"]
+ A1_EMAIL --> AG_RECEIVE[Agency receives Box URLs + tracking IDs]
+ AG_RECEIVE --> AG_DOWNLOAD[Download masters from Box]
+ AG_DOWNLOAD --> AG_CREATE[Create localized versions
DE, FR, IT versions + aspect ratios]
+ AG_CREATE --> AG_CREATIVEX[🔴 CRITICAL: Submit EVERY derivative to CreativeX
200 derivatives = 200 analyses required]
+ AG_CREATIVEX --> AG_PDF[Receive PDF scorecard for EACH asset]
+ AG_PDF --> AG_PDF_UP[Upload ALL PDFs to Box 350605024645]
+ AG_PDF_UP --> AG_SCORE_RUN[Run creativex_scoring_storing.py]
+ AG_SCORE_RUN --> AG_SCORE_DB[Scores stored in database
status='active']
+ AG_SCORE_DB --> AG_VERIFY[Verify: derivative count = score count ✅]
+ AG_VERIFY --> AG_NAMING[Use Naming Tool for EACH derivative
Copy exact filename]
+ AG_NAMING --> AG_UPLOAD[Upload to Box A2→A3 folder
With job number + tracking ID]
+ end
+
+ subgraph A2toA3["PHASE 4: A2→A3 Derivative Upload (AUTOMATED - Every 5 min)"]
+ AG_UPLOAD -->|Script detects files| A2_DETECT[a2_to_a3_upload_polling.py]
+ A2_DETECT --> A2_PARSE[Parse filename: Extract tracking ID]
+ A2_PARSE --> A2_LOOKUP[Load master metadata from database]
+ A2_LOOKUP --> A2_CX_LOOKUP[Lookup CreativeX score by filename]
+ A2_CX_LOOKUP --> A2_CX_CHECK{Score found?}
+ A2_CX_CHECK -->|Yes| A2_CX_USE[Score: 71, URL: actual]
+ A2_CX_CHECK -->|No| A2_CX_DEFAULT[⚠️ Score: 0, URL: placeholder
Email warning sent]
+ A2_CX_USE --> A2_BUILD[Build asset representation]
+ A2_CX_DEFAULT --> A2_BUILD
+ A2_BUILD --> A2_OVERRIDE[Override from filename:
Language, Asset Type, Description]
+ A2_OVERRIDE --> A2_MAP[Map asset type: EHI → heroimage]
+ A2_MAP --> A2_STRIP[Strip to clean filename]
+ A2_STRIP --> A2_UPLOAD[Upload to DAM Final Assets]
+ A2_UPLOAD --> A2_DELETE[Delete from Box]
+ A2_DELETE --> A2_EMAIL[Email: Upload successful]
+ A2_EMAIL --> A2_STATUS[Campaign status: A3]
+ end
+
+ subgraph Approval["PHASE 5: Approval Process"]
+ A2_STATUS --> A3_REVIEW[Legal/Compliance/Brand review in DAM]
+ A3_REVIEW --> A3_CHECK[Check quality, compliance, guidelines]
+ A3_CHECK --> A3_DECISION{Approved?}
+ end
+
+ subgraph Success["✅ APPROVED PATH"]
+ A3_DECISION -->|✅ All checks passed| A4_STATUS[Status updated to A4]
+ A4_STATUS --> A4_WEBHOOK[Webhook sent to Make.com]
+ A4_WEBHOOK --> A4_LIVE[Assets go LIVE]
+ A4_LIVE --> A4_DONE[🎉 Campaign Complete - Assets in market]
+ end
+
+ subgraph Rejection["❌ REJECTED PATH - Rework Required"]
+ A3_DECISION -->|❌ Issues found| A5_MARK[Approver marks specific assets:
ECOMMERCE STATUS = NOT APPROVED]
+ A5_MARK --> A5_LEGAL[Legal reviewer adds comments:
Missing copyright, compliance issues]
+ A5_LEGAL --> A5_IACC[IA&CC reviewer adds comments:
Brand guideline violations]
+ A5_IACC --> A5_APPROVER[General approver adds comments:
Creative feedback]
+ A5_APPROVER --> A5_STATUS[Campaign status → A5]
+ end
+
+ subgraph A5toA6["PHASE 6: A5→A6 Rejection Download (AUTOMATED)"]
+ A5_STATUS -->|Script detects A5| A5_DETECT[a5_to_a6_download.py]
+ A5_DETECT --> A5_FILTER[🔍 Filter: Download ONLY
NOT APPROVED assets]
+ A5_FILTER --> A5_APPROVED[✅ APPROVED assets: Skipped
Not re-downloaded]
+ A5_FILTER --> A5_TRACKING[Lookup EXISTING tracking ID
REUSE: pOiJ9s]
+ A5_TRACKING --> A5_DOWNLOAD[Download rejected assets from DAM]
+ A5_DOWNLOAD --> A5_BOX_UP[Upload to Box A5→A6 folder
Separate folder from A1→A2]
+ A5_BOX_UP --> A5_EMAIL_OUT[Email with ALL rejection comments:
Legal + IA&CC + Approver feedback]
+ A5_EMAIL_OUT --> A5_AGENCY[Agency receives detailed feedback]
+ end
+
+ subgraph Rework["PHASE 7: Agency Fixes + Re-upload"]
+ A5_AGENCY --> RW_DOWNLOAD[Download rejected assets from Box]
+ RW_DOWNLOAD --> RW_REVIEW[Review ALL rejection comments]
+ RW_REVIEW --> RW_FIX[Fix issues based on feedback]
+ RW_FIX --> RW_CREATIVEX[🔴 Re-submit to CreativeX
MUST get new score for fixed version]
+ RW_CREATIVEX --> RW_PDF[Upload new PDF with updated score]
+ RW_PDF --> RW_SCORE_RUN[Run creativex_scoring_storing.py]
+ RW_SCORE_RUN --> RW_DB[Database updated with new score
Old score marked 'superseded']
+ RW_DB --> RW_NAMING[Use Naming Tool:
NEW job number + SAME tracking ID]
+ RW_NAMING --> RW_EXAMPLE[Example: 7777_NUT_SUMMER_OLV_30S_16x9_DE_de_pOiJ9s.mp4
↑ New job | Same tracking ↑]
+ RW_EXAMPLE --> RW_UPLOAD_A2[Upload to A2→A3 folder]
+ RW_UPLOAD_A2 -.->|Re-enters A2→A3 automation| A2_DETECT
+ end
+
+ subgraph ReworkLoop["🔄 Rework Can Repeat Multiple Times"]
+ RW_NOTE1[Rejected again? → Back to A5] -.-> A5_STATUS
+ RW_NOTE2[Assets can go through A5→A6
cycle 2, 3, 4+ times until approved]
+ end
+
+ style A4_DONE fill:#4CAF50,stroke:#2E7D32,stroke-width:4px,color:#FFF
+ style A5_MARK fill:#EF5350,stroke:#C62828,stroke-width:3px
+ style RW_CREATIVEX fill:#9C27B0,stroke:#6A1B9A,stroke-width:3px
+ style AG_CREATIVEX fill:#9C27B0,stroke:#6A1B9A,stroke-width:3px
+ style A1_TRACKING fill:#2196F3,stroke:#1565C0,stroke-width:2px
+ style A5_TRACKING fill:#2196F3,stroke:#1565C0,stroke-width:2px
+ style RW_NOTE1 fill:#FFE082,stroke:#F57C00
+ style RW_NOTE2 fill:#FFE082,stroke:#F57C00
+```
+
+**🔴 CRITICAL REQUIREMENTS HIGHLIGHTED:**
+1. **CreativeX Scoring (Purple):** Every derivative MUST be scored individually
+2. **Tracking IDs (Blue):** Critical link between master and derivatives, reused in rework
+3. **Rejection Comments (Red):** Legal, IA&CC, and approver feedback guide fixes
+4. **Rework Loop (Orange):** Can repeat until approved - same tracking ID maintained
+
+---
+
## Table of Contents
1. [Executive Overview](#executive-overview)