Quivio CRM Service
Multi-Tenant CRM & Campaign Platform
Multi-tenant CRM backend powering campaigns, segmentation, automation, and SMS/email workflows. Supports 50+ tenants with isolated data and config.
Impact — Campaign delivery throughput 2x after pipeline and Redis optimizations; multi-tenant isolation with zero cross-tenant data leakage.
Problem
A multi-tenant CRM needed strict data isolation across 50+ tenants while campaign pipelines had to scale without overloading primary databases.
Approach
NestJS with tenant-aware routing and dynamic MySQL connections, PostgreSQL for shared control data, Azure Event Hubs for campaign events, Redis for cache/rate limits, and Airflow for orchestration.
What shipped
- NestJS backend serving 50+ tenants with dynamic MySQL connections and tenant-aware routing
- PostgreSQL for central data; event-driven pipelines via Azure Event Hubs—doubled campaign throughput
- Apache Airflow DAGs for campaign orchestration; reduced manual runbooks by ~40%
- Redis for caching and rate limiting; cut DB load by ~30% on high-traffic endpoints
- Twilio & SendGrid with webhook handling; improved delivery tracking and reduced failed-send rate
- Structured logging and Swagger/OpenAPI; shortened onboarding for new devs by ~50%
Stack
Related writing
- Multi-Tenant Data Isolation Strategies
Schema-per-tenant, shared schema with tenant_id, and dynamic connections—trade-offs for CRM and SaaS backends.
- Redis for Cache, Locks, and Rate Limiting
Three production patterns that cut database load, prevent race conditions, and protect APIs from abuse.
- Why Event-Driven Architecture Matters for Scalable Backends
How Kafka-style event pipelines reduce coupling, improve resilience, and help teams ship faster without breaking production.