[ANCHOR] Customer Event-Based Engine (CEBE)
Product Requirements Document · ANCHOR v2.3 · Confluence source of truth: page 51208061912. Repo
status: draftkeeps the index lint-safe (anchors carry no stories); the live initiative status is ACTIVE.
Theme 1: Make the Intelligence Promise Real | Objective 1A: Strengthen Agentic AI Capabilities | H2 2026 → H1 2027 | Owner: Zhelia Alifa
This is an ANCHOR PRD. It is the master index for the CEBE initiative — it orchestrates all phases beneath it and never describes a single delivery. Per-phase execution detail (constraints, observability, dependencies, stories) lives in the child Phase / Support PRDs linked in the Phase Index.
HEADER BLOCK
| Field | Value |
|---|---|
| PM | Zhelia Alifa |
| PRD Version | 2.3 |
| Status | ACTIVE |
| PRD Type | ANCHOR |
| Anchor | Yes — this IS the Anchor |
| Labels | epic:cdp | module:customer-data-platform | feature:cebe |
| Last Updated | 2026-06-26 |
Phase Index
| Phase | Goal | PRD Link | Epic Key | Status | Shipped |
|---|---|---|---|---|---|
| Phase 1 — Q3 2026: Core Infra + Customer Data + Marketing | Stand up the event-driven foundation (standardized reusable event schema, DB schema, adapter + retriever + query layer) with CDP customer-data-change events and Marketing (Broadcast + Ads) events as the first two sources; socialize to all squads by end of Q3. | (child PRDs below) | TF-3302 | In Progress | — |
| ↳ Core Infrastructure & CDP Customer Event (TECH — CDP + BI/Data lead) | Build the reusable event schema, Central DB schema, event adapter layer, retriever/metrics layer, and query approach; CDP emits customer-data-change + segment events as the first source. | prd-cebe-core-infrastructure-cdp-customer-event.md | TF-3302 | Draft | — |
| ↳ Marketing Event Source: Broadcast & Ads (SUPPORT — Broadcast squad) | Broadcast squad emits standardized Broadcast and Ads events into CEBE, enabling marketing metrics (reply rate, ads conversion) and attribution. | prd-cebe-marketing-event-source-broadcast-ads.md | TF-3302 (Owning Squad: Broadcast) | Draft | — |
| Phase 2 — Q4 2026: Communication, Service & Loyalty | Connect Communication (conversation, WA Call), Service (Ticket), and Loyalty events; all squads start pushing their own domain events on top of the Q3 foundation. | — | — | Not started | — |
| Phase 3 — Q1 2027: B2B Sales & Commerce | Connect B2B Sales (Deals), Commerce, Booking & Appointment events for full LTV coverage. | — | — | Not started | — |
Note: Phase 1 uses a single shared Epic (TF-3302) covering both the Core Infrastructure (TECH) and Marketing (SUPPORT) deliverables; the Broadcast contribution is filtered via the
Owning Squadfield.
1. One-liner + Problem
One-liner: A unified, event-driven data layer that gives every Qontak squad one real-time customer profile to build segmentation, marketing automation, AI memory, and health scoring on.
Problem: Today customer data lives in silos — a ticket resolved in the support module never informs the AI Agent handling a follow-up sale, and a payment confirmed in Commerce doesn't update the customer's segmentation in real time. Each module writes its own database, producing inconsistent profiles, missed automation opportunities, and AI that cannot get full context or memory of the customer. Without a shared event-driven foundation, every new intelligence feature in H2 2026 has to re-solve cross-module data access from scratch, multiplying cost and delaying delivery across squads.
Reference data assessment: https://docs.google.com/spreadsheets/d/1KVxg-M_Ur_gW9d2DmSCysRZIgaOsoUGjlvAsiyfzklI/edit?usp=sharing
2. What Happens If We Don't Build This
- Every intelligence feature stalls. Agentic AI memory, segmentation, marketing automation, and customer health score all depend on CEBE — without it they cannot ship in H2 2026 and slip into 2027.
- Cross-module data work is re-paid per squad. Each squad rebuilds its own customer-data access, multiplying engineering cost and producing inconsistent profiles.
- Marketing cannot measure or target. No reusable reply-rate / ads-conversion metrics and no cross-use-case segmentation means marketing automation stays manual and un-attributable.
- AI stays context-blind. The AI Agent keeps answering without history across modules, capping CSAT and conversion gains the Intelligence theme promises.
3. Target Users + Persona Context
| Persona | Role | Goal | Pain | Workaround |
|---|---|---|---|---|
| Primary — Business Admin / Marketing Owner | Business admin or marketing owner managing customer data and running campaigns in Qontak | Keep one consistent, up-to-date customer profile and target/segment customers by real behavior across channels | Customer attribute changes don't propagate; broadcast & ads engagement isn't unified, so segments and attribution are stale or impossible | Manual exports, spreadsheets, and per-channel reporting reconciled by hand |
| Secondary — CS / Service Agent & AI Agent | Service agent (and the AI Agent acting on their behalf) handling inbound conversations and tickets | See the customer's full cross-module history before responding, and act on risk/value signals | No memory across modules — agent/AI cannot tell an at-risk or high-value customer from a new one | Switching between modules manually to piece together context mid-conversation |
| Tertiary — Sales & Loyalty Owner | Sales owner (B2C/B2B deals, commerce) and loyalty program manager | Use unified deal, purchase, and loyalty signals to prioritize retention, upsell, and re-engagement | Sales, commerce, and loyalty signals are isolated from engagement and service data | Separate per-module reports that never combine into one customer view |
4. Industry Priority
Re-prioritized 2026-06-26 to lead with the customer-data + marketing use-case, which unlocks the broadest reuse across squads first.
| Priority | Use-Case / Domain | Key Use Cases |
|---|---|---|
| Primary | Customer Data Change & Marketing | 1. Real-time propagation of customer data/attribute changes 2. Segmentation based on use-case (cross-module attributes) 3. Marketing engagement & attribution across Broadcast and Ads 4. Marketing automation / drip triggered by behavioral events 5. Reusable marketing metrics (reply rate, ads conversion) |
| Secondary | Consumer Service | 1. Chat histories 2. Chat SLA 3. Ticket histories 4. Ticket SLA 5. Notification reminder 6. Booking completed / ticket resolution |
| Third | Sales (B2C & B2B) & Loyalty | 1. Deal histories 2. Deal rotten time 3. Deal won 4. Commerce / purchase histories 5. Loyalty tier, points & membership powering personalized offers |
5. Architecture — Event-Driven Customer Data Foundation
All modules publish standardized domain events to the Event Adapter Layer (contact-service), which resolves identity via qontak_customer_id and writes to the Central DB. The Retriever / Metrics Layer turns raw events into reusable metrics/summaries; downstream services read through the retriever — they never call module APIs directly.
flowchart LR
subgraph SRC[Event Sources]
direction TB
CDPMOD[CDP - Customer Data / Attributes]
CAMP[Campaign - Broadcast and Ads]
COMM[Communication - Chat, WA Call]
TICK[Ticketing - Support Tickets]
CONV[Conversion - Deals, Commerce, Booking]
LOY[Loyalty - Points, Membership]
end
ADAPTER[Event Adapter Layer - contact-service]
CEBE[(Customer Event Based Engine - Central DB)]
RET[Retriever / Metrics Layer]
subgraph OUT[Downstream Services]
direction TB
SEG[Segmentation Engine]
MA[Marketing Automation]
REP[Report and Command Center]
AI[Agentic AI Memory]
CHS[Customer Health Score]
AUTO[Automated Action]
end
SRC --> ADAPTER
ADAPTER --> CEBE
CEBE --> RET
RET --> OUT
6. Module Event Catalog
Each module emits standardized domain events to the Adapter. Every event carries:
(1) company_sso_id (2) company_id (3) qontak_customer_id (4) actor (5) event_timestamp (6) source_module (7) trigger_from (8) event_name (9) event_description (10) event_attributes
1. Communication Module (Chat & Call)
What it feeds CEBE: Full conversation and call history, agent interactions, channel preference, response behavior.
| Event | Trigger | Key Payload Fields |
|---|---|---|
conversation.started | Customer initiates an inbound chat | channel, room_id, phone, email, bsuid |
call.started | Customer initiates an inbound call | channel, room_id, phone, email, bsuid |
conversation.assigned | Chat assigned to human agent or bot | agent_id, assignment_type (human/bot) |
call.assigned | Call assigned to human agent | agent_id, assignment_type (human/bot) |
message.received | Customer sends a message | message_id, message_type, content_preview |
conversation.resolved | Chat marked resolved | resolved_by, resolution_time_seconds, handled_by (human/bot) |
conversation.escalated | Bot escalates to human | escalation_reason, bot_session_id |
bot.contained | Bot fully resolved without human | bot_flow_id, containment_flag: true |
call.completed | Call ended | duration_seconds, call_type (inbound/outbound), recording_url |
csat.submitted | Customer submits CSAT | score, comment, agent_id |
nps.submitted | Customer submits NPS | score, comment, agent_id |
CEBE Metrics enabled: Total conversations per customer · Reply rate · Total messages sent by customer · Channel · Avg customer response time · Avg call duration · Avg CSAT · Avg NPS · AI containment rate
2. Ticketing Module (Customer Service)
What it feeds CEBE: Service history, issue resolution performance, SLA compliance.
| Event | Trigger | Key Payload Fields |
|---|---|---|
ticket.created | New ticket opened | ticket_id, pipeline_id, stage_id, assigned_id, creator_id, {other_fields}, customer_association |
ticket.assigned | Ticket assigned to agent | ticket_id, agent_id, team_id, assigned_at |
ticket.stage_changed | Ticket moves between stages | ticket_id, old_stage, new_stage, changed_by, timestamp |
ticket.resolved | Ticket marked as resolved | ticket_id, resolved_at, resolution_type (first_contact/escalated), agent_id |
ticket.sla_breached | SLA timer expires before resolution | ticket_id, sla_type (first_response/resolution), breach_duration_seconds |
CEBE Metrics enabled per customer: Total tickets created · Resolution rate % · Avg time to resolve · Pipeline stage history · SLA breach count & breach rate · Repeat issue flag
3. Deals (B2B Sales)
What it feeds CEBE: Sales engagement depth, deal value, pipeline stage, purchase intent signals.
| Event | Trigger | Key Payload Fields |
|---|---|---|
deal.created | New deal opened | deal_id, pipeline_id, stage_id, deal_size, owner_id, {other_fields}, customer_association |
deal.stage_changed | Deal moved to another stage | deal_id, old_stage, new_stage, days_in_stage, timestamp, changed_by, customer_association |
deal.won | Deal closed won | deal_id, deal_size, close_date, {other_fields}, customer_association, product_association |
deal.lost | Deal closed lost | deal_id, deal_size, lost_date, loss_reason, {other_fields}, customer_association, product_association |
deal.rotten_time_breached | Rotten timer expires before conversion | deal_id, deal_size, breach_duration_seconds |
CEBE Metrics enabled: Total deals created per customer · Total deal size per customer · Won rate · Lost rate · Avg time to conversion · Pipeline stage history · Rotten time breach count & rate
4. Campaign Module (Broadcast & Ads)
What it feeds CEBE: Marketing engagement history, message response behavior, and campaign attribution across both outbound Broadcast and paid Ads channels.
4a. Broadcast events
| Event | Trigger | Key Payload Fields |
|---|---|---|
campaign.sent | Broadcast message delivered to customer | campaign_id, template_id, channel, campaign_cost, {customer_attributes_related}, timestamp |
campaign.replied | Customer replies to a broadcast | campaign_id, template_id, channel, campaign_cost, sent_at, timestamp, reply_content_preview |
campaign.clicked | Customer clicks CTA in broadcast | campaign_id, template_id, channel, cta_type, destination_url, timestamp |
campaign.bounced | Message not delivered | campaign_id, template_id, channel, bounce_reason |
campaign.opted_in | Customer opts in to marketing | campaign_id, template_id, opt_in_channel, timestamp |
campaign.opted_out | Customer opts out of marketing | campaign_id, template_id, opt_out_channel, timestamp |
4b. Ads events (paid acquisition & retargeting)
| Event | Trigger | Key Payload Fields |
|---|---|---|
ad.impression | Ad shown to a known/resolvable customer | ad_id, campaign_id, ad_platform (meta/google/tiktok), ad_set_id, creative_id, ad_spend, timestamp |
ad.clicked | Customer clicks the ad | ad_id, campaign_id, ad_platform, creative_id, destination_url, cost_per_click, timestamp |
ad.lead_captured | Lead form / CTWA conversation generated from ad | ad_id, campaign_id, ad_platform, lead_form_id, room_id, timestamp |
ad.converted | Ad-attributed conversion (purchase/deal/booking) | ad_id, campaign_id, ad_platform, conversion_type, conversion_value, attribution_window, timestamp |
ad.spend_recorded | Daily/periodic ad spend synced from ad platform | ad_id, campaign_id, ad_platform, ad_spend, currency, period, timestamp |
CEBE Metrics enabled: Total campaigns received · Delivery rate · Reply rate · Opt-in / opt-out status · Campaign-attributed revenue · Ad impressions & clicks · Ads conversion rate (% ads conversion) · Cost per lead (CPL) · Cost per acquisition (CPA) · Return on ad spend (ROAS)
5. Conversion Module (Commerce & Booking)
What it feeds CEBE: Transaction history, booking behavior, payment signals.
| Event | Trigger | Key Payload Fields |
|---|---|---|
booking.created | Customer creates a booking | booking_id, service_type, appointment_datetime, location_id |
booking.confirmed | Booking confirmed by business | booking_id, service_type, appointment_datetime, confirmed_at |
booking.cancelled | Booking cancelled | booking_id, service_type, appointment_datetime, cancelled_by, cancellation_reason |
booking.completed | Service/appointment completed | booking_id, service_type, appointment_datetime, completed_at, rating |
add_to_cart | Customer adds catalogue item to cart | items_id, timestamp |
order.created | Order placed (Commerce) | order_id, items, total_value, payment_method |
order.paid | Payment confirmed | payment_type (dp/full), paid_amount, paid_at |
order.delivered | Order delivered | delivery_method, delivered_at |
payment.failed | Payment attempt failed | failure_reason, attempt_count |
CEBE Metrics enabled: Total bookings · Booking completed rate % · Total spend (LTV) · Avg order value · Preferred payment method · Purchase frequency · Paid rate %
6. CDP Module (Customer and Company)
What it feeds CEBE: Master identity resolution — source of truth for who the customer is. First event source connected in Q3 2026 (Phase 1).
| Event | Trigger | Key Payload Fields |
|---|---|---|
customer.created | New customer added (manual or automated) | qontak_customer_id, default_fields[], custom_fields[], created_at, created_by |
customer.updated | Customer fields/attributes updated | qontak_customer_id, change_fields[], updated_at, updated_by |
segment.entered | Customer added to a segment | qontak_customer_id, segment_id, segment_name |
segment.exited | Customer removed from a segment | qontak_customer_id, segment_id, segment_name |
CEBE Metrics enabled: Total new customers · New customer growth rate · Customer acquisition by source · Segment per customer
7. Loyalty Module
What it feeds CEBE: Retention signals, member behavior, tier progression.
| Event | Trigger | Key Payload Fields |
|---|---|---|
membership.enrolled | Customer joins loyalty program | qontak_customer_id, member_id, program_id, enrolled_at, initial_tier, available_point |
membership.unenrolled | Customer unenrolls from program | qontak_customer_id, member_id, program_id, unenrolled_at, last_tier, available_point |
points.earned | Points credited | qontak_customer_id, member_id, points_amount, transaction_ref, earned_at, available_point, expired_point_at |
points.burned | Points burned for reward / deduction | qontak_customer_id, member_id, points_used, redeemed_at, available_point, expired_point_at |
rewards.redeemed | Reward redeemed | qontak_customer_id, member_id, reward_used_id, reward_name, available_point, expired_point_at |
tier.upgraded | Customer reaches higher tier | qontak_customer_id, member_id, old_tier, new_tier, available_point, expired_point_at |
tier.downgraded | Customer drops tier | qontak_customer_id, member_id, old_tier, new_tier, available_point, expired_point_at |
CEBE Metrics enabled: Total loyalty members · Total available points per member · Enrollment rate · Enrollment by program · New member growth rate · Tier distribution
7. CEBE as Baseline for New Features
| Downstream Feature | Dependency on CEBE |
|---|---|
| Customer Segmentation | Rule engine filters customers by cross-module attributes (e.g. "2+ tickets AND no purchase in 90 days"). |
| Marketing Automation / Drip | Triggers on behavioral events (e.g. auto re-engage when booking.cancelled or ad.lead_captured fires). |
| Agentic AI Memory | AI reads full customer history before responding. Without CEBE, AI has no cross-module memory. |
| Customer Health Score | Score computed from ticket volume, CSAT trend, deal stage, loyalty tier, last engagement date. |
| Report & Command Center | Manager dashboard shows per-customer timeline, cross-module metrics, AI-generated insights. |
| Automated Action | Rule-based triggers fire when CEBE detects risk signals (e.g. SLA breach → auto-escalate → notify supervisor). |
8. Proposed Timeline & Priority
| Q | Goals | Detail Scope | DoD | Child PRD | Dependency |
|---|---|---|---|---|---|
| Q3 2026 | Core Infrastructure, Customer Data, Segment & Marketing — P0 Blocker | • RFC & assessment, both sides (Engineering & Data). • Standardize a reusable event schema for all squads (push like Mixpanel, keyed on qontak_customer_id via ContactResolver).• Provide the database schema (event-level + customer-level aggregation). • CDP starts providing customer events — see 6. CDP Module. • Marketing use-case — see 4. Campaign Module; connect Broadcast and Ads (not Broadcast only). • Build the event adapter layer (contact-service) — identity resolution + idempotency + PII masking. • Build the retriever layer (metrics/summaries, e.g. % reply rate, % ads conversion). • Provide the query approach for downstream features (segmentation, marketing automation). • Socialize to all squads at end of Q3 so Q4 every squad can push their domain events. | • RFC approved by both Engineering and Data. • Standardized event schema published and adopted by CDP + Broadcast. • Central DB schema + event adapter + retriever + query layer live. • 100% of CDP customer events and Marketing (Broadcast + Ads) events propagated to CEBE in <5s. • Reusable metrics queryable for segmentation/marketing automation. • All squads socialized and able to push their domain events in Q4. | Core Infrastructure & CDP Customer Event — TECH · Marketing Event Source: Broadcast & Ads — SUPPORT | Data · CDP · Chat 2 (Broadcast) |
| Q4 2026 | Communication, Consumer Service & Loyalty | • Communication (conversation, WA Call) — see 1. Communication Module. • Consumer Service (Ticket) — see 2. Ticketing Module. • Loyalty — see 7. Loyalty Module. | • 100% of Communication, Ticket, and Loyalty events propagated to CEBE in <5s. | — | Data · CDP · Chat 1 (Comms) · Voice (WA Call) · CRM (Ticket) · Loyalty |
| Q1 2027 | B2B Sales (Deals), Commerce, Booking & Appointment for complete LTV coverage | • B2B Sales (Deals) — see 3. Deals (B2B Sales). • Commerce, Booking & Appointment — see 5. Conversion Module. | • 100% of Deal, Commerce, Booking & Appointment events propagated to CEBE in <5s. • Per-customer LTV and Customer Health Score live for all active accounts. | — | Data · CDP · CVT · CRM (Deal) · Innovation (Booking, etc) |
Detail Task per Phase
Phase 1 — Q3 2026
| Task | Owner | Timeline |
|---|---|---|
| RFC & feasibility assessment (Engineering + BI/Data) | PM, Eng (CDP), BI/Data | Jul 2026 |
Design standardized reusable event schema + qontak_customer_id idempotency | BI/Data, PM, Eng (CDP) | Jul 2026 |
| Provide Central DB schema (event + aggregation layer) | Eng (CDP), BI/Data | Jul 2026 |
| Build Event Adapter Layer (contact-service) | Eng (CDP) | Jul–Aug 2026 |
| Connect CDP customer-data-change + segment events | Eng (CDP) | Aug 2026 |
| Connect Marketing events — Broadcast + Ads | Eng (Broadcast) | Aug 2026 |
| Build retriever / metrics layer (reply rate, ads conversion, etc.) | Eng (CDP), BI/Data | Aug 2026 |
| Provide query approach for downstream features (segmentation, MA) | Eng (CDP), BI/Data | Aug–Sep 2026 |
| Internal monitoring & alerting (<5s SLA) | Eng (Infra) | Aug 2026 |
| Socialize foundation + event-push guide to all squads | PM, CDP | End of Sep 2026 |
Phase 2 — Q4 2026
| Task | Owner | Timeline |
|---|---|---|
| Connect Communication events (conversation, WA Call) | Eng (Chat & WA Call) | Q4 2026 |
| Connect Ticketing events | Eng (Ticket) | Q4 2026 |
| Connect Loyalty events | Eng (Loyalty) | Q4 2026 |
| Agentic AI reads CEBE memory | Eng (Chatbot) | Q4 2026 |
Phase 3 — Q1 2027
| Task | Owner | Timeline |
|---|---|---|
| Connect Deal events | Eng (Deal) | Q1 2027 |
| Connect Commerce events | Eng (Commerce) | Q1 2027 |
| Connect Booking & Appointment events | Eng (Booking) | Q1 2027 |
| Build Customer Health Score model | Eng (AI/Data) | Q1 2027 |
9. Technical Principles
- Event-Driven, Not Polling: All modules publish events asynchronously. CEBE never calls module APIs directly.
- Standardized, reusable event schema: One event contract for all squads — push customer events like Mixpanel, keyed on
qontak_customer_idviaContactResolver. - contact-service is the authoritative write service: Identity resolution and deduplication happen here before data lands in Central DB.
- Idempotency via
qontak_customer_id: No duplicate events regardless of retry or replay. - < 5s propagation SLA: Monitored via internal alerting; any breach triggers on-call notification.
- Backfill on first integration: When a module first connects, a backfill job loads the last 12 months of historical events.
- PII-aware: Sensitive fields are masked at the adapter layer based on role-based access policy.
10. Success Metrics (Initiative-level)
| Category | Metric | Definition | Baseline | Target |
|---|---|---|---|---|
| Adoption & Usage | ⭐ Module event coverage on CEBE | % of target modules emitting standardized events into CEBE | 0% (no shared layer today) | CDP + Marketing (Broadcast+Ads) by end of Q3 2026; Comms/Ticket/Loyalty by end of Q4 2026; full coverage by end of Q1 2027 |
| Quality & Accuracy | Event propagation latency | Time from source event to availability in Central DB (p99) | N/A — new | < 5 seconds (p99) from end of Phase 1 |
| Quality & Accuracy | Zero event loss | Lost events across module streams | N/A | 0 lost events (idempotency via qontak_customer_id) — ongoing |
| Efficiency & Impact | Reusable metrics & segments available | Reply rate, ads conversion, use-case segments queryable from CEBE | N/A | Available for segmentation + marketing automation by end of Q3 2026 |
| Efficiency & Impact | AI Agent uses CEBE memory | % of conversations where AI reads CEBE history before responding | 0% | ≥ 50% of conversations by end of Q4 2026 |
| Efficiency & Impact | Customer Health Score live | Active accounts with a computed health score | 0 | All active accounts scored by end of Q1 2027 |
11. Key Decisions + Alternatives Rejected
11a — Decisions Made
| Date | Decision | Rationale |
|---|---|---|
| 2026-06-26 | Lead Q3 with the Customer Data + Marketing use-case (was: Consumer Service) | Broadest, earliest reuse across squads; unlocks segmentation + marketing automation first |
| 2026-06-26 | Marketing scope includes Ads, not Broadcast only | Ads attribution (CPL, CPA, ROAS, % ads conversion) is core to the marketing use-case |
| 2026-06-26 | Q3 delivers a standardized, reusable event schema any squad can push to | Squads self-serve event push (like Mixpanel) keyed on qontak_customer_id; avoids per-squad re-implementation |
| 2026-06-26 | Phasing: Q3 Core+CDP+Marketing → Q4 Comms/Service/Loyalty → Q1'27 B2B Sales/Commerce | Sequences by reuse value and squad readiness; socialize at end of Q3 so all squads onboard in Q4 |
| 2026-06-26 | Q3 owned jointly by CDP + BI/Data | RFC & assessment required on both engineering and data sides; retriever/query layer is data-heavy |
| 2026-06-26 | Phase 1 uses a single shared Epic (TF-3302) for both TECH + SUPPORT | One delivery slice; Broadcast contribution filtered via Owning Squad rather than a separate Epic |
11b — Alternatives Rejected
| Alternative | Why Rejected | Date |
|---|---|---|
| Each module keeps its own DB; build point-to-point integrations | Re-pays cross-module data work per squad; inconsistent profiles; doesn't scale to AI/segmentation | 2026-06-26 |
| Polling module APIs on demand instead of event-driven | Cannot meet <5s freshness; tight coupling; high load on module APIs | 2026-06-26 |
| Lead Q3 with Consumer Service (previous priority) | Narrower early reuse than customer-data + marketing; delays segmentation/MA foundation | 2026-06-26 |
| Broadcast-only marketing scope | Misses paid-acquisition attribution; cannot compute ads conversion / ROAS | 2026-06-26 |
12. Open Questions
| # | Type | Question | Owner | Deadline |
|---|---|---|---|---|
| 1 | Open Question | Event-level (append-only log) vs aggregated tables vs hybrid for the Central DB? | BI/Data + Eng (CDP) | 2026-07-15 |
| 2 | Open Question | Do we need streaming infra (Kafka / PubSub) to guarantee <5s and zero loss, or is the current pipeline sufficient? | Eng (CDP) + Infra | 2026-07-15 |
| 3 | Open Question | Final query approach for downstream consumption (pre-aggregated vs on-the-fly)? | BI/Data + Eng (CDP) | 2026-08-15 |
| 4 | Assumption | All squads can adopt the standardized event schema in Q4 after end-of-Q3 socialization | PM (CDP) | 2026-09-30 |
| 5 | Risk | Module teams slow to emit events → downstream delayed. Mitigation: phase-gate by module; CDP + Marketing first in Q3; socialize + push guide before Q4 | PM (CDP) | 2026-09-30 |
| 6 | Risk | High write volume causes >5s breach. Mitigation: pre-size DB; async queue buffer between adapter and DB | Eng (Infra) | 2026-08-31 |
| 7 | Risk | PII leakage across team boundaries. Mitigation: PII masking at adapter + team-level permission scope | Eng (CDP) | 2026-08-31 |
| 8 | Risk | Duplicate identities / late-arriving events. Mitigation: idempotency + dedup on qontak_customer_id at adapter | Eng (CDP) | 2026-08-31 |
13. Appendix — Data Assessment Request
Retained from the original CEBE assessment brief — input to the Q3 RFC & assessment workstream.
| Request Title | Data Assessment for CEBE (Customer Event-Based Engine) |
| Request Objective | Build CEBE as a unified, customer event-driven data layer supporting Customer Insight (aggregated summary per customer) and Conversation AI (profiling, sentiment, behavior). Assess real-time event ingestion + cross-module query feasibility; evaluate a centralized event-driven data model; identify need for new datamarts, streaming pipelines, or storage optimization. |
| Data Usability Plan | A. Customer Insight / Customer 360 — unified profile combining Identity (CDP), Engagement (Chat, Campaign/Ads), Service (Ticket), Sales (Deal, Commerce), Loyalty. B. Conversation AI — real-time + historical behavioral signals for AI decisioning and context-aware responses. C. Downstream — marketing automation triggers, segmentation engine, cross-module reporting. |
| Key Requirements | A. Data model & storage — event-level vs aggregated vs hybrid; <5s ingestion + analytical queries. B. Ingestion — high-volume streams; <5s, idempotency, 12-month backfill, zero loss. C. Query — aggregated customer query (<1–2s) + granular event/AI query. D. Identity — all events linked via qontak_customer_id; handle duplicates, late events. E. Metrics — engagement/service/sales/loyalty/commerce; precomputed vs on-demand. F. AI-ready layer — structured + semi-structured; feature store need. G. Governance — retention, partitioning, PII access control, storage growth & cost. |
PRD CHANGELOG
| Version | Date | By | Section | Type | Summary |
|---|---|---|---|---|---|
| 2.0 | 2026-06-26 | Claude | All | MODIFIED | Converted to ANCHOR PRD; updated Industry Priority; re-cut timeline (Q3/Q4/Q1); added Ads to Campaign Module; added retriever/query layer. |
| 2.1 | 2026-06-26 | Claude | Phase Index, S8 | MODIFIED | Linked the two Phase 1 child PRDs; fixed ToC + anchors. |
| 2.2 | 2026-06-26 | Claude | S1 | MODIFIED | Tightened one-liner to ≤25 words. |
| 2.3 | 2026-06-26 | Zhelia Alifa / Claude | S5, S6, S8 | MODIFIED | Linked Epic TF-3302; reworked S8 into table + per-phase task tables; expanded event envelope to event_name/description/attributes; architecture flow made linear (Central DB → Retriever → Downstream). Committed to documents repo as .md. |