# HITL character expression guide

Version 1.1.0. 42 individually regenerated transparent PNGs: 21 per host.

The original sheets remain unchanged. These derivatives were regenerated at the user's request. The files are packaged for review and reuse; likeness remains subject to host review.

## Expression selection

Within illustrated Oscar reflective opinion/explainer beats, use `oscar.front.thinking` by default, per his 2026-10-28 preference. For podcast video production, the camera/B-roll direction approved on 2026-10-30 lives in `FRAME.md`, under **Podcast video production**. The portrait complements real host footage. It is an illustrative pose, not a measured emotion label; keep another expression when the brief or scene calls for it.

| Expression | Use it for | Keep in mind |
| --- | --- | --- |
| Neutral / listening | Default listening, introductions, speaker identification, and resetting after a reaction. | A neutral face does not establish agreement. |
| Happy / smiling | Warm welcomes, thanks, and a positive result that the host actually supports. | Do not imply endorsement of a product or claim absent from the source. |
| Laughing | A joke, a playful aside, or laughter present in the conversation; keep the reaction brief. | Avoid inventing laughter or using it to mock a serious event. |
| Confused | An unresolved question, unclear terminology, or a workflow that needs explanation. | Resolve it with an explanation rather than making the subject look unintelligent. |
| Skeptical | Signal or Noise, a claim being checked, a missing source, or an explicit challenge in the discussion. | Do not fabricate distrust or an accusation on a host’s behalf. |
| Shocked / surprised | An unexpected result or surprise explicitly discussed by the host; a short reveal beat. | Keep it out of routine facts and sensationalized thumbnails. |
| Annoyed | A minor repeated friction point or irritation the host actually describes. | Keep the target and strength of the reaction faithful to the conversation. |
| Angry / frustrated | A clearly expressed strong objection or frustration; use sparingly and with source context. | Do not intensify disagreement into anger or attach it to a fabricated quote. |
| Thinking | Preferred character portrait within illustrated Oscar reflective unpopular-opinion and explainer beats; also weighing tradeoffs or posing a question. FRAME.md owns the camera/B-roll video production default. | Illustrative thinking pose, not an asserted emotion in the live footage. Use another expression when the brief or scene calls for it. |
| Excited | An anticipated possibility, genuine enthusiasm, or a confirmed achievement in the discussion. | Enthusiasm is not proof of a product’s capability. |
| Facepalm / embarrassed | Self-correction, an admitted mistake, or a light comic failure discussed by the host. | Avoid assigning blame or ridicule to a person who was not the target in the source. |
| Smug / sarcastic | An unmistakably ironic or dry line; pair it with enough context to preserve the joke. | Do not turn a factual statement into an implied insult. |
| Worried | A stated risk, uncertainty, or possible downside; lead into the evidence and mitigations. | Distinguish a possible risk from an event that has happened. |
| Unimpressed / deadpan | A deliberately flat reaction, anticlimax, or dry assessment present in the conversation. | Do not imply the host dismissed something they actually endorsed. |
| Explaining / speaking | No Jargon Required, a step-by-step explanation, or guiding attention to a diagram. | This is a still expression, not an aligned mouth shape or automatic lip-sync rig. |

## Angle and placement

- Use front views for direct address and either side of a two-host composition.
- Three-quarter-right portraits face viewer-right. Place them left of the explanation they look at; choose a front portrait on the right.
- Use a fixed square box and `object-fit: contain`. Preserve the complete scalp, ears, glasses, beard, facepalm hand, and shoulders.
- Place the character beside the focal idea, outside the source/caption area. Reset unrelated reactions to a listening pose; retain Oscar’s thinking pose through a reflective opinion/explainer beat.
- Change whole portraits with a short anticipation and settle. Avoid distorting individual facial features or crossfading two fully visible faces.

## Use in Hyperframes

Choose an asset in `assets/characters/catalog.json`, then put its file path directly in a static image element. The catalog is read during authoring, not fetched during a render.

