Skip to content

[WIP] Onboarding: extend bespoke welcome to all MANAGE_TEAM sizes#89367

Draft
marcochavezf wants to merge 1 commit intomainfrom
marcochavezf/team-gt-10-bespoke-welcome-wip
Draft

[WIP] Onboarding: extend bespoke welcome to all MANAGE_TEAM sizes#89367
marcochavezf wants to merge 1 commit intomainfrom
marcochavezf/team-gt-10-bespoke-welcome-wip

Conversation

@marcochavezf
Copy link
Copy Markdown
Contributor

Explanation of Change

🚧 WIP / HOLD — do not merge yet.

  • Welcome copy is placeholder pending the team's review (lighter ~50w vs. middle ~70w variants, per-tier vs. uniform value-teaser language).
  • Web-Expensify counterpart #52519 (server-side guide-block append) needs to be in production before this can flip the gate safely.
  • A small companion edit to Web-Expensify UserAPI::queueAdminsRoomWelcome (extend isMicroManageTeamCohort to all MANAGE_TEAM sizes) will land alongside this PR.

This PR opens the deterministic bespoke welcome path to every MANAGE_TEAM cohort. Today it's gated to MICRO sizes (1-10) only; SMALL/MEDIUM_SMALL/MEDIUM/LARGE (11+) still see the legacy task-list welcome. After this lands and the Web-E side ships:

  1. Every MANAGE_TEAM signup gets the optimistic Concierge welcome body + pregenerated followup chips.
  2. For TEAM 11+ specifically, the server-side append in queueAdminsRoomWelcome (Web-E PR We created multiple workspaces for user in onboarding #52519) inserts a "you also have {guide name} assigned to your account as your dedicated onboarding specialist" paragraph with a Book a call with {name} link between the welcome body and the chips — so the human onboarding specialist gets introduced distinctly from Concierge instead of conflated into one greeting.

Two changes in this PR:

  1. isPhase1Cohort extended to cover SMALL, MEDIUM_SMALL, MEDIUM, LARGE alongside the existing MICRO_SMALL / MICRO_MEDIUM / MICRO. (src/libs/ReportUtils.ts:11708)
  2. Welcome speaker swap — drops the "I'm your Expensify setup specialist" framing in getBespokeWelcomeMessage per Daniel's onboarding-test feedback (2026-04-30 video at ~6:33). Concierge is now the speaker; the assigned human guide gets introduced server-side. Tier-specific value teasers reworded to point at the followup chips. (src/libs/ReportUtils.ts:11641)

Fixed Issues

$ https://github.com/Expensify/Expensify/issues/621176

Tests

  1. Sign up a fresh Gmail account on dev.new.expensify.com:8082 (incognito).
  2. Pick Manage my team's expenses then 11-25 employees (any TEAM 11+ size). Pick any accounting integration. Continue.
  3. Open the new #admins chat. Wait until Concierge posts the welcome message with three followup chips.
  4. Confirm the welcome message:
    • Starts with "I'm Concierge — I'll help you get Expensify working for your team" (NOT "I'm your Expensify setup specialist").
    • For TEAM 11+, includes a separate paragraph introducing your assigned guide by name with a clickable Book a call link (this comes from the server-side append; depends on Web-Expensify We created multiple workspaces for user in onboarding #52519 being deployed).
    • Has three followup chips at the bottom.
  5. Click any followup chip — the canned answer renders inline.
  6. Repeat for 1-4 employees (MICRO segment) — confirm welcome still works as it does on production today, with the speaker now reading "I'm Concierge" instead of "setup specialist".
  • Verify that no errors appear in the JS console.

Offline tests

No behavior change while offline — completeOnboarding queues the request the same way it already did. While offline the welcome message + chips render optimistically as before; the server-rendered guide block (if applicable) materializes via reportActionID reconciliation when the request flushes on reconnect.

QA Steps

Same as Tests above on staging once both sides ship:

  1. staging.new.expensify.com fresh signup.
  2. Repeat with 26-100, 101-1000, 1001+ employees — confirm bespoke welcome lands in each, and the guide-introduction paragraph + book-a-call link appears for each.
  3. Confirm an MICRO (1-10) signup still works as today (no guide-block paragraph; Concierge is both voice and onboarding contact).
  • Verify that no errors appear in the JS console.

PR Author Checklist

  • I linked the correct issue in the ### Fixed Issues section above
  • I wrote clear testing steps that cover the changes made in this PR
  • I included screenshots or videos for tests on all platforms (pending — will add once copy is finalized to avoid re-recording)
  • I ran the tests on all platforms & verified they passed on:
    • Android: Native
    • Android: mWeb Chrome
    • iOS: Native
    • iOS: mWeb Safari
    • MacOS: Chrome / Safari
  • I verified there are no console errors
  • I followed proper code patterns
  • I verified all code is DRY
  • I verified the language code change works through localization

Expands isPhase1Cohort from MICRO_* (1-10) to all MANAGE_TEAM company
sizes — SMALL (11-25), MEDIUM_SMALL (26-100), MEDIUM (101-1000), LARGE
(1001+). Once Web-Expensify PR #52519 (server-side guide-block append)
is in production, every MANAGE_TEAM signup goes through the deterministic
bespoke welcome path: optimistic Concierge welcome body + server-rendered
guide-introduction paragraph + pregenerated followup chips.

Switches the welcome body's speaker from "I'm your Expensify setup
specialist" to "I'm Concierge" per Daniel's onboarding-test feedback —
for TEAM 11+ the human onboarding specialist gets introduced
separately by the server-side append (with name + book-a-call link),
so the Concierge / specialist roles are distinct in the user's view
instead of conflated into one greeting.

DRAFT — copy is placeholder pending team review on lighter (~50w) vs.
middle (~70w) variants and per-tier vs. uniform value-teaser language.
Hold on merge until copy is finalized and Web-Expensify#52519 ships.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant