---
id: "4.14"
title: "Asset library, Fetch"
dept: brand
status: draft
owner: Param
branded: true
direction: dog
last_verified: '2026-10-26'
sources:
  - "brand-directions/dog/ folder listing: char.svg, char-mark.svg, char-mark-16.svg, svg/, snd/, img/kit/, _shots/, _src/"
  - "brand-directions/dog/system.md s1, s4"
  - "brand-directions/dog/kit-skin.js art, fonts"
  - "brand-directions/dog/snd/sound-log.json, voice.json, voice-options.json"
  - "brand-directions/_shared/sample/img/ listing"
  - "brand-directions/docs2/data/dirs.json, entry dog"
  - "brew origin/main a559de6: public/assets/, public/icons/, public/sfx/, public/loader.js, public/index.html:1, 6, tools/sfx/cues.json"
  - "memory brand-directions-2026-10-25, brew-sounds, brew-loader"
---

# Asset library, Fetch

## Answer

Every file Fetch needs, the marks, ten poses, eight faces, five props, two growth frames, six sounds, eight voice lines, two fonts and the screen kit, lives in brand-directions/dog/ and is drawn from one rig, and this is where each one is and how to use it.

## Today

All paths below are relative to brand-directions/ unless they start with brew/.

### Marks and the hero

| File | What it is | Use it for | Source |
|---|---|---|---|
| dog/char.svg | The master, the drop: sitting beside a card, tail going | Idle slot, hero, stage | [src: brand-directions/dog/kit-skin.js art] |
| dog/char-mark.svg | The head alone, both green ears, tongue out | Everything below 120 px: Today corner, app icon, avatar, sign off | [src: brand-directions/dog/system.md s4] |
| dog/char-mark-16.svg | The mark with heavier lines | Favicon at 16 px | [src: brand-directions/dog/system.md s4] |
| dog/svg/construct.svg | Construction lines: head circle, body pear, eye line | Drawing reference only | [src: brand-directions/dog/art.html a1] |
| dog/svg/silhouette.svg | The silhouette test | Checking a new pose | [src: brand-directions/dog/art.html a1] |

### Poses, faces, props and growth

| Files | What they are | Source |
|---|---|---|
| dog/svg/pose-01.svg to pose-10.svg | Paste, reading, the drop, heart, Make it, hand off, caught up, error, celebrate, wait | [src: brand-directions/dog/art.html a2] |
| dog/svg/expr-eager, delighted, focused, curious, distracted, sheepish, proud, sleepy .svg | The eight faces | [src: brand-directions/dog/art.html a3] |
| dog/svg/mode-social, mode-ads, mode-website, mode-ai, mode-email .svg | Frisbee, megaphone, front door, phone, morning paper | [src: brand-directions/dog/art.html a4] |
| dog/svg/grow-doer.svg, grow-reporter.svg | Doer and reporter, both Later | [src: brand-directions/dog/art.html a5] |

### Product slots, as the kit skin maps them

| Slot | File | Source |
|---|---|---|
| corner | dog/char-mark.svg | [src: brand-directions/dog/kit-skin.js art] |
| idle | dog/char.svg | [src: brand-directions/dog/kit-skin.js art] |
| wait | dog/svg/pose-02.svg | [src: brand-directions/dog/kit-skin.js art] |
| drop | dog/svg/pose-03.svg | [src: brand-directions/dog/kit-skin.js art] |
| heart | dog/svg/pose-04.svg | [src: brand-directions/dog/kit-skin.js art] |
| handoff | dog/svg/pose-06.svg | [src: brand-directions/dog/kit-skin.js art] |
| caught | dog/svg/pose-07.svg | [src: brand-directions/dog/kit-skin.js art] |
| error | dog/svg/pose-08.svg | [src: brand-directions/dog/kit-skin.js art] |
| celebrate | dog/svg/pose-09.svg | [src: brand-directions/dog/kit-skin.js art] |
| empty | dog/svg/pose-10.svg | [src: brand-directions/dog/kit-skin.js art] |
| smallBelow | 120 px, below which only the mark is used | [src: brand-directions/dog/kit-skin.js art] |

### Sound and voice

| File | What it is | Source |
|---|---|---|
| dog/snd/logo.mp3 | Sonic logo, 2.2 s | [src: brand-directions/dog/snd/sound-log.json] |
| dog/snd/cue-heart, cue-ready, cue-handoff, cue-error, cue-caught .mp3 | The five cues | [src: brand-directions/dog/snd/sound-log.json] |
| dog/snd/line-paste, line-read, line-drop, line-heart, line-handoff, line-caught, line-error .mp3 | Seven moment lines | [src: brand-directions/dog/snd/sound-log.json] |
| dog/snd/line-tagline.mp3 | The tagline read | [src: brand-directions/dog/snd/sound-log.json] |
| dog/snd/voice-option-1 to 3 .mp3 | The three voice tries. Option 1 kept as Fetch voice | [src: brand-directions/dog/snd/voice-options.json; brand-directions/dog/snd/voice.json] |
| dog/snd/sound-log.json | Every prompt and line, dated 25 October | [src: brand-directions/dog/snd/sound-log.json] |

