Stell: LLM-Powered Conversational Bot Framework
- Seed
- PoC
- MVP
- Production
- Chasing perfect
Framework for teams that need production-grade bots with deterministic YAML scenarios. LLM handles intent recognition and entity extraction without model training.
What we ingest
What we ingest
Stell runs on files you write. The dialogue flows and intents live in YAML, with an optional FAQ module as a separate knowledge source.
For years these bots were built on Rasa, which needed labeled example phrases per intent to train a classifier. Stell drops that input: you describe the scenarios, and the live user message arrives through any connector. Chatwoot plugs in too, so a human operator can take over a dialogue at any point.
What we do with it
How we build it
An LLM does the language understanding, so there is no model to train. It recognizes the intent and pulls out the entities through PydanticAI, which keeps the provider swappable.
The processing chain below runs in a fixed order. Story resolution is the hard part: one story can branch into another, and an action can trigger a new intent, which creates recursive dialogue paths.
Dialogue history sits in PostgreSQL through JIMS, e8's data framework, and the storage layer stays loosely coupled, so another database can take its place.
- 01 Message intake
- 02 Intent recognition (LLM)
- 03 Entity extraction (LLM)
- 04 History lookup
- 05 Action dispatch
- 06 Story resolution
- 07 Response
Stack

What comes out
How it answers
Stell was tested against a large production scenario that previously ran on Rasa, and it handled the same dialogue flows with equivalent coverage. The operational difference is the training step: there is no longer one.
Teams write and update YAML scenarios without collecting labeled phrases, running training jobs, or managing model versions. Multilingual support comes from the underlying LLM.
One caveat: this was a working test against the old scenario. It was not an exhaustive benchmark, so read the parity as directional.