← All templates

AI Customer Service Bot

AI-first · React + Node (Express) · 21 @molecule/* packages

FAQ chatbot with knowledge base, escalation, and learning from conversations — with built-in Stripe-backed subscription tiers

Open in Molecule

What is inside

  • auth
  • ai-chat
  • knowledge-base
  • escalation
  • analytics
  • subscriptions

Screens (14)

  • Login /login
  • Signup /signup
  • ForgotPassword /forgot-password
  • ResetPassword /reset-password
  • Dashboard /dashboard (signed in)
  • Landing /
  • Conversations /conversations (signed in)
  • ConversationDetail /conversations/:id (signed in)
  • KnowledgeBase /knowledge (signed in)
  • KnowledgeArticleDetail /knowledge/:id (signed in)
  • Analytics /analytics (signed in)
  • Settings /settings (signed in)
  • Profile /profile (signed in)
  • Notifications /notifications (signed in)

Data model (13 tables)

  • conversations — id, owner_id, end_user_id, customer_name, customer_email, channel, status, escalated, …
  • messages — id, conversation_id, sender, role, content, intent_id, model_used, citations_json, …
  • knowledge_articles — id, owner_id, title, slug, content, body_md, category, tags_json, …
  • escalations — id, owner_id, conversation_id, requested_at, agent_assigned_id, accepted_at, resolved_at, summary, …
  • feedback — id, owner_id, conversation_id, message_id, rating, comment, created_at, updatedAt
  • notifications — id, user_id, kind, type, title, body, link, metadata_json, …
  • user_settings — id, user_id, bot_tone, auto_escalate, greeting, signature, notify_escalations, notify_mentions, …
  • api_tokens — id, owner_id, label, hashed_token, scopes_json, last_used_at, created_at, revoked_at, …
  • devices — id, createdAt, updatedAt, userId, name, pushPlatform, pushSubscription, hasPushSubscription
  • payments — id, createdAt, updatedAt, userId, transactionId, productId, platformKey, data, …
  • threads — id, title, creatorId, resourceType, resourceId, closed, createdAt, updatedAt
  • thread_messages — id, threadId, userId, body, editedAt, createdAt, updatedAt
  • thread_read_status — threadId, userId, lastReadMessageId, updatedAt

API (9 handlers)

  • analytics api/src/handlers/analytics.ts
  • api-tokens api/src/handlers/api-tokens.ts
  • conversations api/src/handlers/conversations.ts
  • escalations api/src/handlers/escalations.ts
  • feedback api/src/handlers/feedback.ts
  • knowledge api/src/handlers/knowledge.ts
  • notifications api/src/handlers/notifications.ts
  • reset-password api/src/handlers/reset-password.ts
  • settings api/src/handlers/settings.ts

Subscription tiers

free / pro / team — gated by: maxConversations, maxKnowledge, advancedFeatures, canExport, retentionDays

Built from 21 @molecule/* packages

Browse all @molecule/* packages →

Required secrets

  • DATABASE_URL PostgreSQL connection string
  • ANTHROPIC_API_KEY Anthropic API key for Claude
  • OPENAI_API_KEY OpenAI API key for embeddings

The @molecule/* packages are Apache-2.0. The app you build from this template is yours to export and self-host. Licensing