MyBazaar · brand · visual system

MyBazaar Visual System

Four asset classes, each with one named source and one rule: check here before making anything new. The companion is ours and carries the brand; everything else is deliberately generic so it can be swapped without touching identity.

11 Sep 2026Companion · 20 vector posesCast · 85 atoms · 28 demos Props · Tabler + PhosphorAccents · sparkle + 67 doodles
Every image on this page is a live link to the real asset, not a copy. What you see is what is on disk — if a file changes, this page changes. Paths are relative to this document, so you can copy any src straight into code.

The companion

Final · 20Ours

Vector, in poses-svg/ — 128 KB for the whole set against 1.7 MB of PNG. A rounded teal body, pale belly patch, two dot eyes, two stubby arms, no legs, floating above a translucent shadow. In the storyline the companion is MyBazaar: it assists the merchant, it is never the merchant.

Companion pose: wave
01wave
Companion pose: idle
02idle
Companion pose: celebrate
03celebrate
Companion pose: hello
04hello
Companion pose: carry box
05carry box
Companion pose: hold card
06hold card
Companion pose: push trolley
07push trolley only magenta in the set
Companion pose: beside stack
08beside stack
Companion pose: confused
09confused
Companion pose: sad
10sad
Companion pose: asleep
11asleep
Companion pose: surprised
12surprised
Companion pose: peek
13peek blank panel
Companion pose: search
14search glass lens
Companion pose: rest
15rest
Companion pose: jump
16jump
Companion pose: namaste
17namaste
Companion pose: flag
18flag
Companion pose: offer bag
19offer bag
Companion pose: lean
20lean blank panel
Traced with vtracer, colours kept as drawn — 24 on the magnifier pose for its glass, 27 on the trolley. The rasters in poses/ remain the source of truth and hold up to about 250px; above that they show edge artefacts the vectors do not have.

The cast — atoms

85 approvedCC0 · Open Peeps

The vocabulary, not the output. Figures are composed from these atoms, never picked from Open Peeps' pre-assembled templates — assembling from parts means the things that get templates rejected (printed text, graphic tees, sunglasses, Rage faces) cannot occur. The selection rule: an atom may contribute only what its category names. A pose gives posture and garment; a body gives a garment. Anything carrying an extra attribute or prop is cut, because you cannot use the pose without also inheriting the attribute. Every head is 473×567 and every face 289×293, so one set of offsets works for any combination.

KindviewBoxbody / pose athead group atface, inside head
standing0 0 1179 3291translate(-121, 634)translate(404, 180)translate(159, 186)
sitting0 0 1647 2500translate(-81, 637)translate(345, 180)translate(159, 186)
bust0 0 1136 1533translate(147, 639)translate(372, 180)translate(159, 186)

Faces

6

Six of the library’s thirty. The rest are unusable for a trust brand — Angry with Fang, Rage, Monster, Cyclops, Contempt, Suspicious — or too much for B2B: the heart-eyed grins and the teeth-baring smiles.

Calm
Calm
Smile
Smile
Blank
Blank
Cheeky
Cheeky
Explaining
Explaining
Old
Old

Heads

41

Hair, and the two head coverings. Bear and both hats are out; so are the mohawks, which fight everything near them.

Afro
Afro
Bangs
Bangs
Bangs 2
Bangs 2
Bantu Knots
Bantu Knots
Bun
Bun
Bun 2
Bun 2
Buns
Buns
Cornrows
Cornrows
Cornrows 2
Cornrows 2
Flat Top
Flat Top
Flat Top Long
Flat Top Long
Gray Bun
Gray Bun
Gray Medium
Gray Medium
Gray Short
Gray Short
Hijab
Hijab
Long
Long
Long Afro
Long Afro
Long Bangs
Long Bangs
Long Curly
Long Curly
Medium 1
Medium 1
Medium 2
Medium 2
Medium 3
Medium 3
Medium Bangs
Medium Bangs
Medium Bangs 2
Medium Bangs 2
Medium Bangs 3
Medium Bangs 3
Medium Straight
Medium Straight
No Hair 1
No Hair 1
No Hair 2
No Hair 2
No Hair 3
No Hair 3
Pomp
Pomp
Shaved 1
Shaved 1
Shaved 2
Shaved 2
Shaved 3
Shaved 3
Short 1
Short 1
Short 2
Short 2
Short 3
Short 3
Short 4
Short 4
Short 5
Short 5
Turban
Turban
Twists
Twists
Twists 2
Twists 2

