
Gilly is a concept read-along buddy I designed in Figma and rigged in Rive. A child reads a bedtime page with him: he reads a line, hands over with "Your turn", helps with a hard word and cheers at the end.
Challenge
A reading buddy has to do several things at once: talk in sync with the text, show which word is being read, react to the child and stay calm enough for bedtime. All of it had to live in one .riv that an app can drive with a few numbers.
What I did
Designed the character sheet in Figma first: six moods, nine mouth shapes with their Rhubarb mapping, five gill states and a 3 x 3 head turn grid.
Rigged him with 32 bones. Body, belly, tail, six gills and both arms are vector paths skinned to the bones, so the gills sway and the tail curls in one smooth curve.
Built the view model the app would use: mode, viseme, word and gaze. Formula converters turn those numbers into the head turn, the arm that aims at the current word, the word highlight and the line tint.
Wrote a 20 second story on one timeline that writes into the same view model, so autoplay and the app use the same controls. Any cursor movement pauses the story and Gilly follows the pointer instead.
Added the interactions a child would try: tap a word and Gilly reads it, tap Gilly and he giggles, press the mic and he listens while the words light up.

Reading the first line: the word is highlighted, its line tinted and the arm points at it.

The Figma character sheet the rig was built from.

Inside Rive: 32 bones, skinned paths for body, gills and tail.

Thinking with a paw on the chin, cheering with glowing gills, falling asleep with the lamp dimmed.
Result
One .riv with a character an app can drive through six numbers and five triggers, plus a story that plays by itself on the live demo page.
Live demo: gilly-rive.pasha2do.workers.dev
0 likes · 2 views · Nov 12, 2026
Concept character I designed and rigged in Rive for a kids' reading app: a pink axolotl who reads aloud, points at each word, listens and falls asleep.