Write once. Render as public help page (`/help/<org>`), AI chatbot RAG context, in-app `kb.search()`. Honest about the gaps.
Most help-center tools give you one surface. Sendora KB powers three for real today: public SSR'd help page at `sendoracloud.com/help/<your-org>`, AI chatbot grounding via gpt-oss:20b RAG, in-app SDK `kb.search()`. Honest about what's NOT built: custom-domain on the public page, auto-link to incoming Support tickets, KB-read timeline inside ticket detail, helpful-vote endpoint (the column exists but no POST route), `kb.article_viewed` event emitted to the analytics bus (view bump is a column update, not an event).
Features
- Articles + categories + tags + slug control + status — CRUD per project.
kb_articlestable 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
viewscolumn). Honest: no custom-domain support today. - AI chatbot grounding — articles auto-retrieved via Postgres
ILIKEover title + body, top-5 reranked + top-3 fed as RAG context to gpt-oss:20b on Ollama Cloud. Citations returned. Implementation inchatbot/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 —
viewscolumn bumped fire-and-forget. Honest: the bump is a column update; nokb.article_viewedevent is written to the platformeventstable today, so KB reads don't feed Analytics / Audiences / Workflows. - Helpful-vote column —
helpful_countcolumn exists onkb_articles. Honest: there's noPOST /kb/articles/:id/helpfulendpoint 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_viewedanalytics 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.
Start in minutes. Scale without switching tools.
The free tier covers most side projects. Every module is turn-key and every SDK is first-party.