Go-Live Audit — Slice E: CRM · Master Data · Integrations
Date: 2026-04-25 Domains: 10. CRM & Loyalty · 14. Master Data · 15. Integrations Total checks: 84
Scorecard
| Status | Count | % |
|---|---|---|
| ✅ Done | 38 | 45 % |
| ⚠️ Partial | 25 | 30 % |
| 🔴 Stub | 14 | 17 % |
| ❌ Missing | 7 | 8 % |
Verdict: 🔴 NOT GO-LIVE READY — sound architecture, but tenant-isolation and integration gaps block live operation.
Critical P0 Blockers
| # | Item | Domain | Issue |
|---|---|---|---|
| 1 | CRM tenant isolation | CRM | Campaigns / Loyalty / Feedback / Revenue controllers lack @CurrentTenant() guards — any auth user can read/modify other tenants |
| 2 | Master-data tenant scoping | Master Data | Property / Room / Rate Plan endpoints don't validate tenant ownership |
| 3 | Razorpay LIVE not staged | Integrations | Adapter only supports SANDBOX; LIVE credentials not configured — no real payments at go-live |
| 4 | Email / SMS in simulator mode | Integrations | SendGrid + Twilio fall back to fake sends because credentials missing — no guest communication |
| 5 | Missing gateway routes | CRM | /chain-loyalty, /crm/dedup, /crm/loyalty/partners controllers unreachable through gateway |
| 6 | Guest dedupe leaks across tenants | CRM | Nightly duplicate-detection scan returns guest data from all tenants |
| 7 | WhatsApp Business not staged | Integrations | Meta flows not created; credentials not configured |
P1 Should-Fix
- Pricing rules stored only in memory — lost on restart
- Drip-campaign steps in memory — scheduled emails lost
- Feedback trigger queue in memory — post-stay surveys lost
- Email bounce / complaint webhook not implemented
xPrismacross-service DB access will crash at runtime on some field access- Birthday / anniversary automation incomplete (read-model sync missing fields)
Stub / TODO Register
(populated from agent's findings — to be expanded with file:line during stitching)
Integration readiness matrix
| Integration | Provider | Sandbox | LIVE | Tested |
|---|---|---|---|---|
| Payment gateway | Razorpay | ✅ | ❌ | ❌ |
| SendGrid | ⚠️ simulator | ❌ | ❌ | |
| SMS | Twilio | ⚠️ simulator | ❌ | ❌ |
| Meta Business | ⚠️ simulator | ❌ | ❌ | |
| TRAI DND | TRAI | ⚠️ simulator | ❌ | ❌ |
| E-invoice | NIC / GSTN | ❌ missing | ❌ | ❌ |
| Hardware | all vendors | 🔴 stubs | ❌ | ❌ |
Positive findings
- Comprehensive Prisma schemas for master data (Property, RoomType, Room, RatePlan, TaxConfig …)
- Well-structured CRM service modules (Loyalty, Campaigns, Feedback, Revenue, Dedup)
- Multi-channel notification infrastructure with service-mode abstraction
- Modular payment-gateway adapter pattern (Razorpay + mock + sandbox/live modes)
- GDPR/DPDP framework in guest-service (erasure, DSAR tracking)
- Guest profile coverage (basic, identity, preferences, communication log, NPS)
Recommendations
Week 1 (go-live critical path):
- Add
@CurrentTenant()decorators on all CRM controllers - Validate property ownership in property-service controllers
- Stage Razorpay LIVE credentials + end-to-end payment + refund + webhook test
- Configure SendGrid + Twilio production credentials
- Add 3 missing gateway routes
- Fix guest dedupe scan to respect tenant boundaries
Week 2 (hardening):
- Persist pricing / drip rules to Prisma / Redis
- SendGrid bounce + complaint webhook handler
- WhatsApp flows in Meta Business Platform
- Replace
xPrismawith typed service clients - Complete DPDP DSAR flow
Week 3 (load testing):
- 10 K guest segmentation + concurrent email send
- 100 + simultaneous Razorpay payment orders
- 1 K loyalty point earn / redeem transactions