Customer Engagement Platform for Email, Push Notifications, & SMS
The world's leader for mobile push notifications, web push, SMS, email and in-app messaging. Trusted by 2 million+ businesses to send 12 billion+ messages per…
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
SiteBot — Website AI Assistant (Portfolio Demo)
Small businesses get the same repetitive questions on their website: hours, pricing, insurance, booking. SiteBot is a embeddable chat assistant that answers only from the company’s own documents, cites the source, and captures leads when it cannot help or detects buying intent.
Sample business: Bright Smile Dental Clinic — entirely fictional sample data for this demo.
• Visitors leave when they cannot find answers quickly.
• Owners cannot staff live chat 24/7.
• Generic chatbots invent facts; SiteBot is doc-grounded and refuses to guess.查看完整 README ↗Small businesses get the same repetitive questions on their website: hours, pricing, insurance, booking. SiteBot is a embeddable chat assistant that answers only from the company’s own documents, cites the source, and captures leads when it cannot help or detects buying intent.
Sample business: Bright Smile Dental Clinic — entirely fictional sample data for this demo.
| Area | Behavior |
|---|---|
| Knowledge | Ingest Markdown, PDF, HTML, and plain text into a local retrieval index |
| Answers | Offline BM25-style search (MiniSearch) + templated excerpts with source citations |
| LLM (optional) | Set LLM_BASE_URL, LLM_API_KEY, LLM_MODEL for OpenAI-compatible APIs |
| Honesty | Low-confidence or missing docs → “I don’t know” + lead form |
| Leads | Name, email, need; email validation; SQLite + CSV by default |
| Integrations | Pluggable Google Sheets and HubSpot adapters (disabled by default) |
| Embed | One script tag adds a chat bubble |
| Admin | Conversations, leads, re-index, edit greeting & handoff email (HTTP Basic when ADMIN_PASSWORD is set) |
| Safety | Rate limits, injection-resistant LLM system prompt, no secrets in widget, CORS allowlist |
| Demo site + widget | Answered question | Lead fallback | Admin |
|---|---|---|---|
<script src="https://YOUR-DEPLOYED-HOST/widget.js" data-bot-id="bright-smile-demo"></script>
Locally:
<script src="http://localhost:3000/widget.js" data-bot-id="bright-smile-demo"></script>
npm install
npm run demo
npm run demo builds the retrieval index and starts Next.js. No API keys required.
ADMIN_PASSWORD | Behavior |
|---|---|
| Unset (default for public demo) | /admin is read-only demo mode: sample leads/conversations only, no settings or re-index writes |
| Set | /admin and /api/admin/* require HTTP Basic auth (any username, password = ADMIN_PASSWORD); real leads and writes enabled |
Do not expose a password-protected admin on the public internet without TLS (Vercel provides HTTPS).
npm test
npx playwright install chromium
npm run screenshots
data/bots/bright-smile-demo.json to a new bot id (e.g. my-shop.json).docsPath at your folder of .md, .txt, .html, .pdf files.BOT_ID=my-shop npm run ingest.data-bot-id="my-shop".allowedOrigins in the bot JSON (or set ALLOWED_ORIGINS env var).Re-index from the admin UI or:
curl -X POST http://localhost:3000/api/admin/reindex -H 'Content-Type: application/json' -d '{"botId":"bright-smile-demo"}'
export LLM_BASE_URL=https://api.openai.com/v1
export LLM_API_KEY=sk-...
export LLM_MODEL=gpt-4o-mini
npm run demo
Answers still use retrieved passages in the prompt; the system instructions forbid hallucination.
Default: data/leads.db (SQLite) and append-only data/leads.csv.
Google Sheets (off by default): see docs/integrations/google-sheets.md
HubSpot (off by default): see docs/integrations/hubspot.md
vercel.json included).ADMIN_PASSWORD unset for the portfolio demo (read-only admin with sample data).ALLOWED_ORIGINS to your customer sites (comma-separated URLs). Vercel preview/production URLs are added automatically..env.example.https://<project>.vercel.app/widget.js in the embed snippet.Vercel notes:
npm run build runs ingest and commits/updates data/index/ — search works on serverless without runtime writes.persistenceNote explaining this. For production, enable Sheets/HubSpot sinks or a hosted database.public/widget.js — embeddable bubble (no secrets)data/sample-business/ — fictional Bright Smile docsdata/index/ — generated retrieval index (created by npm run ingest)src/app/api/ — chat, leads, widget config, admin APIssrc/lib/ — ingestion, retrieval, offline/LLM answering, lead storeMIT (portfolio demo).