Standing poses

15

Fifteen of twenty-three. Out: robot_dance-1/2/3 and polka_dots as noise, and blazer-1, blazer-2, shirt-1, shirt-2 because each has a prosthetic leg baked into the pose — you cannot use “standing in a blazer” without also deciding that person has a prosthetic.

blazer-3
blazer-3
blazer-4
blazer-4
crossed_arms-1
crossed_arms-1
crossed_arms-2
crossed_arms-2
easing-1
easing-1
easing-2
easing-2
pointing_finger-1
pointing_finger-1
pointing_finger-2
pointing_finger-2
resting-1
resting-1
resting-2
resting-2
shirt-3
shirt-3
shirt-4
shirt-4
walking-1
walking-1
walking-2
walking-2
walking-3
walking-3

Sitting poses

7

Seven of eleven. Out: hands_back-1/2 and mid-1/2, which kneel or crouch on the floor — postures no commerce illustration needs. wheelchair is kept as a deliberate exception: it bakes a device into the pose, but it is the only disability representation the library offers and that is worth the trade.

bike
bike
closed_legs-1
closed_legs-1
closed_legs-2
closed_legs-2
crossed_legs
crossed_legs
one_leg_up-1
one_leg_up-1
one_leg_up-2
one_leg_up-2
wheelchair
wheelchair

Bodies — bust only

16

Sixteen of thirty. Sweater and Polo and Sweater are speckled. Coffee is kept as a deliberate exception — it holds a mug rather than just a garment, but a cup humanises a testimonial bust and reads as someone mid-conversation. Tee Selena prints a word on the shirt — invented text on a brand asset is a hard fail. Thunder T-Shirt carries a lightning-bolt graphic that reads as someone else’s mark. Polka Dot Jacket, Sweater Dots, Killer, Gaming and Fur Jacket are noise.

Button Shirt 1
Button Shirt 1
Button Shirt 2
Button Shirt 2
Tee 1
Tee 1
Tee 2
Tee 2
Turtleneck
Turtleneck
Hoodie
Hoodie
Shirt and Coat
Shirt and Coat
Blazer Black Tee
Blazer Black Tee
Dress
Dress
Sporty Tee
Sporty Tee
Striped Tee
Striped Tee
Striped Pocket Tee
Striped Pocket Tee
Explaining
Explaining
Pointing Up
Pointing Up
Whatever
Whatever
Coffee
Coffee
Atoms are themeable: #000000 → var(--peep-ink, #113833) and #FFFFFF → var(--peep-fill, #D7ECE8). Custom properties resolve only when the SVG is inlined — loaded through <img src>, as on this page, the fallbacks apply. That renders correctly in light mode but will not flip for dark.

Composed demos

22

What the atoms make. Each is one head + one face + one pose or garment, assembled with the offsets above — nothing is drawn, and nothing comes from a pre-assembled template. Captions name the head and face so any of these can be reproduced or varied.

standing

12
merchant-greeting
merchant-greetingShort 2 · Smile
merchant-explaining
merchant-explainingHijab · Explaining
customer-browsing
customer-browsingLong Curly · Calm
owner-established
owner-establishedGray Medium · Old
customer-arriving
customer-arrivingBantu Knots · Smile
regular-customer
regular-customerTurban · Cheeky
staff-waiting
staff-waitingFlat Top · Blank
merchant-counter
merchant-counterTwists 2 · Smile
consultant
consultantMedium 3 · Calm
staff-directing
staff-directingCornrows · Explaining
courier-walking
courier-walkingShort 4 · Smile
owner-watching
owner-watchingGray Short · Old

sitting

7
delivery-rider
delivery-riderShort 5 · Smile
break-time
break-timeCornrows 2 · Calm
waiting-relaxed
waiting-relaxedPomp · Cheeky
seated-chat
seated-chatBun 2 · Smile
seated-listening
seated-listeningNo Hair 2 · Blank
seated-explaining
seated-explainingMedium Bangs · Explaining
customer-wheelchair
customer-wheelchairMedium Bangs 2 · Explaining

bust