```html
<img id="oscar-reaction"
     src="assets/characters/expressions/oscar/front/skeptical.png"
     alt="Oscar, skeptical illustrated reaction"
     style="width:420px; height:420px; object-fit:contain" />
```

For an editable swap, bind the image source to a declared string variable with `data-var-src`. Give each timed wrapper a stable ID and animate its child. Predeclare all visible image assets for deterministic rendering.

A change of expression is a keyed image replacement: old portrait fades out, then the new portrait settles in. Reset unrelated reactions to listening, while keeping the preferred thinking pose through Oscar’s reflective beats. It does not create speech or mouth movement.

## Rig and source scope

These are complete head-and-shoulders images. The draft mouth and rig-component atlases have not been aligned or validated, and are excluded from automatic lip sync. The 36 original full-body poses are included as references with source draft status; three Matt files retain explicit cleanup flags.

The canonical mapping uses the visible artwork: Oscar's extra front expressions come from `oscar_expression_sheet_v1.png` (the sheet containing facepalm); the similarly named front 3x2 sheet is an alternate six-expression set, not six new emotions. Matt's extra front expressions come from `matt_expressions_front_3x2_v1.png`.

## Existing full-body poses

The pack also carries 36 original pose references (18 per host), copied unchanged. They retain source-draft status. Matt's marker and computer poses are flagged for edge/detail cleanup and are not selected as clean default cutouts.

| Pose | Suggested situation |
| --- | --- |
| standing presenting | Introduce a topic or hand the viewer into an explanation. |
| pointing left | Direct attention to the diagram or source on viewer-left. |
| pointing right | Direct attention to the diagram or source on viewer-right. |
| pointing toward viewer | Ask the viewer a question or give one clear next step. |
| hands on hips | A confident setup before evaluating an idea. |
| arms crossed | A stated reservation or considered assessment. |
| shrugging | An unresolved tradeoff or uncertainty in the conversation. |
| facepalming | An admitted mistake or a light comic failure. |
| sitting at computer | Introduce a workbench demonstration or practical workflow. |
| typing | Show an implementation or coding step tied to the actual discussion. |
| holding whiteboard marker | Walk through a diagram after reviewing the source cutout edges. |
| holding clipboard | A checklist, review plan, or quality gate. |
| holding smartphone | A mobile app example or device-related workflow. |
| thumbs up | An explicitly positive verdict supported by the host discussion. |
| celebrating | A confirmed achievement or milestone. |
| arguing disagreeing | A real disagreement or debate, without intensifying its tone. |
| looking at other character | A conversational handoff or listening beat. |
| looking up at infographic | Guide attention to an explanation above the character. |

## Asset index

