Demo runbook: Monday 2 November 2026

Demo driver: the tickets owner. Presenter: Gus. Standby on the call: connector owner (box health), Owner API owner (invitation queue), identity owner (first login), mobile (TestFlight build).

Timeline

WhenWhatWho
---------
Sat 31 OctDemo set exists (DEMO-DATA.md). Put tester inboxes and mobiles on App Demo Owner 01 and 02. Add one construction update on Tower 1 and one Owner document with a file for each of the two owners.Demo driver, with the connector owner
Sun 1 Nov 12:00 localRelease freeze on staging: no API, connector, QA bundle or mobile release until after the demo.Gus
Sun 1 Nov 18:00 localDry run on the call, screen-recorded end to end. The recording is the fallback.Demo driver, everyone on standby
Sun 1 Nov after the dry runResolve every item under "Gaps" below or write its workaround into this file.Demo driver
Mon 2 Nov, 60 min beforePre-flight checks (below).Demo driver, connector owner
Mon 2 NovDemo (10 minutes inside the 30-minute slot).Demo driver drives, Gus narrates

Demo data (from the connector owner's DEMO-DATA.md, 30 October, Omniyat AI sandbox)

Prerequisites (from OMN-966, 967, 981, 990, 1017, 1019)

Pre-flight, 60 minutes before

  1. /health on staging reports both boxes healthy with a fresh relayAgeMs.
  2. oc sf status shows zero outbox depth and no new sweep failures on omniyat-ai.
  3. Query as the bridge alias: SELECT Id, Status__c, SubStatus__c, Account__c FROM SalesOrder__c WHERE Account__c = '<Owner 02 Account id>' and confirm none of the four is Sold.
  4. The demo inbox receives a test email (send one to it).
  5. The demo phone is signed out and on Wi-Fi.
  6. Open the recording from the dry run and check it plays.

Script (10 minutes)

StepDriver doesAudience seesNarration lineIf it fails
---------------
1Shows App Demo Owner 02's Tower 1 Sales Order in the Omniyat AI sandbox: Status SPA Customer Signed, buyer and unit DEMO-J1-0601 visible.Salesforce record"This is a real sandbox record on the Omniyat AI org, the same org as production's shape."Switch to the recording.
2Ticks Omniyat_Signed_Spa__c and saves (the other three flags are already set on every demo order). The flow sets Sold and SPA Omniyat Signed in one save.Status flips to Sold"The sale closes in Salesforce. Nobody touches our system."If the field cannot be ticked from the page, set Status to Sold directly.
3Shows the connector log line owner_invitation_settled with reason: invited, or the app.invitation row going queued then sent within a minute.Staging log or table"The connector heard the event through the Salesforce Pub/Sub channel and the platform queued the Owner invitation."Wait up to two minutes; then show the recording of this step and continue with the dry-run buyer who is already invited.
4Opens the invitation email on the demo phone and taps the Branch link.Email, app opens"The Owner gets one email with a link; the app opens on the right screen."Open the link from the inbox in a browser; the app resumes on the handoff.
5Enters the mobile number held on the Account; receives the OTP; accepts terms and privacy; enables biometrics; lands on Home.First login"We check the Owner against Salesforce live: the mobile on the Account is the proof. No passport, no manual step."connector_unavailable means the box is down: show the recording.
6After the dry run has also sold Owner 02's Tower 2 to 4 orders, the unit switch shows all four stages. Opens the Tower 1 unit, then Construction: the latest update and milestones.Unit switch, Construction screen"Updates and milestones are read live from Omniyat AI. Photos and the percentage are still our editorial content; that is B2, due 6 November."None needed; the screen falls back to editorial content.
7Opens Documents, opens one document.Document list, file"These are the Owner's files from Salesforce, streamed on first open."If the list is empty, the sandbox has no Document__c for this buyer: show the dry-run recording.
8Stops. Presenter shows the evidence slide: move-in journey report proven in the corven-ai sandbox, first-login journey, household journey.Slide"Move-in, household and First Visit are proven the same way on the Corven org; they are not on this buyer's path yet because they come after handover."n/a

Do not demo: payments (seeded), amenities, services, move-in on the demo buyer.

Evidence to have open in tabs

Gaps to close on Sunday

GapOwnerResolution
---------
Which TestFlight build is on the demo phone (RC 43 carries the revamp; the build must pass the first-login journey on a phone first).MobileDecide at the dry run; record the RC number here.
Whether the demo driver's sandbox user can tick Omniyat_Signed_Spa__c from the page (QA could not; DocuSign only).Connector ownerGrant the field edit to the demo user, or use "set Status to Sold" as the trigger.
The Sold trigger has not been re-proven on the current staging release since PR 182.Owner API ownerThe dry run is the proof; comment on OMN-1017.
Which tester inbox and mobile go on Owner 01 and Owner 02.Demo driverSet them on the Accounts before the dry run and note them here.
Whether selling Owner 02's Tower 2 to 4 orders before Monday (for the unit switch) stops the Tower 1 order from inviting. An already-invited customer gets no second invitation, so sell Tower 1 live and the other three after.Owner API ownerDecide at the dry run with Owner 01.
Construction update and Owner document exist for the demo unit.Connector ownerCreate one Construction_Update__c and one Document__c with a file per demo unit.