Model or dataset
alfredfrancis/ai-chatbot-framework avatar
alfredfrancis/ai-chatbot-framework

ai-chatbot-framework: a self-hosted Python bot builder with ML intents and LLM fallback

A python chatbot framework with Natural Language Understanding and Artificial Intelligence.

2,168 stars749 forksTypeScriptMIT

At a glance

What is it?
This is a Docker-deployable admin dashboard plus FastAPI backend for building multi-turn chatbots without writing dialogue code. It is worth a look if you want your conversation data on your own MongoDB, and it is the wrong tool if you need a stable release or a maintained Slack channel today.
Who is it for?
Adopt it if you want a self-hosted, low-code bot builder where intents, entities and multi-turn flows live in your own MongoDB, and if you are willing to run an alpha. Do not adopt it if you need a stable release line, a supported Slack or WhatsApp integration, or a RAG knowledge base in production, since the README lists Slack and WhatsApp as coming soon and RAG as in development.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 20 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

Who this is for: teams that want bot logic in a dashboard, not in a repo

The README frames the project as an open-source, self-hosted, DIY chatbot building platform in Python, and the claim that carries the most weight is that you can create natural language conversational scenarios with no coding. That is a specific audience: someone who owns a support or FAQ bot and wants to edit intents, entities and conversation turns through a UI rather than committing YAML or Python. The feature list backs that up. Multi-turn conversations, an admin dashboard, conversation logs and API request fulfilment (tool calling) are all listed as product features, not as library primitives you would wire together yourself. The secondary audience is the team that cannot send transcripts to a vendor. Fully self-hosted is the first bullet in the features list, and the stack is MongoDB, FastAPI and a Next.js front end, so the conversation data and the NLU models stay on infrastructure you control. If your bot is a thin wrapper around one hosted LLM API and you have no dialogue state to manage, this framework asks you to run more moving parts than the problem needs.

The NLU pipeline: scikit-learn intents, Spacy entities, LLM zero-shot as a third path

The repository describes three layers of understanding rather than one. The classic layer is intent recognition and entity extraction trained with machine learning, and the tech stack names scikit-learn, Tensorflow, Keras, Spacy and python-crfsuite as the tools behind it. The second layer is embedding-based: Spacy word embeddings are listed as a feature. The third is zero shot NLU using large language models, which the topics list ties to OpenAI, DeepSeek and Langchain. That is a meaningful design choice. A trained intent classifier is cheap per request and predictable, but it only knows the intents you labelled. The zero-shot path lets an LLM classify an utterance the classifier has never seen, at the cost of a network call and a model dependency. The README does not say how the framework decides between the trained path and the LLM path, or whether you can force one. That routing question is the first thing I would read the docs for, because it determines your latency and your per-message cost. Persistent memory and context management is listed as a feature, which is what makes multi-turn flows possible, but the README gives no detail on how context is stored or trimmed.

Getting it running: Docker, MongoDB, and the alpha tag on the release line

The repository's tech stack lists Docker, docker-compose, Kubernetes and Helm, so the intended path is a container stack rather than a bare pip install. The README points to docs/README.md for setup and gives no inline commands, so I cannot quote an install sequence without inventing one. What the metadata does tell you is the version you would be deploying. The three most recent releases are v1.0.0-alpha.8, v1.0.0-alpha.9 and v1.0.0-alpha.10, published within about thirty-six hours of each other in early February 2025. Everything is on the 1.0.0 alpha line. There is no stable 1.0.0 in the release list. For a self-hosted service that holds conversation state in MongoDB, that matters: alpha releases can change schema or API shape between tags, and the cadence above suggests the maintainer was iterating quickly. The last push to the default branch is dated 2026-08-26, well after those releases, so the repository is not dormant even though the tagged release line is still pre-1.0. Pin a specific tag rather than tracking master, and read the docs directory before you build the image.

