White-Label AI Chatbot Development for Resellers
A white-label AI chatbot is a platform that a reseller purchases once and sells to their own customers under their own brand. Each end customer gets an isolated instance with their own data, their own branding, and their own integrations. Key requirements for such architecture: multi-tenancy with complete data isolation, flexible branding without redeploy, simple onboarding for reseller customers without technical expertise.
Multi-tenant Platform Architecture
Each tenant (reseller's customer) receives:
- Isolated vector store for their knowledge base
- Own set of system prompts and tone
- Separate API keys to LLM (or billing through platform)
- Individual integrations (own Telegram bot, own widget)
# Tenant-aware request routing
class TenantRouter:
def __init__(self, tenant_config_store):
self.configs = tenant_config_store
def get_agent(self, tenant_id: str) -> ChatAgent:
config = self.configs.get(tenant_id)
return ChatAgent(
llm_config=config.llm_settings,
vector_store=VectorStore(namespace=f"tenant_{tenant_id}"),
system_prompt=config.custom_system_prompt,
tools=config.enabled_tools,
branding=config.branding
)
For data isolation in vector store: Qdrant supports namespaces out of the box, Pinecone — through separate indexes, Weaviate — through tenant isolation API (from version 1.20).
Branding Configuration Module
Reseller and their customers manage branding through admin-panel without code:
- Logo upload, color scheme selection (primary/secondary colors, fonts)
- Bot name, welcome message, avatar
- Tone: formal / neutral / friendly
- Set of quick replies (suggested replies)
Widget renders with runtime CSS variable injection — one bundle for all tenants.
Reseller Customer Onboarding
Target scenario: reseller customer (e.g., small online store) should connect the chatbot in 15 minutes without a developer. Process:
- Registration via reseller form
- Knowledge base upload: PDF files, website URL (crawler), FAQ as CSV
- Automatic vector index creation (chunking → embeddings → upsert)
- Widget configuration via drag-and-drop editor
- Copy embed-code to website
Average time for complete onboarding: 12–20 minutes for basic configuration.
Monetization and Pricing
Reseller sees in their panel: token/request count per each tenant, billing aggregation, ability to set markup over cost.
| Monetization Model | Description |
|---|---|
| Per-message | Fixed price per message |
| Per-token | Pass-through token cost + markup |
| Subscription + overage | Limit in plan + charge for exceeding |
| Flat fee per tenant | Fixed monthly fee per tenant |
Analytics and Monitoring
Reseller sees aggregated statistics, each tenant — their own:
- Number of conversations, average messages per session
- Containment rate, topN unanswered questions
- CSAT per session
- Token usage / cost
Technology Stack
Frontend widget: React + iframe embed or Web Component for style isolation. Admin panel: React SPA. Backend: FastAPI or Node.js. LLM: OpenAI GPT-4o / Anthropic Claude / self-hosted Llama via vLLM. Vector store: Qdrant (self-hosted) or Pinecone (managed). Tenant DB: PostgreSQL with row-level security.
| Configuration | Development Time |
|---|---|
| MVP: widget + RAG + basic admin | 5–7 weeks |
| Full platform with billing and analytics | 9–13 weeks |
| Enterprise: SSO, on-premise, custom LLM | 14–20 weeks |