9
testimonial-1
testimonial-1Medium Straight · Smile
testimonial-2
testimonial-2Gray Bun · Old
testimonial-3
testimonial-3Long Afro · Calm
testimonial-4
testimonial-4Bangs 2 · Explaining
avatar-1
avatar-1Shaved 2 · Blank
avatar-2
avatar-2Buns · Cheeky
avatar-3
avatar-3Gray Short · Old
avatar-4
avatar-4Medium 2 · Smile
testimonial-coffee
testimonial-coffeeGray Bun · Old
The frame is measured, not guessed. A composed figure's bounds vary wildly by pose — the bicycle needs a viewBox 1725 units wide where a standing figure needs 975. The reference generator (CeamKrier/peeps-generator) handles this with a hardcoded viewBox per pose, including special cases for Bike, CrossedLegs and WheelChair. We render the assembled figure, measure its ink bounds and fit the viewBox to them — no table of magic numbers, and nothing to update when a new pose is approved.

How the two cast members share a frame

Four rules, each arrived at by testing the alternative and watching it fail.

A standing figure, the companion at half their height, and a seated figure on a shared ground shadow
  1. The companion holds a monopoly on saturated teal. People are ink and pale mint only; no human ever wears pine.70. This is what makes the mascot read as the bright thing in frame rather than one more figure.
  2. The companion is 50% of standing adult height (tolerance 45–55%) and never rescales for posture. A seated adult is 74% of standing, so it lands at ~67% of a seated person — a consequence to check, not a second rule. At 60% it goes eye-to-eye with a seated figure and steals the scene; at 40% it reads as an object on the floor.
  3. Every figure gets a ground shadow. Open Peeps ships without one and the companion has one, so without this the two look like pasted layers. A soft ellipse: rx = 0.34 × width, #113833 at 0.13 opacity.
  4. Compose; never open the whole library. A figure with a beanie and sunglasses and a beard and polka dots fights everything near it.

Props

MIT · Tabler + Phosphor

Objects are icons, not illustrations — resolution-independent, token-driven, never drifting off palette. All 32 objects from the cancelled generation sheets resolve against these two libraries, which is why that approach is retired. Prefer Phosphor fill/duotone: the companion is solid shapes, so a stroke icon beside it reads as a different system.

barcode
barcode
books
books
bus
bus
certificate
certificate
cooking-pot
cooking-pot
ladder
ladder
plant
plant
shopping-bag
shopping-bag
storefront
storefront
ticket
ticket
toolbox
toolbox
tractor
tractor
Six props are substitutions, not matches: tiffin stack → bowl, stage truss → lamp, shelving → building-warehouse, order-slip spike → receipt, hanging signboard → signpost, wristband → ticket (which collides with the ticket stub — pick one). Fine for icons, whose job is to signify rather than depict. If a wedge becomes a lead story and its prop is on this list, that is the moment to draw a bespoke one.

Accents

1 ours · 67 licensed

Marks that sit around content rather than being it. The four-point sparkle is ours — the only accent we own — traced from our own generated art. It began life baked into the jump pose and was lifted out so it can mark any moment: a first sale, a completed step, a success toast. Do not draw a second one.

sparkle
sparkle · ours
arrow
arrow
star
star
underline
underline
spiral
spiral
heart
heart
check
check
coffee
coffee
chat
chat
fun-arrow
fun-arrow
party-streamer
party-streamer
three-lines
three-lines
ClassSourceLicenceObligation
Companion20 vector poses, oursOwned—
CastOpen Peeps atoms (Flat Assets)CC0 1.0None
PropsTabler 3.46 · Phosphor 2.1.1MITNotice in repo, not on page
Accents — sparkleOursOwned—
Accents — doodlesunDraw HandcraftsFree commercialNo bulk acquisition or redistribution

Retired approaches

Do not revisit

Both were tried; both failed on what an existing library gives away free.

  1. Generating the human cast. Two attempts. The first produced four geometric heads wearing one bad face — narrow-set eyes, a hooked nose, a hairline reading as receding. The second fixed the face and then clustered all twelve heads into a single silhouette, with hair doing every bit of the differentiation.
  2. Generating prop sheets. Four sheets queued, cancelled unrun. Every object on them exists in Tabler or Phosphor, vector and token-driven, with no quota window to wait for.