### Fonts, tokens and templates

| File or source | What it is | Source |
|---|---|---|
| Google Fonts: Grandstander 500 to 800, Commissioner 400 to 700 | Product and book faces | [src: brand-directions/dog/kit-skin.js fonts] |
| Google Fonts: Shantell Sans | Hand notes, books only | [src: brand-directions/dog/system.md s1] |
| dog/kit-skin.js | Product tokens, art slots, motion keyframes and words for the screen kit | [src: brand-directions/dog/kit-skin.js] |
| dog/skin.css | Book tokens: night yard and kraft | [src: brand-directions/dog/system.md s1] |
| dog/stage.js | The audition stage animation, generated from char.svg | [src: brand-directions/dog/system.md s4] |
| dog/img/kit/dark and light | 54 screen kit captures in each theme | [src: brand-directions/dog/img/kit] |
| dog/_shots/ | Page and mark checks, such as char-mark-24.png and the 400 px home | [src: brand-directions/dog/_shots] |
| dog/_src/rig/fetch.py, poses.py, mark.py | The one rig and the pose list that write every frame | [src: brand-directions/dog/system.md s4] |
| dog/_src/build.py, md2html.py, stage.py, render.mjs, kitshots.mjs | Page builder, system page, stage, PNG checks, kit captures | [src: brand-directions/dog/system.md s4] |
| _shared/sample/img/monsoon, chai, jasmine, trio, ad-rain, hands | The sample candle store pictures, always labelled Sample | [src: brand-directions/_shared/sample/img] |

### What the live product has today

| File | What it is | Source |
|---|---|---|
| brew/public/assets/brew-mark.svg | Today's mark and favicon | [src: brew/public/index.html:1] |
| brew/public/icons/icon-192.png, icon-512.png, maskable-512.png, apple-touch-icon.png | Today's app icons | [src: brew/public/icons] |
| brew/public/assets/agent-*.svg | Area agent shapes | [src: brew/public/assets] |
| brew/public/sfx/*.mp3 | 29 product cues | [src: brew/tools/sfx/cues.json; memory brew-sounds] |
| brew/public/loader.js | The one loader on every wait | [src: brew/public/loader.js:1; memory brew-loader] |
| Inter and Caveat | Today's fonts | [src: brew/public/index.html:6] |

## Tomorrow

| Item | Version | Tag |
|---|---|---|
| The rig stays the source of every product frame. PNGs are only for checks and marketing | v1 | Stays |
| A final illustrator pass redraws the master, the mark and the ten poses from the rig | v1 | New |
| Fetch's mark becomes the favicon and app icons at 16, 192 and 512 px, maskable included | v1 | Changes |
| brew-mark.svg and the agent shapes as characters go. The area colours stay as tags | v1 | Goes |
| Fetch's five cues join brew/public/sfx, levelled by the product rule | v1 | New |
| The loader takes Fetch's wait pose or mark | v1 | Changes |
| A sticker for design partners, from the hop or the mark. Not designed yet | v1 | New |
| A carry prop for doer and a chart for reporter go into the rig | v2 and v3 | New |
| The four losing directions' assets are archived and never used | v1 | Goes |

## How we do it

1. Find a file here first. If it does not exist, write the need in dog/system.md, then draw it from the rig.
2. Use the mark below 120 px, the full figure at 120 px and above.
3. Never edit a built SVG or page by hand. Change _src and rebuild:

```bash
cd /Users/param/Documents/ChatGPT/brand-directions/dog/_src
python3 rig/poses.py && python3 build.py && node render.mjs
```

4. Every invented example uses the candle store pictures with a visible Sample label.
5. Never ship a voice file or cue into the product without levelling it by small speaker loudness.

## Numbers

| Metric | Definition | Where measured | Status |
|---|---|---|---|
| Frames from the rig | Share of Fetch images drawn from the rig, not by hand or by an image model | dog/svg against dog/_src/rig/poses.py | Proposed, target all |
| Missing slots | Product slots with no Fetch file | kit-skin.js art against the slot list | Proposed |

## Open

1. Who draws the final art and the sticker? Proposal: one illustrator after the pick, working from the rig, with a sticker sheet in the same brief.
2. Where do brand assets live once picked: brand-directions/dog or brew/public? Proposal: the rig stays in brand-directions, and only the built SVGs and mp3 files are copied into brew/public.
