Introducing Agenda — an open source configuration language for building bots!

Uri Valevski
3 min readMay 3, 2022

--

We at Hyro have been building >100 of bots in the last 4 years. We’ve come to a couple of conclusions:

  1. NLP is at a stage where collecting training data / examples should no longer be needed.
  2. The true bottleneck of the conversation is the APIs and knowledge the bot has, not the understanding part.
  3. Focusing on actions and knowledge abstracts away conversation flow design. In other words, it is better to look at goal dependencies because it abstracts away time and order of things the bot should do.
  4. It is prefferable to model the language rather than the use case, or figure out what was said regardless of what the bot can do with it, because then you get much more reuse of the same code.

Corollaries:

  1. Intents and conversation trees are not the way to design robust conversational interactions.
  2. The bot configuration language should be isomorphic (i.e. have the same shape) as your APIs and database.

So we built our system this way, and then at some point we said — why not just scale it up much better? Why not just let anyone define their bots, in whatever vertical, for whatever use case, in voice or text?

So we created “Agenda”.

Agenda is a configuration language for bots which basically allows you to define actions and their requirements, alongside knowledge.

It generates a bot for you with little to no training data, that tries to perform certain actions. Let’s see an example of how this looks like.

This is a configuration for a bot that helps the user order pizza.

The actions part lists everything the bot can / wants to achieve, in some sense these are its abilities and desires.

Some abilities are only relevant if certain things are known. In this example the bot will only try to order a pizza if it knows the user (a) wants to order a pizza and (b) isn’t vegan (because maybe this place doesn’t sell vegan pizzas. This is illustrated explicitly under the when clause for that action.

Implicitly it means that the bot will ask at a point in the conversation that makes sense — “are you vegan?”, but the cool thing is, we didn’t have to take care of it. It was enough to illustrate the logical dependency through the when clause.

This kind of declarative approach abstracts away much of the pains of building bots today, via conversation trees or state machines, similarly to how Kubernetes speaks about a desired state of cloud deployment, not how to reach it.

That’s not the only cool thing Agenda can do. Agenda bots can also do context switching. So we can have a conversation like this:

We can see a couple of cool things here:

  1. We can track the internal state of the bot, that’s what you see on the right.
  2. The bot automatically acknowledges information it received, without the user need to bother with it in the configuration, these are the “Alright” prefixes you see.
  3. In the last utterance, the bot actually gives an acknowledgement, answers a question, then resumes the flow by asking for a detail it needs, all in one utterance.
  4. The acknowledgement can be customized using a templated string, which gives us a nice ability to say “Nice to meet you Bob!”, and not just the automatic “Alright”/”Cool”.

Agenda is only taking its first baby steps, so some things are still changing and we’re iterating on quality and whatnot, but if you find this interesting, check out our repo at https://github.com/hyroai/agenda and API docs at https://hyroai.github.io/agenda/.

If you feel like you could use this in a business context, we also have a managed version that which does voice and also has a slick web UI. Shoot us an email at contact@hyro.ai if you want to try it!

Thanks for listening :)

--

--

Uri Valevski
Uri Valevski

Written by Uri Valevski

Formerly: Co-founder/CTO of hyro.ai, Googler

No responses yet