Poe

An API to rule them all: Adding dynamic UIs to Poe bots

We built a simple API that lets Poe bot developers configure user interfaces for their bots in Poe's iOS, Android and Web clients without hassle.

TL;DR

We built an API that lets bot developers and model providers create interfaces to let users interact with the models using dynamic input types instead of relying purely on text.

My role

I led this project as part of Poe’s Developers Team. I was the PM, lead designer and front-end engineer, working with product teams, product and ML engineers, as well as multiple model providers.
Loading video...
The API supports many different UI elements and even conditional rendering to give developers full flexibility.

Some context

Poe’s biggest competitive advantage is letting users interact with many model types and providers in just one place, but our UI was not dynamic enough to let users interact with many of the models capabilities.

We wanted to make it more intuitive for users to access these model features without adding too much overhead work for bot developers and keeping a high bar for the quality of the UI that our users were going to use.

What we built

Our solution was coming up with a declarative JSON API that gives bot developers access to a set of prebuilt components (e.g. dropdowns, sliders, file pickers, etc) that they can then can use to augment the user input without too much effort on their side. They just specify a JSON object in their bot definition and we handle the rest.

Some of the challenges we faced:

  • Coming up with a simple declarative API that was powerful but straightforward. It includes a set of prebuilt components, attachment capabilities and conditional rendering logic based on the user’s input.
  • Building support for a server-driven UI pattern that worked on our different clients (web/iOS/Android) while keeping backwards compatibility into consideration
  • Building this on top of our existing bot architecture and handle backwards compatibility with the Poe API

Though an early version is out, there’s still a long roadmap what we’re working towards! You can see an example of this on https://poe.com/Pika

Loading video...
Besides basic UI elements, we built some other components tailored to specific common need like aspect ratio and file uploading.