Operate
Knowledge Base
Markdown-authored help articles searchable from the chatbot + the customer portal. Per-project. Versioned.
Features
- **Articles + categories + tags + slug control + status** — CRUD per project. `kb_articles` table holds title + slug + body + categoryId + tags[] + status (draft/published).
- **Public help center at `sendoracloud.com/help/<your-org>`** — SSR'd, 60s revalidate, indexed by Google. View bump on public-article fetch (auto-increments `views` column). **Honest:** no custom-domain support today.
- **AI chatbot grounding** — articles auto-retrieved via Postgres `ILIKE` over title + body, top-5 reranked + top-3 fed as RAG context to gpt-oss:20b on Ollama Cloud. Citations returned. Implementation in `chatbot/reply.ts`.
- **In-app search SDK** — `kb.search(query)` on Web 2.16+ and RN 0.18.2+. Drop into your app's help menu.
- **View counters auto-increment on public fetch** — `views` column bumped fire-and-forget. **Honest:** the bump is a column update; no `kb.article_viewed` event is written to the platform `events` table today, so KB reads don't feed Analytics / Audiences / Workflows.
- **Helpful-vote column** — `helpful_count` column exists on `kb_articles`. **Honest:** there's no `POST /kb/articles/:id/helpful` endpoint today; the column is unused.
- **Markdown body** — articles stored as Markdown text; renderer is on the consumer (public help page, SDK consumer).
- **Honest non-features:** no automatic ticket deflection (Support inbox does NOT auto-suggest KB articles for incoming tickets); no "operators see which articles a user read before opening a ticket" timeline; no custom-domain help center; no `kb.article_viewed` analytics event.
Common use cases
- Replace Intercom Help Center for the public-docs + AI-bot-RAG combo — the chatbot RAG is the differentiated piece.
- Self-serve docs that the Contact Widget's AI bot can answer from before opening a ticket.
- In-app help menu using `kb.search()` — render results inline in your own UI, no Sendora dashboard required.
Knowledge base
Search articles
FREEPublic search across all published articles in the project's KB. Returns title + slug + matched-snippet preview.
const results = await sendora.kb.search({ q: "reset password", limit: 5 });List all articles
FREEPull every published article (paginated). Useful for site-map generation, static-site rendering, or bulk export.
curl "https://api.sendoracloud.com/api/v1/orgs/<ORG_ID>/kb/articles?page=1&pageSize=100" \
-H "x-api-key: pk_prod_…"Author an article
FREEServer-side authoring. Body accepts Markdown; the dashboard renders to HTML. Categories and tags let you scope search results.
curl -X POST https://api.sendoracloud.com/api/v1/orgs/<ORG_ID>/kb/articles \
-H "x-api-key: pk_prod_…" \
-d '{
"title": "How to reset your password",
"slug": "reset-password",
"body": "## Steps\n1. Open the app\n2. Tap Forgot password…",
"categoryId": "cat_billing",
"published": true
}'