CRM Engine¶
Status: Draft for review
Purpose¶
Own customer/prospect identity within tenant context, leads, enquiry/contact history, wishlists, reviews, conversations, customer preferences and notification intent.
Owns¶
- Tenant-scoped customer profiles and guest linkage
- Leads and lead source/attribution references
- Enquiry/contact records
- Conversations/messages
- Wishlists/favorites
- Reviews/ratings and moderation state
- Customer communication preferences/consents
- Notification inbox/read state (delivery delegated to Integration/Operations)
Non-goals¶
It does not own authentication credentials, bookings/orders, payment transactions, campaign definitions or email/SMS provider implementation.
API contract — functional surface¶
These are contract-level resources and operations, not final controller/file names.
| Method | Route | Primary actor | Contract intent |
|---|---|---|---|
| POST | /api/public/v1/leads |
Visitor | Create generic lead/contact request. |
| GET | /api/tenant/v1/customers |
Authorized Tenant Staff | Search tenant customer records. |
| GET | /api/tenant/v1/customers/{id} |
Authorized Tenant Staff | Read customer timeline/profile. |
| POST | /api/public/v1/wishlists/items |
Customer | Add public offering to wishlist. |
| DELETE | /api/public/v1/wishlists/items/{offeringId} |
Customer | Remove wishlist item. |
| POST | /api/public/v1/reviews |
Eligible Customer | Submit review subject to tenant rules. |
| PATCH | /api/tenant/v1/reviews/{id}/moderation |
Tenant Admin/Manager | Moderate review. |
| GET | /api/tenant/v1/conversations |
Tenant Staff | List customer conversations. |
| POST | /api/public/v1/conversations/{id}/messages |
Customer | Post customer message. |
| POST | /api/tenant/v1/conversations/{id}/messages |
Tenant Staff | Reply to customer. |
All mutating operations apply the global tenant, authorization, audit and idempotency rules where relevant.
Events¶
lead.createdcustomer.createdcustomer.mergedreview.submittedreview.publishedconversation.message_createdcommunication_preference.changed
Roles & responsibility matrix¶
Legend: A accountable, R responsible, C consulted, I informed, — none.
| Capability | Platform Admin | Tenant Owner | Tenant Admin | Specialist/Manager | Customer/Visitor |
|---|---|---|---|---|---|
| CRM platform policy | C | A | R | R | I |
| Customer/lead management | — | A | R | R | C |
| Reviews moderation | — | A | R | R | C |
| Conversations | — | I | C | R | R |
| Wishlist/preferences | — | I | I | C | R |
Dependencies¶
- Platform Engine for tenant/member authorization
- Commerce Engine for booking/review eligibility and lead transaction references
- Marketing Engine for attribution/campaign linkage
- Integration Engine for outbound message delivery
Internationalization Contract¶
- Customer/user profiles may store a preferred locale independently from nationality, market or currency.
- Customer-facing conversations/templates resolve locale through the Internationalization Engine.
- Reviews/user-generated content retain the language written by the customer; automatic translation, if introduced, is a derived representation and must not overwrite source content.
Security / isolation requirements¶
- Customer data is tenant scoped except explicitly shared user-account identity.
- Consent/preferences are auditable.
- Support searches cannot leak customer records across tenants.
Acceptance criteria¶
- Legacy enquiry, wishlist, review, chat and notification-user experiences are mapped.
- Customer timeline can reference bookings/payments/campaign sources without owning those records.
- Anonymous leads can later be associated with authenticated customers safely.