I built an assistant character in Rive that's wired into the product's actual state — not a loop on top of the UI, but a face that responds in real time. It blinks and breathes while idle, leans in the moment you start typing, jumps when the answer lands and winces when something goes wrong.
Every expression is driven by data binding, so the character mirrors what the assistant is actually doing — part of the product, not a sticker on top of it.
Under the hood
One Rive state machine: Idle · Typing · Correct · Wrong · Jump. Every mood is driven by data binding (typing / correct / wrong / jump), so the face reads the assistant's actual state — no canned loops.
Built a custom @Rive component for the About section of my agency site.
The lanyard and badge are fully interactive. You can grab them, throw them around, and spin the badge 360° to see both sides.
It doesn’t necessarily need to do all of that, but that’s kind of the point.
Small interactive moments like this can turn a pretty standard section of a website into something people actually want to play with, remember, and come back to.
To help attract players’ attention, I created a looping bounce animation for both the gift box and coin stack, along with a subtle gleam effect to make the rewards feel more eye-catching.
Since the message box uses a responsive layout, I used constraints, Follow Path, and Data Binding in Rive to connect the animations to the layout while keeping everything flexible and responsive.
It was a great opportunity to combine animation and interactive UI techniques to make the experience feel more dynamic without being too distracting.
Hellish fog — GPU Canvas shader for Rive Halloween Challenge🚀
Working on shaders for the Rive Halloween Challenge 2026.
First piece: procedural hellish fog — GPU Canvas (WGSL), built in Rive CLI with live preview and inspector-driven params (horizon, density, spread, speed, color, opacity).