Gabbex: a multi-tenant AI chatbot platform for small businesses
A no-code AI chatbot platform with RAG grounding, lead capture, and channel parity across web, Messenger, WhatsApp, and Shopify. Built for thousands of small business tenants.
The problem
Small businesses want AI chatbots without engineering teams. The existing market gives them two bad options. One: drag-and-drop builders that produce decision trees pretending to be AI. Two: developer platforms that require API integration and prompt engineering knowledge.
The gap was a real AI chatbot — RAG-grounded, multi-channel, lead-capturing — that a non-technical owner could set up in an afternoon.
What we built
Gabbex is a no-code AI chatbot platform. A small business uploads their website, FAQ, product catalog, or PDFs. Gabbex chunks, embeds, and indexes them. The owner picks the channels (web widget, Messenger, WhatsApp, Shopify), customizes the brand, and goes live. The bot answers customer questions grounded in their own content, captures leads, and hands off to a human when needed.
Architecture decisions that mattered
Multi-tenant from day one with row-level isolation. Every model has a tenant_id column. Scoping enforced at the query layer via Rails default scopes, not relied on in controllers. We never let “developer forgot to scope this query” be a possible bug — leaking another tenant’s data would end the business.
Shared pgvector index, per-tenant partitioning. All tenant embeddings live in one pgvector table, partitioned by tenant_id. Retrieval queries always include the tenant filter. Cheaper than one index per tenant, simpler to operate, and tenant isolation is enforced by query, not by infrastructure.
Channel adapters over channel-specific code paths. Each channel (web, Messenger, WhatsApp, Slack) is a thin adapter that converts inbound messages into a normalized internal format and pushes outbound responses back. The chatbot logic doesn’t know what channel a conversation is on. Adding a new channel is a 200-line adapter.
Identity resolution across channels. When a customer who chatted on the website also messages on Messenger, Gabbex can stitch the conversation history if the user can be matched (email, phone, or a unique identifier). The merged context is what the LLM sees on the next turn.
Grounded answers and citations per tenant. Each tenant gets a brand-voice configuration on top of a shared retrieval and citation system. Answers stay grounded in their content and link back to the source the user can verify. The reason citations matter is covered in our chatbot hallucination explainer.
Background-job pipeline for ingestion. Document uploads kick off Sidekiq jobs for chunking, embedding, and indexing. Tenants can keep using the bot during re-indexing. Failed jobs are visible in the admin panel with retry buttons.
Results
- Multi-tenant platform serving small businesses across e-commerce, services, and education
- Sub-second response times on web widget queries
- Channel-parity: web, Messenger, WhatsApp Business API, Shopify, all sharing one chatbot brain
- Self-service tenant onboarding with no engineering involvement required
What we learned
Multi-tenant isolation is a security property, not a feature. Every additional layer of “did we scope this query?” thinking is a layer where the team can forget. We codify it at the query layer and audit on every PR.
Channel parity is a real engineering problem. Each channel has different message-size limits, attachment support, button structures, and idle-timeout behavior. The adapter pattern is the only way to keep the chatbot core sane.
Non-technical users want to see citations too. We thought citations were a developer-trust feature. They turned out to matter for small-business owners watching their own bot answer customers — it gave them visibility into why the bot said what it said.
Stack
A Ruby backend with a Postgres database doing double duty for relational data and vector retrieval. Hosted LLMs for inference, with multi-channel adapters that talk to the major messaging platforms. Boring tools, carefully composed.
Visit the live product at gabbex.com.