Platform Overview
The CRM & Marketing Platform provides a unified view of customers across all DigiWedge services.
Architecture Vision
flowchart TB
subgraph platform["🎯 CRM & MARKETING PLATFORM"]
direction LR
CI["👤 Customer<br/>Intelligence<br/>─────────<br/>WHO is the<br/>customer?"]
MA["🤖 Marketing<br/>Automation<br/>─────────<br/>WHAT should<br/>we do?"]
CM["📅 Campaign<br/>Manager<br/>─────────<br/>WHEN to<br/>engage?"]
SP["📱 Social<br/>Publisher<br/>─────────<br/>WHERE to<br/>reach them?"]
end
subgraph data["📊 Data Sources (Events In)"]
SCL["🏌️ SCL Service<br/>Members, Tiers, Payments"]
TT["⛳ TeeTime Service<br/>Players, Bookings, Tournaments"]
end
subgraph delivery["📤 Delivery Channels (Actions Out)"]
MSG["📧 Messaging Service<br/>Email, SMS, Push"]
SOCIAL["🌐 Social APIs<br/>Facebook, Instagram, X"]
end
SCL -->|"member events"| platform
TT -->|"booking events"| platform
platform -->|"send campaigns"| MSG
platform -->|"publish content"| SOCIAL
MSG -.->|"engagement events"| platform
style platform fill:#e8f5e9,stroke:#4caf50,stroke-width:3px
style data fill:#fff3e0,stroke:#ff9800,stroke-width:2px
style delivery fill:#e3f2fd,stroke:#2196f3,stroke-width:2px
The Four Pillars
| Pillar | Question | Capability |
|---|---|---|
| Customer Intelligence | WHO is the customer? | 360° profiles, identity resolution, scoring |
| Marketing Automation | WHAT should we do? | Journeys, triggers, personalization |
| Campaign Manager | WHEN to engage? | Scheduling, A/B testing, analytics |
| Social Publisher | WHERE to reach them? | Multi-platform posting, event promotion |
Key Problems Solved
| Current Problem | Platform Solution |
|---|---|
| Member in SCL ≠ Player in TeeTime ≠ Contact in Messaging | Unified CustomerProfile with identity resolution |
| Staff manually cross-reference systems | Single API/UI for 360° view |
| No way to identify at-risk members | Engagement scoring + churn prediction |
| Basic segmentation on Contact data only | Smart segments using cross-service data |
| Manual campaign creation and sends | Automated journeys and triggers |
| Separate tools for social media | Integrated social publisher |
| Manual tournament promotion | Auto-promotion to all channels |
Service Boundaries
| Service | Responsibility | Owns |
|---|---|---|
| CRM/Marketing Platform | WHO, WHAT, WHEN, WHERE | Profiles, Segments, Campaigns, Automation, Social |
| Messaging Service | HOW (delivery) | Templates, Multi-channel delivery, Consent, Providers |
| SCL Service | Membership data | Members, Tiers, Payments |
| TeeTime Service | Golf data | Players, Bookings, Tournaments |
Technology Stack
| Component | Technology |
|---|---|
| API | NestJS + GraphQL |
| Database | PostgreSQL |
| ORM | Prisma |
| Event Transport | Redis + BullMQ |
| Cache | Redis |
| Social APIs | Facebook, Instagram, Twitter SDKs |
Tenant Identifiers
The CRM is multi-tenant. Today, tenant identifiers are human-readable slugs (for example, digiwedge).
We are migrating to UUID-based tenant IDs with a slug alias. During the transition, public endpoints
will continue accepting tenant slugs while internal services adopt UUIDs.