Organization, Multi-Tenancy & Products
Organizations are the fundamental unit of tenancy in Eloquent. Each organization gets fully isolated resources, its own users, and its own installed products.
Multi-Tenancy Model
When an organization is created, the platform automatically provisions isolated resources across all data stores:
| Data Store | Isolation Pattern |
|---|---|
| PostgreSQL | Dedicated schema per organization |
| ClickHouse | Dedicated database per organization |
| Message Queue | Dedicated storage per organization |
| Redis | Isolated key space per organization |
No cross-organization data access is possible. The API Gateway enforces organization context on every request through JWT claims.
Holding Company Model
Eloquent supports a holding company model where a single platform deployment serves multiple independent companies. Each company is a separate organization with:
- Its own users and roles
- Its own installed products
- Its own data in isolated schemas and databases
- Its own subscription and billing
This is ideal for conglomerates, government entities managing multiple departments, or managed service providers hosting multiple clients.
Managing Organizations
Organizations Page
The Admin App organizations page shows:
- Summary cards — total orgs, active subscriptions, trialing, past due, cancelled, no subscription
- Product filter — filter by product type (Eloquent, Aafya, Shop Assist, Consumer, Custom)
- Sortable table — ID, title, product, status, subscription, template, installed products, user count, created date
Creating an Organization
Click "New Organization" and fill in:
| Field | Description | Required |
|---|---|---|
| Name | Organization display name | Yes |
| Domain | Primary domain (e.g., example.com) | Yes |
| Product | Initial product type | Yes |
| Status | Organization status | Yes |
On creation, the platform provisions all isolated schemas, databases, and storage for the new organization.
Editing an Organization
The edit dialog has four tabs:
Basic Info
- Title, domain, status
Address
- Address lines, city, state, country, ZIP code
Subscription
- Plan name (e.g.,
pro_monthly,enterprise) - Seat count
- Platform: Stripe or Custom billing
- Status: Active, Trialing, Past Due, Cancelled
- Read-only fields: Stripe Customer ID, Stripe Subscription ID, trial end date, current period end
- If cancelled: shows cancel date and reason
- If past due: shows grace period end date with warning
Roles
- Custom role names (up to 20)
- Default roles:
userandadmin(always present)
Enabling and Disabling Organizations
Organizations can be toggled between enabled and disabled states from the Users page. A disabled organization prevents all user access while preserving all data.
Product Management
Available Products
| Product | Description |
|---|---|
| Eloquent | Full AI platform |
| Aafya | Healthcare AI assistant |
| Done | Task and project management |
| Fahim | Specialized AI assistant |
| Shop Assist | E-commerce chat |
| CRM | Customer relationship management |
Installing Products
From the Organizations table, click the package icon on any organization row to open the product management dialog.
Each product shows its current status:
- Installed (green badge with checkmark)
- Not Installed (gray badge)
Click "Install" to begin installation. The dialog shows real-time progress:
- Progress bar — completed vs. total artifacts
- Current step — which artifact is being provisioned
- Artifact log — scrollable list showing each artifact's status:
- Checkmark = completed
- Spinner = in progress
- X = failed (with error message)
- Dash = skipped
- Duration in milliseconds
Installation provisions all required artifacts for the product within that organization: entity definitions, skills, agents, and related configuration.
Uninstalling Products
Click "Uninstall" on an installed product. A confirmation dialog appears. Uninstalling removes all product-specific artifacts from the organization.