BuilderBot: WhatsApp chatbot flows that do not lock you to one provider
🤖 Crear Chatbot WhatsApp en minutos. Únete a este proyecto OpenSource
At a glance
- What is it?
- BuilderBot is a TypeScript framework for building WhatsApp conversation flows with a provider-agnostic core. It suits small teams shipping an MVP, but the README is thin and the real documentation lives on the project site.
- Who is it for?
- Adopt BuilderBot if you are building a small-business or MVP WhatsApp assistant in TypeScript and want to keep the option of switching the underlying WhatsApp provider later. Do not adopt it if you need a fully documented, self-contained repository: the README defers almost everything to builderbot.app, and the repository does not document rollback or upgrade paths.
- 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 12 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
What BuilderBot solves for WhatsApp MVPs
Anyone who has wired a WhatsApp number to a backend knows the awkward part: the provider API sits between your business logic and the user, and swapping providers usually means rewriting the layer that receives and sends messages. BuilderBot's stated goal is to remove that coupling. The README describes the library as a way to "build automated conversation flows agnostic to the WhatsApp provider", which is the whole pitch in one line. You write flows once and the provider sits behind an abstraction.
The target user is explicit in the root package.json description, which calls it an open source WhatsApp bot "para MVP o pequeños negocios". That is a small team or a solo developer who needs a working assistant in days, not a platform team building a contact-center product. The topics list on the repository points at the same audience: chatbot, chatgpt, dialogflow, mongodb, mysql, nodejs, openai. The intended shape is a Node.js process that answers messages, optionally calls an LLM or a dialog system, and stores state in a database.
How the provider-agnostic flow layer is structured
The repository is a monorepo, not a single library. The top level contains packages/, starters/, docs/, a pnpm-workspace.yaml and pnpm-lock.yaml, plus lerna.json and nx.json. The root package.json is private and named @builderbot/root, with scripts that fan out across workspaces: build runs clean.lib then npx lerna run build, test runs npx lerna run test, and publishing goes through npx lerna publish. The npm package people actually install is @builderbot/bot, which is the badge target in the README.
That split matters when you debug. A failure in your flow can come from your code, from the core package, or from a provider package, and the build tooling is Lerna plus pnpm rather than npm. The preinstall script enforces this: it runs npx only-allow pnpm, so cloning the repository and running npm install will be rejected. The starters/ directory is where the scaffolded projects live, and the CLI is exposed at packages/cli/bin/cli.cjs, which is what the create command drives. The data flow implied by the README is: an incoming WhatsApp message reaches the provider adapter, the adapter hands it to your flow, your flow decides what to answer, and the answer goes back out through the same adapter. The README does not document the adapter interface itself, so the concrete method names have to come from builderbot.app.
Installing BuilderBot and running a first flow
The README gives exactly one installation command, and it is a scaffolding command rather than a package install. Run it in an empty directory:
npm create builderbot@latestThe CLI walks you through creating a project, and the result is a starter laid out like the entries under starters/ in the repository. The README does not spell out what to run next; the repository's own scripts show that package management is pnpm, since the root package.json has a preinstall script running npx only-allow pnpm. If you want to build against the monorepo itself rather than a scaffolded project, the root scripts are the entry points:
pnpm run build
pnpm run testThose two commands are defined in the root package.json and fan out through Lerna. If you would rather add the library to an existing Node.js project instead of scaffolding, the published package is @builderbot/bot, which is the name on the npm badge in the README. The README does not show a manual import example, so treat the scaffolded starter as the reference for how a flow is declared and how the provider is configured. The project also points to an official course at app.codigoencasa.com for people who want the full feature tour; the README links it directly rather than documenting the API inline.
Where BuilderBot is the wrong tool
The README is short. It covers what the library is, one install command, links to the documentation site, a course, and contact channels. It does not document the provider adapter contract, the persistence layer, retry behaviour, message ordering, or how state survives a restart. If your project needs those guarantees in writing before you start, this repository will not give them to you, and you will be reading builderbot.app instead.
There is a second, sharper limitation. The root package.json describes the project as a bot for MVPs and small businesses. Nothing in the repository contradicts that framing, and nothing suggests the maintainers are targeting high-throughput or regulated workloads. If you need delivery receipts audited, strict ordering across concurrent conversations, or a support contract, an MVP-oriented open source library is the wrong starting point regardless of how good its abstraction is. The absence of documented rollback procedures is also worth noting for anyone planning to upgrade in production: the changelog exists at CHANGELOG.md, but the README says nothing about downgrading or migrating between versions.
BuilderBot compared with a direct provider SDK
The obvious alternative is to skip the framework and call a WhatsApp provider SDK directly. The difference is not features, it is where the coupling lives. With a provider SDK, your message handlers are written against that vendor's types and webhook payloads; the code is smaller and you have the vendor's own documentation as the reference. With BuilderBot, you accept an extra abstraction layer and a monorepo's worth of packages in exchange for the option of changing provider without rewriting the flow logic. That trade is only worth it if you genuinely expect to switch, or if you want the flow definition to outlive a vendor decision.
A second alternative is a general-purpose bot framework that treats WhatsApp as one channel among many. That approach usually means adopting a larger runtime and a plugin model. BuilderBot is narrower: it is WhatsApp-first, TypeScript, and its topics list shows the integrations it cares about (openai, dialogflow, mongodb, mysql). If WhatsApp is your only channel, the narrower tool has less to configure; if you need the same flow on three channels, the broader framework is the better fit.
Maintenance, licensing and upgrade cost
The repository is not archived, and the last push was on 2026-09-04, so the codebase is being touched. Recent releases are 1.3.15 on 2025-12-09, 1.3.14 on 2025-11-28 and 1.3.13 on 2025-11-27, which shows a patch cadence rather than a major-version cadence. The root package.json version is 1.3.10 while the latest published release is 1.3.15, a reminder that the root manifest is not the version you install; the published packages are versioned through Lerna.
Upgrade cost is hard to estimate from the repository alone. The release script uses standard-version with a prerelease flag and the versioning script runs npx lerna version --force-publish, which means a release can republish packages even when they did not change. That is convenient for consumers but makes changelog reading less precise, because a package bump does not always mean that package changed. The licence is MIT, which permits commercial use and modification; the repository ships LICENSE.md, and anyone embedding BuilderBot in a product should read that file rather than rely on a summary. This is not legal advice.
Editorial conclusion
Adopt BuilderBot if you are building a small-business or MVP WhatsApp assistant in TypeScript and want to keep the option of switching the underlying WhatsApp provider later. Do not adopt it if you need a fully documented, self-contained repository: the README defers almost everything to builderbot.app, and the repository does not document rollback or upgrade paths. Before committing, verify the provider you intend to use is covered in the project documentation, and check which @builderbot packages your flow actually depends on, because the repository is a pnpm and Lerna monorepo rather than a single package.
Frequently asked questions
How do I use the menu builder in BuilderBot?
The README does not document a menu builder API. It points to builderbot.app for the full documentation and to the official course at app.codigoencasa.com, so the menu construction details are on those pages rather than in the repository.
Is BuilderBot free and open source?
Yes. The repository is licensed under MIT and ships a LICENSE.md file, and the root package.json describes it as an open source WhatsApp bot for MVPs and small businesses.
Which WhatsApp providers does BuilderBot support?
The README says flows are agnostic to the WhatsApp provider, but it does not list the supported providers. The provider list lives in the documentation at builderbot.app.
Can I use BuilderBot with OpenAI or Dialogflow?
Both appear in the repository topics alongside mongodb, mysql and nodejs, which indicates they are part of the intended integration surface. The README itself does not show configuration for either.
What is the npm package name for BuilderBot?
The published library is @builderbot/bot, which is the package referenced by the npm version badge in the README. The root package.json is named @builderbot/root and is marked private, so it is not the package you install.
Community notes