Channels: REST and Messenger are documented, Slack and WhatsApp are not

The channel list is where the README makes promises it has not kept yet. Web via REST API or a chat snippet and Facebook Messenger are stated as integrations. Slack and WhatsApp via Twilio are both marked coming soon. If your deployment target is Slack, this project does not solve your problem today, and no amount of NLU quality changes that. The REST API and embeddable snippet are the honest path: you own the front end, you post messages to the backend, and the framework handles intent, entity and context. That also means channel-specific formatting, threading and attachment handling are your responsibility rather than the framework's. The repository topics include help-wanted and hacktoberfest, which is consistent with a project that has open surface area and wants contributors to close it. Treat the coming-soon list as a roadmap signal, not a delivery date.

RAG and knowledge base answering are in development, not shipped

The features list includes Knowledge Base and FAQ answering using RAG, followed by the parenthetical in development. That is the single most important qualifier in the README. Anyone evaluating this as a documentation chatbot should read it twice. The shipped understanding story is intents, entities and zero-shot LLM classification. Retrieval over your own documents is not in that story yet. A team that needs grounded answers from a corpus today would be building the retrieval layer themselves on top of the framework, and at that point the framework is contributing dialogue state and an admin UI rather than the answering mechanism. The topic list does include langchain, which suggests the RAG work is being built on that, but the README does not describe the retrieval design, the vector store, or how retrieved passages would be combined with the intent pipeline. Those are open questions, and the documentation is thin on all of them.

The alternative: Rasa, and where the two approaches diverge

The obvious comparison is Rasa. Both are self-hosted Python frameworks for intent and entity based dialogue, and both expect you to run your own infrastructure. The difference is where the conversation definition lives. Rasa's model is file-based: you write training data and domain and story files in a repository, version them, and train from the command line. ai-chatbot-framework inverts that. Its selling point is a low-code admin dashboard where you create and train conversations through the UI, with MongoDB as the store. If your team already treats dialogue as code under review, Rasa's file-based workflow fits better and gives you a diffable history of every change. If the people editing the bot are not engineers and the bot changes weekly, the dashboard model is the reason to pick this project. The trade-off is real in both directions: UI-defined dialogue is harder to review and roll back, and file-defined dialogue is harder for a non-engineer to touch. Rasa also has a longer track record of stable releases, which matters given the alpha tag here.

Maintenance cost and the MIT licence

The operational surface is a MongoDB instance, a FastAPI backend, a Next.js front end, and whatever NLU dependencies the pipeline pulls in. The stack lists scikit-learn, Tensorflow, Keras, Spacy and python-crfsuite, which is a heavy dependency set for a container image, and Tensorflow in particular tends to drive image size and upgrade friction. You are also maintaining trained models, not just code: retraining after intent changes is part of the job. The LLM path adds an external provider dependency and its own key management. On licensing, the project is MIT, which is permissive and places few obligations on how you deploy or redistribute it. That covers this project's own code. It does not cover the models or services you connect it to, and it does not cover the licences of the Python and JavaScript dependencies in the stack, which you would need to review separately. I am not giving legal advice here; the point is simply that MIT on this repository is the start of the licence question, not the end of it.

Editorial conclusion

Adopt it if you want a self-hosted, low-code bot builder where intents, entities and multi-turn flows live in your own MongoDB, and if you are willing to run an alpha. Do not adopt it if you need a stable release line, a supported Slack or WhatsApp integration, or a RAG knowledge base in production, since the README lists Slack and WhatsApp as coming soon and RAG as in development. Before committing, verify three things in your own environment: that the docker-compose stack starts against your MongoDB, that the NLU pipeline you plan to use is trained and reachable from the admin UI, and which LLM provider and keys the zero-shot path expects.

Official sources

  1. alfredfrancis/ai-chatbot-framework on GitHub
  2. Issues
  3. License: MIT
  4. README
  5. Releases
Community notes

Community notes