SimpleBot Admin

Create bot

Full customer onboarding (rows, secrets, tenant token, next steps): Onboard tab.

Creates the bot row. Then add knowledge (Knowledge tab) and Re-train. Bulk onboarding: node tools/sync-knowledge.mjs --seed seed/<bot_id>.json (template in seed/TEMPLATE.json).

New bots run on the customer's own OpenAI + Pinecone keys and stay keys missing until Ray sets OPENAI_API_KEY_<ID>, PINECONE_API_KEY_<ID>, PINECONE_HOST_<ID> (wrangler secret put). Tick "platform keys" only for our own bots.

Onboard a customer

Creates the stub rows, lists the secrets still missing, issues the tenant token once the bot is credential-ready, prints the next steps. Secrets, Vapi and Cal.com stay CLI steps (docs/runbooks/onboarding.md). Every step is re-read from the API on Load.

|

Add knowledge

Upload documents

PDF, DOCX, Markdown or text, parsed in this browser (nothing is stored but the text). Each document becomes one file item per section (headings, else every ~20k chars); re-uploading the same file name replaces its sections. Raw sections are a staging area — draft Q-line items from them before relying on the answers.

Google Doc source

Pulls knowledge from a Doc published to the web (File → Share → Publish to the web; paste the …/d/e/2PACX-…/pub link that dialog shows, not the editor URL, and untick "Restrict access to your organization" or the sync sees a sign-in page). Use the Title style for the Doc's own title; a Heading 1 becomes an item. Headings named after a location in the bot's locations setting scope what follows to that location; "Shared" scopes back; every other heading is one item. Re-syncing updates items in place and removes sections deleted from the Doc, then re-trains. The link is remembered in knowledge_doc_url when an owner syncs (an editor's sync leaves the saved link as it was).

No Doc yet? New content Doc creates one from the template (an intro, five topics with the questions visitors ask and a bracketed note where the answer goes), publishes it to the web, shares it with the editors below (your own address is always included), saves both Doc settings on the bot and syncs once. From then on the hourly watch picks up every change. Owner or admin.

Crawl site

Lists the pages of the customer's own site (sitemap, else links) and saves each as a url item; re-crawling a page updates its row. The origin must be in the bot's site_origins setting (Bots tab); set recrawl_days there and the crawled pages refresh on their own every N days (changed pages re-train and start a test run). Raw pages are a staging area — draft Q-line items from them before relying on the answers.

Declined questions awaiting answers

What visitors asked that the assistant declined, deduplicated, with a drafted answer where the knowledge holds the fact. Approve publishes it (into the Google Doc when knowledge_doc_id is set, else straight into knowledge) and reruns the tests; Do not answer adds it to refuse_questions. The same list goes out by email every Monday to digest_email (else the summary address).

Proposed test questions

Real questions visitors asked and the assistant answered, drawn once a month (and by the button) as candidate test cases, each expecting the passage it was answered from. Accept adds it to the test set; reject retires it. Thumbs-downs we triaged as a miss on our side land here too.

The answer log: every question, the answer given, and whether the assistant declined. Newest 100 shown; the download has them all.
One row per visitor who started the checklist or left their details: steps done out of the bot's onboarding_steps, the step they are on, and their last question.
Tours booked from the chat (tour_booking bots): upcoming ones by default. Cancel here cancels in Cal.com too and tells the CRM.

Set bot_id (top right) to see one bot in depth.

Outbound CRM events (crm_outbox, all bots and businesses; admin token only). A failed row is retried every 5 minutes with backoff, up to 8 tries; Retry sends it now with the same id.

Usage

Per-tenant counters from usage_daily (chatbot: asks, trained items; voice: calls, seconds, bookings, messages). Tenant = the bot_id above; leave it blank for all tenants (admin token only).

Embed on any site

Paste into the site's footer (WordPress: WPCode snippet or a Custom HTML block):


      

Hosted chat page: