# People — Pedestal Health

Playbook for **Person** entries — team profiles, leadership, and article authors.

## Routing

| Concept | Value |
|---------|-------|
| People index | `/people/` |
| Profile URL | `/people/{slug}/` |
| People base (constants) | `/people` |

Read `cms-edit://customer/routing` for live flags (`enablePerson`, `enablePeopleIndex`).

## When to use

- Create or update a **person** entry (leadership, author, speaker)
- Link `authors` on news or publication articles
- Edit bios shown in **Leadership** grid on `/about/`
- Batch import via `task-authors-import`

Person **profile pages** render from Person entries — they are not marketing **page** entries.

## Required fields

| Field | Notes |
|-------|-------|
| `name` | Display name |
| `slug` | URL segment — lowercase, hyphenated (`firstname-lastname`) |
| `jobTitle` | Required in CMS |

## Recommended fields

| Field | Notes |
|-------|-------|
| `bio` | Rich text — full profile page body |
| `media` | Portrait photo (Asset link) — profile hero and leadership cards; use **PNG** when background is transparent |
| `featuredImage` | Fallback visual when `media` unset |
| `indexed` | `false` for author-only stubs without a public profile |

## Profile page structure

Public `/people/{slug}/` uses **Person hero** (from person fields, with component overrides optional). Preview attrs map to `name`, `jobTitle`, `bio`, `media` on the person entry.

## Update portrait (`media`)

Read `cms-edit://customer/task-media-reuse-and-upload` for hosted upload rules (`--base64` with encoded bytes, not local paths).

```bash
cms-edit open --id <person-entry-id>
cms-edit asset set @root media <new-asset-id>
cms-edit diff && cms-edit save
cms-edit preview urls /people/{slug}/
```

## Leadership grid (About page)

`/about/` embeds Person entries in a **Leadership** collection — not separate page entries.

```bash
cms-edit open /about
cms-edit snapshot
# Note @cN for leadership collection items, then:
cms-edit open <personEntryId> --id
cms-edit set @root name "Full Name"
cms-edit set @root jobTitle "Title"
printf 'Bio paragraph.\n' | cms-edit rtf @root bio --markdown -
cms-edit diff && cms-edit save
```

## Linking authors to articles

```bash
cms-edit open --article-slug <slug>
cms-edit set @root authors <personId1>,<personId2> --links
cms-edit diff
cms-edit save
```

Publications hero shows the `authors` array only (not legacy `author` or author-name tags). Link person entries even when `indexed: false` if they appear in bylines.

## Batch import

```bash
cms-edit create person-from-json --file authors.json --dry-run
cms-edit create person-from-json --file authors.json --if-not-exists
```

See `cms-edit help person-from-json` and `task-authors-import`.

## Reference people

| Slug | Notes |
|------|-------|
| `/people/michael-fried/` | Leadership / clinical |
| `/people/steve-swanson/` | Leadership |
| `/people/m-alan-brookhart/` | Author / leadership |

Clone slug patterns from existing indexed profiles before creating new entries.

## Out of scope

- **Provider-style marketing pages** — Pedestal uses Person entries, not page-based clinician profiles
- Editing **page** content stacks for `/people/` index — navigation/hero is a marketing page; person list is driven by indexed Person entries

## Publish handoff

`save` creates drafts only — publish in Contentful UI when ready.