---
title: "S04 bindings"
description: "Data-binding map of Onboarding · Scenario + topics: every field to its source, and what each required state shows."
source: "design/hifi/S04/bindings.md"
---

> Part of [Brand and design](/design/llms.txt). Every page: [llms.txt](/llms.txt).

# Data-binding map: S04 Onboarding · Scenario + topics

> Generated by `botgumi-design index` from `../../screens.json`. Edit that file, not this page.

Every field [S04](/design/hifi/s04/index.md) shows and where it comes from.

| Field | Source (endpoint or local state) | Format | Fallback |
|---|---|---|---|
| goal / scenario / self-level · options | `local onboarding.goal` · static catalog keys `onboarding.<step>.<enum>` mapping to the `OnboardingAnswers` enums | — | — |
| goal / scenario / self-level · options | `local onboarding.scenario` |  |  |
| goal / scenario / self-level · options | `local onboarding.self_level` |  |  |
| scenario · topic chips | `api GET /topics topics[].name` · `GET /v1/topics → topics[].name` (Accept-Language) | chip, multi-select → `onboarding.preferred_topics` | hide the section if the request fails |
| `onboarding.preferred_topics[] ∋ knowledge (GET /v1/topics, Accept-Language)` | `local onboarding.preferred_topics` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `onboarding.preferred_topics[] ∋ product (GET /v1/topics, Accept-Language)` | `local onboarding.preferred_topics` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `onboarding.preferred_topics[] ∋ psychology (GET /v1/topics, Accept-Language)` | `local onboarding.preferred_topics` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `onboarding.preferred_topics[] ∋ tech (GET /v1/topics, Accept-Language)` | `local onboarding.preferred_topics` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `onboarding.preferred_topics[] ∋ workplace (GET /v1/topics, Accept-Language)` | `local onboarding.preferred_topics` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `onboarding.scenario = creator` | `local onboarding.scenario` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `onboarding.scenario = social` | `local onboarding.scenario` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `onboarding.scenario = study` | `local onboarding.scenario` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |
| `onboarding.scenario = work_meeting` | `local onboarding.scenario` · From the board's `data-bind`; no row in data-binding.md yet. |  |  |

## Binds on the boards

The `data-bind` values across every state.

- `onboarding.preferred_topics[] ∋ knowledge (GET /v1/topics, Accept-Language)`
- `onboarding.preferred_topics[] ∋ product (GET /v1/topics, Accept-Language)`
- `onboarding.preferred_topics[] ∋ psychology (GET /v1/topics, Accept-Language)`
- `onboarding.preferred_topics[] ∋ tech (GET /v1/topics, Accept-Language)`
- `onboarding.preferred_topics[] ∋ workplace (GET /v1/topics, Accept-Language)`
- `onboarding.scenario = creator`
- `onboarding.scenario = social`
- `onboarding.scenario = study`
- `onboarding.scenario = work_meeting`

## States

- Loading: From [states.md](/design/states/index.md) (Onboarding (6 steps)): n/a (local)
- Empty: From [states.md](/design/states/index.md) (Onboarding (6 steps)): n/a
- Error (retryable / not): From [states.md](/design/states/index.md) (Onboarding (6 steps)): `POST /onboarding` failed: inline banner + Retry; answers kept · fatal: generic error, answers kept
- Offline: From [states.md](/design/states/index.md) (Onboarding (6 steps)): answers kept; submit queued; diagnostic needs network → "Connect to start your diagnostic"