| ID | Angle | PNG |
| --- | --- | --- |
| `oscar.front.neutral` | front | [PNG](assets/characters/expressions/oscar/front/neutral.png) |
| `oscar.front.happy` | front | [PNG](assets/characters/expressions/oscar/front/happy.png) |
| `oscar.front.laughing` | front | [PNG](assets/characters/expressions/oscar/front/laughing.png) |
| `oscar.front.confused` | front | [PNG](assets/characters/expressions/oscar/front/confused.png) |
| `oscar.front.skeptical` | front | [PNG](assets/characters/expressions/oscar/front/skeptical.png) |
| `oscar.front.shocked` | front | [PNG](assets/characters/expressions/oscar/front/shocked.png) |
| `oscar.front.annoyed` | front | [PNG](assets/characters/expressions/oscar/front/annoyed.png) |
| `oscar.front.angry` | front | [PNG](assets/characters/expressions/oscar/front/angry.png) |
| `oscar.front.thinking` | front | [PNG](assets/characters/expressions/oscar/front/thinking.png) |
| `oscar.front.excited` | front | [PNG](assets/characters/expressions/oscar/front/excited.png) |
| `oscar.front.facepalm` | front | [PNG](assets/characters/expressions/oscar/front/facepalm.png) |
| `oscar.front.sarcastic` | front | [PNG](assets/characters/expressions/oscar/front/sarcastic.png) |
| `oscar.front.worried` | front | [PNG](assets/characters/expressions/oscar/front/worried.png) |
| `oscar.front.deadpan` | front | [PNG](assets/characters/expressions/oscar/front/deadpan.png) |
| `oscar.front.explaining` | front | [PNG](assets/characters/expressions/oscar/front/explaining.png) |
| `oscar.three-quarter-right.neutral` | three-quarter-right | [PNG](assets/characters/expressions/oscar/three-quarter-right/neutral.png) |
| `oscar.three-quarter-right.shocked` | three-quarter-right | [PNG](assets/characters/expressions/oscar/three-quarter-right/shocked.png) |
| `oscar.three-quarter-right.skeptical` | three-quarter-right | [PNG](assets/characters/expressions/oscar/three-quarter-right/skeptical.png) |
| `oscar.three-quarter-right.laughing` | three-quarter-right | [PNG](assets/characters/expressions/oscar/three-quarter-right/laughing.png) |
| `oscar.three-quarter-right.confused` | three-quarter-right | [PNG](assets/characters/expressions/oscar/three-quarter-right/confused.png) |
| `oscar.three-quarter-right.excited` | three-quarter-right | [PNG](assets/characters/expressions/oscar/three-quarter-right/excited.png) |
| `matt.front.neutral` | front | [PNG](assets/characters/expressions/matt/front/neutral.png) |
| `matt.front.happy` | front | [PNG](assets/characters/expressions/matt/front/happy.png) |
| `matt.front.laughing` | front | [PNG](assets/characters/expressions/matt/front/laughing.png) |
| `matt.front.confused` | front | [PNG](assets/characters/expressions/matt/front/confused.png) |
| `matt.front.skeptical` | front | [PNG](assets/characters/expressions/matt/front/skeptical.png) |
| `matt.front.shocked` | front | [PNG](assets/characters/expressions/matt/front/shocked.png) |
| `matt.front.annoyed` | front | [PNG](assets/characters/expressions/matt/front/annoyed.png) |
| `matt.front.angry` | front | [PNG](assets/characters/expressions/matt/front/angry.png) |
| `matt.front.thinking` | front | [PNG](assets/characters/expressions/matt/front/thinking.png) |
| `matt.front.excited` | front | [PNG](assets/characters/expressions/matt/front/excited.png) |
| `matt.front.facepalm` | front | [PNG](assets/characters/expressions/matt/front/facepalm.png) |
| `matt.front.sarcastic` | front | [PNG](assets/characters/expressions/matt/front/sarcastic.png) |
| `matt.front.worried` | front | [PNG](assets/characters/expressions/matt/front/worried.png) |
| `matt.front.deadpan` | front | [PNG](assets/characters/expressions/matt/front/deadpan.png) |
| `matt.front.explaining` | front | [PNG](assets/characters/expressions/matt/front/explaining.png) |
| `matt.three-quarter-right.neutral` | three-quarter-right | [PNG](assets/characters/expressions/matt/three-quarter-right/neutral.png) |
| `matt.three-quarter-right.shocked` | three-quarter-right | [PNG](assets/characters/expressions/matt/three-quarter-right/shocked.png) |
| `matt.three-quarter-right.skeptical` | three-quarter-right | [PNG](assets/characters/expressions/matt/three-quarter-right/skeptical.png) |
| `matt.three-quarter-right.laughing` | three-quarter-right | [PNG](assets/characters/expressions/matt/three-quarter-right/laughing.png) |
| `matt.three-quarter-right.confused` | three-quarter-right | [PNG](assets/characters/expressions/matt/three-quarter-right/confused.png) |
| `matt.three-quarter-right.excited` | three-quarter-right | [PNG](assets/characters/expressions/matt/three-quarter-right/excited.png) |
