# Personal brand — agent playbook

> Paste this whole file (with the BRIEF filled in) into Claude cowork, chat, or Code. The agent walks through it with you and stops for your approval at every step that matters.

## What you'll get

A full month of branded content for a single person — same face across every post, same look, same voice. The hardest thing about building a personal brand is consistency across hundreds of posts. This playbook automates the consistency:

- **Face lock** — either a trained LoRA from your face photos, or a character-anchor sheet. Reused on every downstream image.
- **Branded LinkedIn cover** — wide-format hero with your face + tagline.
- **5 headshot variants** — same face, different settings (office, outdoor, conference, podcast, casual). Drop into any context.
- **7 weekday post images** — one per day, each themed to your weekly content calendar (Mon = X, Tue = Y…).
- **1 monthly cover image** — the month's hero, for newsletter headers and pinned tweets.
- **Recap newsletter hero** — wide banner for your monthly recap email.

**Time**: ~35 minutes wall clock (LoRA training adds ~10-15 minutes if chosen). **Your attention**: about 8 minutes across 7 quick approvals. **Cost**: $2.20 – $4.50 end to end.

## Tell the agent about you

```yaml
full_name:          # e.g. Maya Chen
title:              # e.g. Head of Product, Series C SaaS
industry:           # e.g. B2B SaaS / product management
weekly_themes:      # one per weekday, e.g.
                    #   monday: leadership lesson
                    #   tuesday: tactical PM tip
                    #   wednesday: AMA / question
                    #   thursday: case study / breakdown
                    #   friday: weekly recap / lighter
brand_palette:      # 4 hex colors, e.g. #1B2A4A #C9A86B #F0E6D2 #2E2625
voice_style:        # warm-authoritative / playful-honest / quiet-expert / bold-direct
face_photo_url:     # 3-5 reference photos of you (URLs, comma-separated) — varied angles + lighting
```

## Quality controls (new — auto-applied)

This playbook leverages the closed quality loop. The agent applies these by default; you don't have to ask:

- **Cost upfront.** Before any multi-step batch fires, the agent calls `submit_plan` with `confirm:false` and shows you the proposed steps + total cost. Nothing runs until you approve. LoRA training is a $1+ commitment — never auto-fires.
- **Auto-retry on weak shots.** The server default is `quality_threshold: 0.7`. For the LinkedIn cover, the headshot variants, and every weekday post the playbook step tells the agent to pass `quality_threshold: 0.85` so a low-confidence first try gets one auto-retry before you see it. Face fidelity is non-negotiable for a personal brand.
- **Critic verdict on the result.** When the 7-post weekday batch finishes, the agent reads the `critique` field on the response (verdict: ship / iterate, plus per-post face-drift flags) and surfaces it for your review.
- **One-click recovery.** If a step fails, `get_plan` returns a `recovery` hint pointing at `replan({plan_id})` — the agent classifies the failure and proposes a recovery plan you can approve.
- **End-of-project scorecard.** The final wrap-up calls `get_scorecard({project_id})` with succeeded count, mean quality score, critic verdict, total cost, and wall time.

You can override any of these per step.

## How this works

Seven gates. The first decision is the biggest: train a LoRA from your face (~$1 + 10 min, but gives you the most reliable face consistency across hundreds of future posts), OR use a character-anchor sheet from your reference photos (free + 1 min, but slightly more drift over time). The agent recommends LoRA if you supplied 3+ face photos.

## The steps

### Step 0 — Confirm the brief

The agent reads back the BRIEF — your name, title, weekly themes, voice, face photos count — so you catch typos before any image renders or any LoRA gets trained.

**STOP**: "Brief looks right? (approve / edit [field] [new value])"

### Step 1 — Choose the face-lock strategy (~30s, no spend yet)

The agent shows you two options:

- **A. Train a LoRA from your face photos** — costs ~$1, takes ~10 min, gives you the most reliable face consistency across every future image you generate (not just this month — every month forever). Recommended if you have 3+ varied reference photos.
- **B. Use a character-anchor sheet** — free, takes ~1 min. The agent picks the best reference photo as the anchor and uses it on every downstream image. Slightly more drift across many images but no upfront cost.

**STOP**: "Train LoRA (~$1) or use anchor (free)? (lora / anchor)"

### Step 2 — Lock the look + the face (~1 min if anchor, ~10 min if LoRA, $0.05 – $1.05)

The agent builds a brand kit from your `brand_palette` and `voice_style`. It infers 6-8 voice keywords from your industry + voice_style (e.g. warm-authoritative + B2B SaaS → "confident", "warm", "grounded", "specific", "lived-in") and renders 2 reference images in this look (without your face yet — just the brand world).

If you chose LoRA in step 1, the agent calls `submit_lora_train` on your face_photo_url list (poll with `get_lora_train`), then `attach_lora_to_project` once done — showing the brand kit while training runs. Training finishes within 10-15 min.

If you chose anchor, the agent picks the best reference photo and locks it as the face anchor (used as `source_url` for `kontext-edit` on every downstream image).

