Skip to main content

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

PillarQuestionCapability
Customer IntelligenceWHO is the customer?360° profiles, identity resolution, scoring
Marketing AutomationWHAT should we do?Journeys, triggers, personalization
Campaign ManagerWHEN to engage?Scheduling, A/B testing, analytics
Social PublisherWHERE to reach them?Multi-platform posting, event promotion

Key Problems Solved

Current ProblemPlatform Solution
Member in SCL ≠ Player in TeeTime ≠ Contact in MessagingUnified CustomerProfile with identity resolution
Staff manually cross-reference systemsSingle API/UI for 360° view
No way to identify at-risk membersEngagement scoring + churn prediction
Basic segmentation on Contact data onlySmart segments using cross-service data
Manual campaign creation and sendsAutomated journeys and triggers
Separate tools for social mediaIntegrated social publisher
Manual tournament promotionAuto-promotion to all channels

Service Boundaries

ServiceResponsibilityOwns
CRM/Marketing PlatformWHO, WHAT, WHEN, WHEREProfiles, Segments, Campaigns, Automation, Social
Messaging ServiceHOW (delivery)Templates, Multi-channel delivery, Consent, Providers
SCL ServiceMembership dataMembers, Tiers, Payments
TeeTime ServiceGolf dataPlayers, Bookings, Tournaments

Technology Stack

ComponentTechnology
APINestJS + GraphQL
DatabasePostgreSQL
ORMPrisma
Event TransportRedis + BullMQ
CacheRedis
Social APIsFacebook, 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.