You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
An enterprise-ready, fully customizable chatbot platform that lets businesses deploy an AI support agent trained on their own knowledge base — with a no-code embed widget, conversation inbox, and team management dashboard.
ServiceMate is a full-stack SaaS platform that enables businesses to deploy an intelligent, AI-powered customer support chatbot trained on their own content. Instead of generic bot responses, ServiceMate learns from your website, documents, and FAQs — and responds with contextually accurate, brand-aligned answers.
The platform provides:
A no-code dashboard to train the AI with your content
A lightweight embed snippet that drops into any website in seconds
A conversation inbox to monitor and reply to real visitor chats
Enterprise SSO authentication via Scalekit
Topic-based behavior sections to control tone, allowed topics, and escalation rules per domain
Screenshots
Landing Page
Full-width hero section with product headline, CTA buttons, and product preview.
Dashboard — Chatbot Playground
Three-panel view: live chat simulator on the left, appearance config (color picker, welcome message) on the right, embed code at the bottom.
Features
AI & Knowledge Engine
Feature
Description
RAG (Retrieval-Augmented Generation)
All responses are grounded in your knowledge sources — not hallucinated
Website Scraping
Paste any URL; the platform scrapes and indexes the content via ZenRows
File Upload
Upload CSV or text files as knowledge sources
Text Input
Type or paste content directly as a knowledge entry
Auto-Summarization
Long documents are automatically condensed by Gemini before storage
Token Management
Conversation history is summarized at 6,000 tokens to stay within model limits
Google Gemini 2.5 Flash
State-of-the-art multimodal LLM for fast, accurate responses
Chatbot Behavior
Feature
Description
AI Persona ("Sarah")
Consistent, friendly support persona with defined behavioral guardrails
Sections
Topic-based behavior zones — define tone, allowed topics, and blocked topics per section
Tone Control
Four tones per section: Strict, Neutral, Friendly, Empathetic
Escalation
Bot can create support tickets when queries exceed its capabilities
Conversation History
Full message thread preserved per visitor session
Customization & Branding
Feature
Description
Color Picker
Match the widget accent color to your brand
Welcome Message
Custom greeting shown at the start of each conversation
Embed Code Generator
Auto-generated <script> snippet for any website
Conversation Management
Feature
Description
Conversations Inbox
Browse all visitor chats in real time
Human Handoff
Agents can send manual replies directly into any conversation
Visitor Identification
Visitors automatically named by IP address (e.g., #Visitor192)
Enterprise & Team Features
Feature
Description
Enterprise SSO
Powered by Scalekit — supports SAML, OIDC, and Google Workspace
Team Invitations
Invite teammates with role assignments
Organization Support
All resources are scoped to an organization
Secure Sessions
HTTP-only cookies with 7-day expiry
JWT Widget Tokens
Short-lived (2h) JWT tokens for embedded widget authentication
Developer & Embed
Feature
Description
Zero-dependency Embed
Single <script> tag — no npm install required
Domain Allowlisting
Restrict which domains can render your widget
postMessage API
Widget communicates height changes to the host page for seamless iframe resizing
CORS-safe Public API
Dedicated /api/chat/public endpoint for cross-origin chat requests
Tech Stack
Frontend
Next.js 16 — App Router, Server Components, API Routes
# Generate migration files from schema
npm run db:generate
# Apply migrations to your Neon database
npm run db:migrate
# (Optional) Open Drizzle Studio to browse your database
npm run db:studio
user (1) ──── (N) metadata
user (1) ──── (N) knowledge_source
user (1) ──── (N) sections
└───── (N) knowledge_source [via source_ids array]
user (1) ──── (1) chatBotMetadata
user (1) ──── (N) team_members
user (1) ──── (N) widgets
└── (N) conversation
└── (N) messages
Tables
user
Column
Type
Notes
id
UUID
Primary key
organization_id
VARCHAR
Scalekit org ID
name
VARCHAR
Display name
email
VARCHAR
Unique
image
VARCHAR
Avatar URL
created_at
TIMESTAMP
Auto-set
knowledge_source
Column
Type
Notes
id
UUID
Primary key
user_email
VARCHAR
Owner reference
type
ENUM
website | upload | text | docs
name
VARCHAR
Display name
status
ENUM
active | training | error | excluded
source_url
VARCHAR
URL (for website type)
content
TEXT
Scraped / raw content
meta_data
JSONB
Flexible metadata
sections
Column
Type
Notes
id
UUID
Primary key
user_email
VARCHAR
Owner reference
name
VARCHAR
Section display name
description
TEXT
Context for the AI
source_ids
UUID[]
Linked knowledge sources
tone
ENUM
strict | neutral | friendly | empathetic
allowed_topics
TEXT[]
Topics the bot may answer
blocked_topics
TEXT[]
Topics the bot must refuse
status
ENUM
active | draft
conversation
Column
Type
Notes
id
UUID
Primary key
visitor_ip
VARCHAR
Visitor's IP address
name
VARCHAR
Auto-generated (e.g. #Visitor192)
chatbot_id
VARCHAR
Widget/bot identifier
messages
Column
Type
Notes
id
UUID
Primary key
conversation_id
UUID
FK → conversation
role
VARCHAR
user | assistant
content
TEXT
Message body
Embed Widget Integration
Embedding ServiceMate on any website takes one line of code:
<!-- Add before closing </body> tag --><scriptsrc="https://your-domain.com/embed/widget.js"
data-widget-id="YOUR_WIDGET_ID"
data-token="YOUR_JWT_TOKEN"
async></script>
The widget:
Renders a floating chat button in the bottom-right corner
Expands into a full chat interface on click
Automatically resizes its iframe via the postMessage API
Authenticates all requests using a short-lived JWT token (2-hour expiry)
Can be restricted to specific domains via the Domain Allowlist setting in the dashboard
Generate an Embed Token
POST /api/widget/session
Content-Type: application/json
{
"widgetId": "your-widget-uuid"
}
SCALEKIT_REDIRECT_URI updated to production domain
JWT_SECRET is a strong, unique secret (min 32 chars)
GEMINI_API_KEY has sufficient quota
ZENROWS_API_KEY is active
Run npm run db:migrate against production database
NPM Scripts
Script
Description
npm run dev
Start development server with hot reload
npm run build
Build optimized production bundle
npm start
Start production server
npm run db:generate
Generate Drizzle migration files from schema
npm run db:migrate
Apply pending migrations to the database
npm run db:push
Push schema directly to DB (no migration file)
npm run db:studio
Open Drizzle Studio visual database browser
Built with Next.js, Google Gemini, and Scalekit
About
An enterprise-ready, fully customizable chatbot platform that lets businesses deploy an AI support agent trained on their own knowledge base — with a no-code embed widget, conversation inbox, and team management dashboard.