> **For the agent**: this is the identity gate. Build the kit with `brand_kit_create` + `set_active_brand_kit`; lock the face via `submit_lora_train`/`attach_lora_to_project` (LoRA) or the anchor photo. Every later step inherits both. Note: LoRA only attaches to `flux-dev`/`flux-schnell` (the only LoRA-compatible base models).

**STOP**: "Approve the look + face lock? (approve / refine [direction])"

### Step 3 — LinkedIn cover + 5 headshot variants (one approval gate, ~3 min, ~$0.40)

Before step 3, the agent calls `submit_plan` with steps {linkedin cover × 1, headshot variants × 5} and shows the total cost (~$0.40 typical). You approve once for the whole batch.

The LinkedIn cover is a wide 1584×396 banner — your face from the lock on the right, your name + title on the left in your brand typography, brand-colored background. Render text-bearing covers with `mai-image-2.5` or `gpt-image` (readable branding text); face-only shots via `flux-dev`+LoRA or `kontext-edit`+anchor.

The 5 headshot variants — same you, 5 different settings: (1) office / desk, (2) outdoor / natural light, (3) conference / on-stage, (4) podcast / studio, (5) casual / coffee shop. All face-locked, all in your brand palette.

> **For the agent**: pass `quality_threshold: 0.85` on every shot — face fidelity is non-negotiable. Auto-retry fires once on any shot Gemini Vision grades face-similarity below 0.85.

**STOP**: "Approve the cover + 5 headshots, or redo one? (approve / redo [#] [direction])"

### Step 4 — 7 weekday content posts (~5 min, ~$0.80)

The agent generates one post image per weekday based on your `weekly_themes`. Each is a 1080×1080 square (LinkedIn + IG friendly), brand-colored, with your face from the lock and a topic-specific composition behind you.

Examples by theme:
- **leadership lesson** → you at a whiteboard, contemplative pose
- **tactical PM tip** → you at a laptop, focused work pose
- **AMA / question** → you on a podcast mic, open forward pose
- **case study** → you reviewing a doc, analytical pose
- **weekly recap** → you with a coffee, lighter / smiling pose

Each post has a short overlay caption — the theme name + a teaser line.

> **For the agent**: pass `quality_threshold: 0.85` on every post. Face drift across 7 posts is the death of a personal brand.

> **Critic verdict** — the 7-post batch returns a `critique` field with per-post face-drift flags. If verdict=iterate, surface the drifted posts so the user can target a re-render at exactly those instead of redoing all 7.

**STOP**: "Which posts to keep? (keep all / redo [day] [direction])"

### Step 5 — Monthly cover + newsletter hero (~2 min, ~$0.20)

A monthly cover image — wide 1920×1080, you in a "month's hero" pose with the month name and your tagline. This goes up as your pinned tweet, your newsletter header, and the top of your monthly recap post.

A recap newsletter hero — same vibe, 1200×600 for email banner ratio.

Both face-locked.

> **For the agent**: pass `quality_threshold: 0.85` on both. These are high-visibility.

**STOP**: "Approve the monthly cover + newsletter hero? (approve / refine [which one] [direction])"

### Step 6 — Caption pack + scheduling sheet (~1 min, ~$0.02)

For each of the 7 weekday posts, the agent writes a caption in your voice_style. LinkedIn-length (1200-1800 chars, with line breaks, no emojis unless your voice is playful-honest), plus an IG-ready short version (90-150 chars, more visual).

A scheduling sheet — a simple HTML page that lists every image + caption + suggested post time, in your weekly cadence. Saved to `public/launches/{name-slug}-schedule.html`.

**STOP**: "Approve the captions + schedule? (approve / refine [which day] [direction])"

### Final step — scorecard wrap-up

After all deliverables ship, call:

```
get_scorecard({ project_id: "{the project id from earlier steps}" })
```

The response is a one-page report card:

```
Scorecard for cjob_xxx
{N}/{N} scenes shipped — critic: SHIP (or ITERATE)
Title: <full_name — month>
Steps: N/N succeeded (100%)
Quality: mean X.XX · M/N passed · K retries
Critic: SHIP/ITERATE
Cost: $X.XX actual (est $Y.YY) · Ts wall time
Viewer: <project URL>
```

Save the scorecard to your personal launches folder. Over months, you'll see the quality trend.

## When you're done

The agent prints:

```
✅ Face lock: lora_xxx (or anchor_xxx)
✅ LinkedIn cover: <URL>
✅ Headshot variants (5): <viewer URL>
✅ Weekday posts (7): <viewer URL>
✅ Monthly cover: <URL>
✅ Newsletter hero: <URL>
✅ Schedule page: public/launches/{name-slug}-schedule.html

Total spent: $X.XX
Total wall-clock: MM:SS
```

## What to do next

1. **Upload the LinkedIn cover** to your LinkedIn profile right now. It's the first thing every visitor sees.
2. **Pin the monthly cover image** to the top of your X / LinkedIn for the month.
3. **Wire the 7 weekday posts into your scheduler** — Buffer, Hootsuite, Publora — at your normal post times. The schedule page tells you exactly which post on which day.
4. **Embed the newsletter hero** in your monthly recap email as the header image.
5. **Save the LoRA / anchor ID** — next month, re-use the same face lock. Just change `weekly_themes` and the month name. Your face stays the same face across every post you'll ever make. That's the brand.
