mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-09-17 00:26:26 +00:00
brand: meet Pip, the courier bird (#132)
* docs: add mascot & brand design spec (Pip the courier bird) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: Pip wears a tie - update mascot spec to v5 flight loop Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs: add Pip brand PR implementation plan Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(plan): v7 master GIF - drop frame scaling, add enclosed-hole transparency Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(plan): v8 master GIF - fix hole classification (chest stays opaque) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(plan): scrub stale v5 references Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(plan): v10 master GIF - line-fitted envelope border clipping Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(plan): label pipeline as v10 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(plan): v16 master GIF - targeted removal of gap blob Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(plan): v17 master GIF - drop envelope border clipping, keep blob removal Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(plan): v19 final master GIF - user-approved thin outline repair Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(brand): add Pip mascot assets and regeneration pipeline Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(brand): Pip takes over the README header Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * docs(spec): scrub stale scaling line Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> * feat(brand): avatar, social card, and mascot sources (PNG allowlist) The global *.png personal-data rule silently excluded the mascot's source sheets and generated PNGs; allowlist the upstream-controlled assets/mascot/ paths without weakening the fork-protecting rule. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
8bee3ddb97
commit
09f0417d78
@@ -0,0 +1,102 @@
|
||||
# Mascot & Brand Design: Pip the Courier Bird
|
||||
|
||||
Date: 2026-07-11
|
||||
Status: Approved
|
||||
|
||||
## Purpose
|
||||
|
||||
Give the project a distinctive, ownable brand mark to replace the placeholder
|
||||
`claude_animation.gif`, anchor the donation appeal, and make shared repo links
|
||||
recognizable. Decisions below were made interactively with the maintainer; this
|
||||
document is the single source of truth for brand assets.
|
||||
|
||||
## 1. The mascot
|
||||
|
||||
**Pip**, a pixel-art courier bird. Identity: the AI agent that works for you on
|
||||
your machine - it searches job portals and delivers applications while you live
|
||||
your life. Pip is the agent, not the job seeker.
|
||||
|
||||
Canonical style: the outlined redesign (dark outline, happy closed eye,
|
||||
expressive wing), which supersedes the original flat-style sprites. Pip wears a
|
||||
**small dark tie** (same `#22333b` as the outline - the palette stays at 7
|
||||
colors): the agent is dressed for the interviews it books you, and the tie
|
||||
sways with the wing beats. The three original flat PNGs are retired as
|
||||
candidates but kept as palette reference.
|
||||
|
||||
**Locked palette (exactly 7 colors):**
|
||||
|
||||
| Role | Hex |
|
||||
|---|---|
|
||||
| Body teal | `#2a9d8f` |
|
||||
| Wing dark teal | `#1f6f65` |
|
||||
| Beak & feet coral | `#e76f51` |
|
||||
| Envelope border gray | `#969ba0` |
|
||||
| Envelope & belly white | `#ffffff` |
|
||||
| Envelope seal red | `#e63946` |
|
||||
| Outline | `#22333b` |
|
||||
|
||||
The **red-sealed envelope** is the signature brand detail and appears in every
|
||||
pose. No text, logos, or tooling motifs are ever baked into the sprite; the
|
||||
mark stays pure and brand attachment comes from the surfaces around it
|
||||
(section 3).
|
||||
|
||||
## 2. The animated mark
|
||||
|
||||
`assets/mascot/pip_flight_loop.gif` - the moving brand mark.
|
||||
|
||||
- 6 frames, 110 ms/frame, infinite loop
|
||||
- Measured flap cycle: wing high, mid, flat, swept-down, low, rising - ordered
|
||||
by per-frame wing-centroid measurement
|
||||
- Beak-anchored: head fixed across frames; wing, body bob, envelope sway, and
|
||||
tie swing carry the motion
|
||||
- Every pixel snapped to the 7-color palette (no cross-frame color drift)
|
||||
- No per-frame rescaling (the source birds are size-consistent; rescaling by
|
||||
noisy measurements caused a visible zoom pulse in an early build)
|
||||
- True transparent background (edge-connected flood fill; belly and envelope
|
||||
whites stay opaque)
|
||||
- 560 px square master, displayed at 200 px; approximately 30 KB
|
||||
|
||||
Provenance: an initial tie-less loop was generated with Gemini from a locked
|
||||
prompt (palette, choreography, loop constraints); the final tie-edition frames
|
||||
were generated with ChatGPT from the same design, then sliced, palette-snapped,
|
||||
beak-anchored, and assembled locally, with two targeted art repairs (one stray
|
||||
outlined blob removed and the exposed underside outline repainted). The full
|
||||
pipeline lives in `assets/mascot/assemble_flight_loop.py` and reproduces the
|
||||
shipped GIF exactly from `assets/mascot/sources/chatgpt_tie_sheet.png`.
|
||||
|
||||
## 3. Brand surfaces
|
||||
|
||||
1. **README header** - the flight-loop GIF replaces `claude_animation.gif`, same 200 px
|
||||
centered slot. Alt text: "Pip, the courier bird".
|
||||
2. **GitHub social preview card** - 1280x640 PNG uploaded in repo settings:
|
||||
Pip + `ai-job-search` wordmark + tagline "job search that runs on your
|
||||
machine". This card is the primary brand-attachment surface (shown on every
|
||||
shared link).
|
||||
3. **Avatar / favicon** - a static square pose in the outlined style (the
|
||||
envelope-hugger composition reads best square). Until it is redrawn, a
|
||||
cropped flight frame is acceptable.
|
||||
4. **Seal-red echo** - `#e63946` may be reused sparingly as an accent (social
|
||||
card). No other motifs enter the sprite.
|
||||
|
||||
## 4. Repo hygiene
|
||||
|
||||
- `.superpowers/` added to `.gitignore` (brainstorm mockups never ship)
|
||||
- Brand assets live in `assets/mascot/`: the master GIF, the source sprite
|
||||
sheets, the assembly script, and the retired flat PNGs (palette reference)
|
||||
- Forks inherit the brand by default; nothing personal is embedded
|
||||
|
||||
## Out of scope
|
||||
|
||||
- Redrawing the standing / hugger poses in the outlined style (follow-up; the
|
||||
Gemini prompt pattern from this session is reusable)
|
||||
- Donation-strategy execution (separate initiative; the mascot supports it but
|
||||
this spec does not change Ko-fi copy)
|
||||
- Any change to the mascot to represent the job seeker, add text to the GIF,
|
||||
or add tooling motifs - explicitly considered and rejected
|
||||
|
||||
## Success criteria
|
||||
|
||||
- README renders the transparent GIF cleanly in both GitHub light and dark
|
||||
themes, no stray artifacts in any frame
|
||||
- Social preview shows the lockup on link shares
|
||||
- Total added repo weight for the README-rendered asset stays under 50 KB
|
||||
Reference in New Issue
Block a user