{
 "id": "3.11",
 "title": "Character usage",
 "department": "Design",
 "department_slug": "design",
 "direction": {
  "id": "dog",
  "name": "Fetch"
 },
 "branded": true,
 "status": "draft",
 "owner": "Param",
 "last_verified": "Mon Oct 26",
 "holds": "Slots, poses, never on a control",
 "urls": {
  "html": "https://handbook.joinsquareup.com/design/character-usage/dog",
  "markdown": "https://handbook.joinsquareup.com/design/character-usage/dog.md",
  "json": "https://handbook.joinsquareup.com/design/character-usage/dog.json"
 },
 "other_directions": [
  {
   "id": "bee",
   "name": "Buzz",
   "json": "https://handbook.joinsquareup.com/design/character-usage/bee.json"
  },
  {
   "id": "raccoon",
   "name": "Scoop",
   "json": "https://handbook.joinsquareup.com/design/character-usage/raccoon.json"
  },
  {
   "id": "octopus",
   "name": "Ocho",
   "json": "https://handbook.joinsquareup.com/design/character-usage/octopus.json"
  },
  {
   "id": "cooker",
   "name": "Seeti",
   "json": "https://handbook.joinsquareup.com/design/character-usage/cooker.json"
  }
 ],
 "tldr": {
  "headline": "Fetch the scruffy dog lives in seven slots, off every control",
  "points": [
   {
    "icon": "spark",
    "text": "Fetch fetches the week's ideas and drops them at your feet, around the brand's work."
   },
   {
    "icon": "lock",
    "text": "It never sits on a button, a card, a decision or a brand photo."
   },
   {
    "icon": "warn",
    "text": "Fetch never claims it posted your work or lifted your sales."
   },
   {
    "icon": "rocket",
    "text": "New abilities arrive as new props or poses, never a new character."
   }
  ],
  "stat": {
   "value": "18",
   "label": "Of 45 screens"
  },
  "decide": "Should the character layer start on or off for a new brand?",
  "mood": "waiting"
 },
 "sources": [
  "brand-directions/dog/kit-skin.js",
  "brand-directions/dog/system.md",
  "brand-directions/docs2/data/dirs.json",
  "brand-directions/_shared/product-model.md:129-142, 207",
  "brand-directions/_shared/kit-contract.md:19-27",
  "brand-directions/_shared/ia.md:83-131",
  "brand-directions/_shared/no-ai-look.md:7-18, 52-58",
  "brand-directions/_kit/render.js:47-54",
  "brand-directions/_kit/screens.js:83-536",
  "brand-directions/BRIEF.md:241-276",
  "brand-directions/_shared/surface-map.md:463, 473, 475",
  "memory: brand-directions-2026-10-25, brew-sounds"
 ],
 "open_questions": [
  "Fetch has extra poses for heart, drop and handoff that the kit never calls. Use them? Proposal: Use the heart pose on the first heart celebration at 120 px and drop on the Monday greeting; leave handoff for marketing.",
  "The felt plate is a book treatment. Should it sit behind Fetch in the product too? Proposal: No, keep the product calm; the plate stays in books, the site and marketing.",
  "The model puts the first heart in a 120 px celebration; the kit draws it at 40 px inside the toast. Which? Proposal: The first heart at 120 px once, later hearts in the toast.",
  "Should the character layer start on or off for a new brand? Proposal: On, with sound off, since the slots never block a control."
 ],
 "parts": {
  "Answer": "Fetch, a scruffy, happy dog who fetches this week's marketing ideas and drops them at your feet, is Brew's one character in this direction, and it lives only in seven fixed slots, narrating the week around the brand's work and never sitting on a control, a card or a brand photo.",
  "Today": "Checked 26 October 2026.\n\n| Fact | Source |\n|---|---|\n| The live product has no character. It shows five agent faces and colours, which go; only the area dots stay | [src: brand-directions/_shared/surface-map.md:463] |\n| Logo stickers sit in the feed today and go from view | [src: brand-directions/_shared/surface-map.md:475] |\n| The live app plays sound unless switched off, with 8 synthesized and 29 recorded cues | [src: brand-directions/_shared/surface-map.md:473] |\n| Five directions are in audition; Param picks one and everything is redone around it | [src: memory brand-directions-2026-10-25] |\n| Fetch's art: every frame is drawn as vector from one rig, dog/_src/rig/fetch.py, by poses.py | [src: brand-directions/dog/system.md:91-111] |\n| Owned colour tennis ball green #aee32f on the ears, collar, tail tip and ball; coat cream #fff4dc; ink outline #16180f; matte, no shine | [src: brand-directions/dog/system.md:91-111] |\n| Anatomy that never changes. The left ear floppy and outside the head, the right ear standing with its tip folded forward, three scruff tufts on the crown, in every frame. | [src: brand-directions/dog/system.md:91-111] |\n| Signature. Fetch sits beside a card it has just dropped at your feet, tail wagging, tongue out to one side, the left brow a touch higher. | [src: brand-directions/docs2/data/dirs.json] |\n| Illustration treatment, books and marketing only: the felt plate: a green disc set 8 px right and 6 px down behind Fetch, 20 percent on dark and 38 percent on light | [src: brand-directions/dog/system.md:34] |\n| The kit gives Fetch these poses: corner dog/char-mark.svg, idle dog/char.svg, wait dog/svg/pose-02.svg, celebrate dog/svg/pose-09.svg, error dog/svg/pose-08.svg, empty dog/svg/pose-10.svg, caught dog/svg/pose-07.svg, handoff dog/svg/pose-06.svg, drop dog/svg/pose-03.svg, heart dog/svg/pose-04.svg | [src: brand-directions/dog/kit-skin.js:19-31] |\n| Below 120 px the kit swaps any pose for the small mark, dog/char-mark.svg, the head alone with both green ears and the tongue out; dog/char-mark-16.svg at 16 px | [src: brand-directions/_kit/render.js:52-54] |\n| No raw generated image may appear; every character image is a flat traced SVG in the direction's palette | [src: brand-directions/_shared/no-ai-look.md:52-58] |",
  "Tomorrow": "Fetch arrives in v1 as an add on layer behind its own off switch. Remove it and every control still works. [src: brand-directions/_shared/product-model.md:131, 152] v1, New.\n\n### The slots\n\n| Slot | Model size | Kit size | Pose | File drawn | Screens | Words |\n|---|---|---|---|---|---|---|\n| Today header corner | 40 to 56 px | 44 px phone, 56 px laptop | corner | dog/char-mark.svg | t1, d1 | \"Monday. Five picks, dropped at your feet.\" on Monday, \"Back again. The picks are where I left them.\" other days |\n| Sign in corner | small corner | 48 px | corner | dog/char-mark.svg | f2 | \"Your work email keeps your store with your own team.\" |\n| Reading your store | 120 to 180 px | 140 px | wait | dog/svg/pose-02.svg | f4 | \"Sniffing round your store. About 3 to 4 minutes.\" |\n| The reveal | 160 px | 160 px | celebrate | dog/svg/pose-09.svg | f7 | \"Brought this back first. Have a look.\" |\n| Empty states | 96 px | 96 px | empty | dog/char-mark.svg | w2, f6 | \"Nothing in the works yet. Pick one and I will follow.\" |\n| Celebrations | 120 px | 120 px | celebrate or caught | dog/svg/pose-09.svg; caught up dog/svg/pose-07.svg | h2, t5 | \"That is the week. Every pick seen.\" |\n| A heart | celebration, small | 40 px in the toast | celebrate | dog/char-mark.svg | t6 | \"Good pick. Fetching more like it.\" |\n| Errors and cap reached | 96 px | 96 px; 56 px inside Make it | error | dog/char-mark.svg | f3, f5, m5, x1 | \"Dropped that one. Your other versions are safe. Try again.\" |\n| Long waits | wait pose | 64 px making, 96 px offline | wait | dog/char-mark.svg | m2, x2 | \"Making it now. You can go, I will stay.\" |\n| Your store header | idle | 56 px | idle | dog/char-mark.svg | y1 | \"What customers, rivals and AI answers say about your store.\" |\n| Brief page sign off | 32 px | 32 px | corner | dog/char-mark.svg | h3 | \"Fetched for you. Over to you now.\" |\n| Monday email sign off | small | 28 px | corner | dog/char-mark.svg | e1 | \"Morning. Five picks for your store, most already drafted.\" |\n\nFetch appears in 18 of the 45 screens. [src: brand-directions/_shared/ia.md:131] [src: brand-directions/_kit/screens.js:83-536] [src: brand-directions/dog/kit-skin.js:42-84]\n\n### Never\n\n- On buttons, inside the thing being made, on tables of numbers, in Need your yes decisions, over a brand's own photos. [src: brand-directions/_shared/product-model.md:142]\n- On a card. Cards belong to the brand; Fetch speaks around them. [src: brand-directions/_shared/product-model.md:207]\n- As a second character. No bones, no food, no mess. It fetches ideas, it does not eat them.\n- In money, privacy, apologies or anything a person must sign.\n\n### How Fetch behaves\n\n- Errors make Fetch sheepish, ears down. It is never sad, hurt, scared or begging.\n- One motion at a time in the product, at real moments only, all inside the reduced motion check.\n- Voice: Fact first, joke second. One joke per line at most. Short sentences, present tense, glad to see you. Excited and plain at the same time. First person about itself, second person to you.\n\n| Pose | Motion in the product |\n|---|---|\n| idle | bob, 2.8 s loop |\n| wait | sniff, 1.4 s loop |\n| celebrate | hop, 1 s, once |\n| error | shake, 2.4 s, once |\n\n[src: brand-directions/dog/kit-skin.js:32-41]\n\n### Lines Fetch may say and never says\n\n| May say | Never says |\n|---|---|\n| Five picks at your feet. Most are drafted. | I posted it for you. |\n| Sniffing round your store. About 3 to 4 minutes. | Scheduled for 9am. |\n| Good pick. Fetching more like it. | Your sales went up after my picks. |\n| Another throw. The first one stays in the pile. | You missed a walk. I waited all day. |\n| Drop it. Brief copied, link ready. You pass it on. | Don't break your streak. |\n| Only you can answer these. I will sit here. | Only two hours left to claim your read. |\n| That is the week. Every pick seen. I am keeping the ball now. | Works for any store. |\n| Lost the scent on that one. Your work is safe. Try again. | Your rival is beating you. |\n| Out of throws for now. Reads are capped while we build v0. Ask us for one. | Trust me. |\n| I am not sure of this number. Confirm it before you use it. | Bad owner. |\n\n[src: brand-directions/docs2/data/dirs.json]\n\n### Areas as props\n\n| Area | Fetch's prop |\n|---|---|\n| Social posts | the frisbee |\n| Ads | the megaphone |\n| Website | the front door |\n| AI search | the phone |\n| Email and WhatsApp | the rolled morning paper |\n\nThe tennis ball is Fetch's own and belongs to the running joke. Files: dog/svg/mode-social.svg, mode-ads.svg, mode-website.svg, mode-ai.svg, mode-email.svg. Props show in marketing, the reveal and celebrations; in the product the area is a small dot and a word. [src: brand-directions/dog/system.md:78]\n\n### Growing with the product\n\n| Version | What Fetch gains | File | Tag |\n|---|---|---|---|\n| v1 | the slots above, as adviser | dog/char.svg | New |\n| v2 | carries finished work to a place you chose | dog/svg/grow-doer.svg | New |\n| v3 | a paw at a chart | dog/svg/grow-reporter.svg | New |\n| v4 | running within rules: no prop defined yet | not drawn | New |\n\nNew abilities arrive as new props or poses, never a new character. [src: brand-directions/BRIEF.md:241-249]\n\n### Sound\n\nSix cues, off on a first visit, one switch in Settings: logo dog/snd/logo.mp3, heart dog/snd/cue-heart.mp3, ready dog/snd/cue-ready.mp3, handoff dog/snd/cue-handoff.mp3, error dog/snd/cue-error.mp3, caught dog/snd/cue-caught.mp3. The longer line files are for books, the site and marketing and never play in the product. [src: brand-directions/dog/kit-skin.js:86-89]",
  "How we do it": "1. Need a new moment? Add the prop, pose or line to brand-directions/dog/system.md first.\n2. Draw it from the one source: every frame is drawn as vector from one rig, dog/_src/rig/fetch.py, by poses.py. Never redraw the body by hand, never use a raw generated image.\n3. Add the file to the art key in brand-directions/dog/kit-skin.js and any words to the words key, 12 words at most.\n4. Place it only in a named slot from the table above, at its size.\n5. Check it at the slot size; under 120 px it must read as the small mark.\n6. Switch the character layer off and check the screen still works.\n7. Turn on reduced motion and check Fetch holds still.",
  "Numbers": "| Number | Definition | Today | Where measured | Status |\n|---|---|---|---|---|\n| Screens with Fetch | of 45 kit screens | 18 | _kit/screens.js | Measured |\n| Slots | named places Fetch may sit | 7 in the model, 12 placements in the kit | product model, kit | Measured |\n| Fetch over a control | instances where Fetch covers a control | not measured | headless audit with the layer on and off | Proposed |\n| Character switch off rate | share of people who turn the layer off | not measured | product event | Proposed |",
  "Open": "1. Fetch has extra poses for heart, drop and handoff that the kit never calls. Use them? Proposal: Use the heart pose on the first heart celebration at 120 px and drop on the Monday greeting; leave handoff for marketing.\n2. The felt plate is a book treatment. Should it sit behind Fetch in the product too? Proposal: No, keep the product calm; the plate stays in books, the site and marketing.\n3. The model puts the first heart in a 120 px celebration; the kit draws it at 40 px inside the toast. Which? Proposal: The first heart at 120 px once, later hearts in the toast.\n4. Should the character layer start on or off for a new brand? Proposal: On, with sound off, since the slots never block a control."
 }
}