# tryst-profile-editor.screen The structured profile editor for Tryst — about-me + rates + services + hours + tour cities + photos slot picker. Implements [surface-tryst.brief.md §3, §11](./surface-tryst.brief.md). Extends [brief H §H2](./H-recurring-chores.brief.md) diff-card pattern for tabular fields. Voice: working. ## Layout (full-screen, sectioned and scrollable) ``` ┌─────────────────────────────────────────────────┐ │ Cancel Edit Tryst profile Preview │ 56pt ├─────────────────────────────────────────────────┤ │ │ │ ─── About-me ─── │ │ ╭───────────────────────────────────────╮ │ │ │ Independent escort based in the Bay │ │ │ │ Area. Trans, femme, real, no rush. │ │ │ ╰───────────────────────────────────────╯ │ │ 432 / 500 ✓ no banned phrases per K2 │ │ │ │ ─── Rates ─── │ │ Incall 1h: [ $400 ] 2h: [ $700 ] │ │ Outcall 1h: [ $500 ] 2h: [ $850 ] │ │ Overnight: [ $2,500 ] │ │ Currency: [ USD ▼ ] │ │ │ │ ─── Services ─── │ │ [☑ GFE] [☑ Companionship] [☐ Couples] │ │ [☑ Tours] [☐ Overnight] [☑ Multi-hour] │ │ (chips from Tryst-side taxonomy) │ │ │ │ ─── Hours ─── │ │ Mon: [ 10:00–02:00 ] Tue: [ closed ] │ │ Wed: [ 12:00–22:00 ] … │ │ │ │ ─── Tour cities (next 14d) ─── │ │ • Berlin (Oct 3–7) · pending publish │ │ [ Edit tours → ] │ routes to H §H3 │ │ │ ─── Photos ─── │ │ [ Manage photos → ] │ routes to tryst-photo-manager │ │ └─────────────────────────────────────────────────┘ ``` ## Components | Component | Notes | |---|---| | About-me | Free-text with char count + K2 phrase-blocklist check (per [brief K §K2](./K-safety-blocklist.brief.md)). Tabular fields below. | | Rates | Per-tier numeric inputs with currency picker. Validates positive integers. | | Services | Multi-select chips from Tryst's fixed taxonomy. | | Hours | Per-weekday time-range pickers; "closed" toggle per day. | | Tour cities | Read-only summary; edits route to [H §H3 multi-surface fan-out](./H-recurring-chores.brief.md). | | Photos | Read-only count; edits route to [tryst-photo-manager.screen.md](./tryst-photo-manager.screen.md). | ## States 1. **Loaded (no edits)** — current values shown; Preview disabled, Cancel = Done. 2. **Editing** — at least one field changed; Preview enabled (route to [tryst-profile-preview.screen.md](./tryst-profile-preview.screen.md)); Cancel warns "Discard?" 3. **K2 phrase hit** — yellow chip inline: "Your about-me contains 'real name' (per your blocklist). Edit or override?" 4. **Validation error** — rate ≤ 0, time-range invalid, etc. Inline. 5. **Saving (after Preview → Approve)** — banner: "Pushing to Tryst..." 6. **Save success** — sheet dismisses; receipt: "Tryst profile updated. Live in ~2 minutes." 7. **Save failed** — per brief M: banner with retry. 8. **Conflict** (concurrent edit from another device) — per M §M7 3-way diff. 9. **Tryst-side rejection** (photo / phrase / format) — inline error on the affected field. 10. **VoiceOver** — sections read in declared order; rates announce as table rows. ## Interactions - **Tap any field** → opens its editor. - **Tap "Preview"** → [tryst-profile-preview.screen.md](./tryst-profile-preview.screen.md) with the proposed state. - **Tap "Edit tours →"** → [tour-leg-detail.screen.md](./tour-leg-detail.screen.md) or H §H3 compose. - **Tap "Manage photos →"** → [tryst-photo-manager.screen.md](./tryst-photo-manager.screen.md). - **Swipe-down** → "Discard?" if dirty. ## Edge cases - **Tryst's taxonomy changes** (new service added / removed) — chip set re-pulled at sheet-open; deprecated chips greyed. - **Currency mismatch** (Quinn's setting says USD but Tryst's market is EUR) — inline warning. - **K2 blocklist phrase appearing only after edit** — chip pulses to draw attention before save. - **Multi-tier rate inconsistency** (overnight cheaper than 2h) — inline warning: "Your overnight is less than 2h. Confirm?" - **Profile too short** (about-me < 50 chars) — Tryst-side rejection; warn before save. ## *Generalization callout* Other directories' profile editors are structurally similar but with different field sets: - **TS4Rent**: rates table similar; adds Sumsub-verified-name handling. - **Slixa**: simpler rates (no incall/outcall split). - **Eros**: city-tier rates (per neighborhood). - **OnlyFans**: subscription tiers + PPV pricing (totally different schema; profile-editor variant is much more involved). Per-surface brief documents the schema; this screen pattern generalizes to *any* tabular profile editor. ## Related - [surface-tryst.brief.md §3, §11](./surface-tryst.brief.md) — parent. - [tryst-profile-preview.screen.md](./tryst-profile-preview.screen.md) — preview/approve target. - [tryst-photo-manager.screen.md](./tryst-photo-manager.screen.md) — photos sub-editor. - [Brief H §H2](./H-recurring-chores.brief.md) — diff-card pattern parent. - [Brief K §K2](./K-safety-blocklist.brief.md) — phrase blocklist enforcement. - [Brief M §M7](./M-error-degraded-modes.brief.md) — conflict resolution. - [Brief I](./I-audit-trust-replay.brief.md) — every save = audit row. ## Out of scope - Photo upload UX (separate screen). - Tour compose (H §H3 / tour-leg-detail). - A/B-testing variants of profile copy (P3+).