A claude code project

Jugnu

A personal assistant with a face. Designed from a blank page to a live 3D character that listens, works and lights up when you need it.

ROLEConcept, character design, motion, 3D, prototype
TOOLSClaude Design, Claude Code, Spline 3D, Web Speech API
DELIVERABLESIdentity, 20 expressions, motion spec, icon set, live 3D bot
Live — tap it
LOADING JUGNU…

This is the real thing, not a video. Hover and Jugnu follows your cursor. Tap it to get a reaction. Switch states and moods from the controls, or press the mic and ask ‘what time is it?’

Open full screen
The short version

Overview

THE CHALLENGE

An assistant with no face.

I’m building a personal bot that does tasks for me: emails, reminders, bookings, research. Text logs tell me what it did. They never tell me, at a glance, what it’s doing right now.

THE APPROACH

Design the states before the character.

I defined how the bot behaves first: when it’s idle, listening, working, done or stuck. Then I explored six characters, seven shapes and four finishes against that list until one design read clearly in every state.

THE OUTCOME

A character you can read in half a second.

Jugnu has 8 core states and 12 moods, a full motion and colour spec, an icon set from 1024 to 16px, and a live 3D build with a working voice assistant and an API any app can drive.

6character concepts
7body shapes stress-tested
20expressions (8 states + 12 moods)
1live 3D bot, voice-enabled
Why a face at all

The problem

Agents are getting good at doing things for us. They’re still bad at telling us how it’s going. When a task runs in the background, I keep asking the same three questions: Is it working? Is it stuck? Is it waiting for me?

A spinner answers one of those, badly. A face can answer all three without a single word, because people read faces faster than they read any interface. The risk is the other direction. A cute mascot that jumps around becomes noise within a day.

How might I give an assistant that acts on my behalf a face that tells me what it’s doing at a glance, and stays calm enough to live on my screen all day?

The rules I set first

Principles

01

Readable at a glance.

Every state must be identifiable from shape and motion alone, in greyscale, at 40px.

02

Calm by default.

Idle is the state it lives in 90% of the time, so idle has to be the quietest thing on screen.

03

Personality, not noise.

Character comes from small, specific behaviour, like how it blinks, leans and settles, not from more decoration.

04

One system, every size.

The same design must work as a 1024px app icon, a 16px glyph, a flat 2D sticker and a 3D object.

Behaviour before looks

Defining the states

Before drawing anything, I wrote down every moment the bot would need to communicate, what triggers it and how it should feel. This list became the brief for every design decision after it. A concept that couldn’t show all eight states clearly didn’t move forward.

I also looked at the personality I wanted the bot to carry: mine. I’m a product designer in Gurugram who likes making complicated things simple. So the bot should be warm, quick and a little witty, never loud. It should feel rooted in everyday Indian life rather than in sci-fi.

STATEWHEN IT HAPPENSHOW IT MOVES
IdleNothing to do; waiting for youSlow breathe, a blink every ~4.6 s, a firefly-like glow
ActiveYou call its name, tap it or open the appQuick hop, eyes curve into a smile
WorkingRunning a task on your behalfOrbiting dots, eyes glance sideways, amber pulse
SleepIdle for a while, night mode, Do Not DisturbEyes close to lines, light dims, slow 6.5 s breathe, z’s drift
ListeningYou’re speaking or typing to itLeans in, eyes widen with a glint, ripples follow your voice
TalkingIt replies out loudMouth follows the audio level; natural blinks
SuccessA task is done: email sent, cab bookedHappy ^ ^ eyes, a tick draws in, sparkles
ErrorIt couldn’t finishShort shake, X eyes, wavy mouth, a sweat drop
Where jugnu lives

Use cases

Because the face is driven by states, not by a single app, Jugnu fits anywhere something runs on your behalf.

Use case 01

Agent status at a glance.

Sits in the corner while Claude Code or another agent runs a long task. Working while it runs, Success or Error when done, so you stop checking the terminal.

DevAgents
Use case 02

Personal task runner.

The face for the bot that sends emails, books cabs and pays bills, showing what it’s doing without opening a log.

ProductivityAutomation
Use case 03

Desk companion.

A small always-on screen for timers, reminders and focus sessions that sleeps when you do.

FocusHome
Use case 04

Smart-home voice.

A friendlier face for “turn off the lights” or “what’s the weather”, reacting as it listens and answers.

VoiceIot
Use case 05

Family helper.

Reminders for medicines and calls home, with warm moods (Love, Proud) that make it feel less like software.

FamilyCare
Use case 06

Product onboarding and support.

A brand character that explains, waits and celebrates inside an app, using the same spec.

ProductSupport
Looking back

Learnings

1

Write the behaviour first.

The state list did more design work than any sketch. It turned “which one is cuter?” into “which one tells me it’s stuck?”.

2

Test in a matrix, not in isolation.

A design that looks great in its hero state can fall apart in Sleep or Error. The 7 × 8 matrix caught that early.

3

Restraint is the craft.

The best changes were often removals: fewer lights, a subtler hologram, a glow with long dark gaps.

4

A name can redesign a product.

Calling it Jugnu changed the idle state, and the idle state is what you see most.