ChatGPT Dots by OpenAI: Building Expressive AI Assistants with Rive Animation Character designer and Rive animator Praneeth Kawya Thathsara outlines a design approach for expressive AI assistant interfaces, mapping application states such as idle, listening, processing, working, speaking, awaiting approval, complete, and error to corresponding character behaviors and supporting UI. The piece proposes an illustrative control contract separating activity, emotion, and speech channels so developers can drive Rive animations from real application events, while noting the application must remain the source of truth for state. AI assistants can have a great conversational experience and still leave users wondering: is it listening, working, waiting for me, or finished? OpenAI’s ChatGPT Dots announcement raises an interesting design question for developers building AI products: how should an assistant communicate its activity beyond text? I’m Praneeth Kawya Thathsara , a character designer and Rive animator behind Mascot Engine https://mascotengine.com . I create interactive mascots and animated faces for AI companion apps, websites, AI toys, and robot screens. This article explores how an expressive character can support an AI interface—and how to structure its animation so developers can connect it to real application events. In the announcement, OpenAI describes Dots as assistants that learn from feedback, connect with apps, and work toward a user’s goals over time. That creates more interface states than a simple question-and-answer exchange. An assistant might be: For your own AI product, these states need clear visual communication. An animated face or mascot can complement status messages and controls. Its expression gives users another way to recognize what is happening. This article discusses independent AI product design. It does not describe a custom mascot integration with ChatGPT Dots. Before animating a character, define the events your application can reliably detect. A useful starting point is: | Application state | Character behavior | Supporting interface | |---|---|---| | Idle | Gentle breathing and occasional blinking | Ready indicator | | Listening | Attentive expression | Microphone status | | Processing | Subtle focused motion | Processing message | | Working | Restrained activity loop | Task progress | | Speaking | Audio-responsive mouth movement | Captions or transcript | | Awaiting approval | Patient, settled pose | Explicit approval controls | | Complete | Brief acknowledgment | Result or completion message | | Error | Clear change in expression | Explanation and recovery action | The application should remain the source of truth. A completion animation should run when the task is actually complete. A listening expression should correspond to the microphone’s real state. At Mascot Engine https://mascotengine.com , this mapping is part of how I plan interactive AI character animation. It helps turn an attractive character into a useful interface component. A rendered video plays a predetermined sequence. An interactive character needs to respond to changing inputs. In Rive, a character can be prepared with animation states and controls that your application drives. Depending on the project, the animation system might support: The exact implementation depends on your chosen Rive runtime and target platform. Agree on those details before finalizing the animation file. One practical design decision is to keep these controls independent. Activity describes what the assistant is doing. Emotion controls its expression. Speech controls its mouth movement. For example, your companion may be speaking with a concerned expression. Changing the expression should not stop the mouth from responding to audio. Likewise, a happy expression should not automatically trigger a speaking animation. Here is an illustrative control contract you could adapt with your animator: activity: idle | listening | processing | working | speaking emotion: neutral | happy | empathetic | concerned | surprised mouthOpen: 0–1 lookX: -1–1 lookY: -1–1 celebrate: one-time event reset: one-time event These are proposed application controls, not reserved Rive names or a universal API. Their names, types, ranges, and mappings should be documented for your specific file. Keeping responsibilities separate makes it easier to extend the character as your product grows. For a speaking AI character, two approaches are worth discussing. The application supplies an audio-level value that controls how far the mouth opens. This can suit a simple robot face or a stylized companion. It communicates speech activity without requiring a detailed set of mouth shapes. The neutral value should produce a closed or resting mouth. Visemes are visual mouth poses associated with speech sounds. If your speech pipeline provides suitable timing information, the application can use it to select mouth poses. This requires an agreed mapping between the speech system and animation file. The developer and animator should document what each value means. Choose the approach around the product’s needs, available speech data, and character style. More mouth poses are useful only when the application can drive them appropriately. A website mascot and a robot-screen face have different constraints. For a website, consider: For an AI robot or desktop companion, consider: A small robot display may benefit from simple, readable eyes and mouth shapes. A larger companion app can support more detailed character acting. At Mascot Engine https://mascotengine.com , I work on both custom mascots and animated robot faces, with the design and animation scope shaped around the intended screen. Developers should not have to guess how a character works. A useful handoff includes: Also discuss how transitions should behave when events arrive quickly. What happens if the assistant begins speaking while its processing animation is still entering? What happens if the user interrupts speech? What should reset do? Answering these questions early prevents integration surprises. Review the character inside the application, as well as in the animation editor. Useful checks include: Pay particular attention to combinations of controls. A character can look correct in individual previews but behave differently when activity, emotion, and speech inputs change together. ChatGPT Dots by OpenAI offers a useful starting point for thinking about ongoing interactions with AI. For developers building their own assistants, an expressive character is one possible way to make those interactions more recognizable. The strongest animation choices serve the product: attentive movement while listening, readable speech behavior, and clear acknowledgment when something changes. If you need a Rive animator for an AI companion, interactive website mascot, AI toy, or robot face , I can help through Mascot Engine https://mascotengine.com . My work includes: Send me your product idea, existing artwork if you have it, target platform, required states, timeline, and budget. We can define a practical first milestone. Website: MascotEngine.com https://mascotengine.com WhatsApp: Discuss your AI character project https://wa.me/94717000999 Your AI has a voice. Let’s give it a face. Written by Praneeth Kawya Thathsara, creator of Mascot Engine. This is an independent article. Mascot Engine is not affiliated with or endorsed by OpenAI.