Meet Shelly
Shelly is the Flip the Contract AI assistant — the one who works your leads, drafts your outreach, watches your deadlines and tells you what to do next. She is one robot everywhere she appears: same helmet, same faceplate, same chest badge, same proportions. Her expression changes what is inside her visor. Her pose changes her arms and what she is holding. Nothing else moves.
npm run mascotMix and match
Any of the seven expressions works with any of the seven poses — 49 combinations, all from one component.
<ShellyMascot
expression="happy"
pose="wave"
size={220}
/>Seven expressions
Only the neon inside her visor changes. Pick by what the interface is actually doing, not by what looks nicest.
expression="happy"SVGPNGexpression="thinking"SVGPNGexpression="excited"SVGPNGexpression="alert"SVGPNGexpression="focused"SVGPNGexpression="celebrating"SVGPNGexpression="neutral"SVGPNGSeven poses
Only her limbs and the prop she holds change. She never changes size between poses — every pose is drawn on the same canvas, so a row of them lines up.
Sizes
Below about 32px her gradients and bloom render as mud, so there is a flat-shaded glyph with the same silhouette. Use ShellyAvatar from 32px up and ShellyGlyph below it.
Palette
Exported as SHELLY_PALETTE so surfaces around her can match without hard-coding hexes.
#140d24#07040f#a855f7#cba6ff#7c3aed#ff4fd8#ff5fa2#ff7e5f#ffb347#35e0c0Rules
Do
- Import the component —
ShellyMascot,ShellyAvatar,ShellyGlyph. - Use the files in
/mascotfor email, social and anywhere React cannot run. - Pick the expression that matches the system state, so she reads as informative rather than decorative.
- Give her room — she is drawn with a soft aura that needs a little padding.
- Pass
title=""when she sits next to text that already says "Shelly".
Don't
- Don't redraw her, recolour her armor, or restyle her faceplate frame.
- Don't stretch her — set
sizeand let the height follow. - Don't put the badge on a chest that isn't hers, or swap the "F" for anything else.
- Don't screenshot her from this page — the exported SVGs are lossless.
- Don't animate her over a busy background; pass
glow={false}instead.