# People — OM1

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

## Routing

| Concept | Value |
|---------|-------|
| People index | **Disabled** (`enablePeopleIndex: false`) — no `/team/` listing page |
| Profile URL | `/team/{slug}/` |
| People base (constants) | `/team` |

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 resource articles
- Edit bios shown in **Team grid** or **Leadership** collections on marketing pages
- 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 (**Person bio** component reads this) |
| `media` / `featuredImage` | Portrait photo — profile hero and team cards |
| `indexed` | `false` for author-only stubs without a public profile |

## Profile page structure

Public `/team/{slug}/` uses:

| Region | Type | Role |
|--------|------|------|
| Hero | **Person hero** | Name, title, portrait from person fields |
| Body | **Person bio** | Bio RTF from person entry |

Preview attrs map to `name`, `jobTitle`, `bio`, `featuredImage` / `media` on the person entry.

## Update portrait

Read `cms-edit://customer/task-media-reuse-and-upload` for hosted upload rules.

```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 /team/{slug}/
```

## Team grid on marketing pages

Solution and about-style pages embed Person entries in **Team grid** collections — not separate page entries.

```bash
cms-edit open /our-solutions
cms-edit snapshot
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
```

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 |
|------|-------|
| `/team/richard-gliklich/` | Founder / leadership |
| `/team/joseph-zabinski/` | Author / speaker (webinars) |

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

## Out of scope

- **Marketing page** content stacks for a people directory — `enablePeopleIndex` is off; there is no `/team/` index page to edit as a page entry
- Creating duplicate **Person hero** / **Person bio** components in article `content` — those read from the person entry on profile routes

## Publish handoff

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