OMNIYAT COLLECTION · LINEAR PROJECT “SALESFORCE”

The Salesforce integration, as it runs today

What is wired and proven, what ships by Friday 6 November, and how Salesforce work flows from Monday on.

Monday 2 November 2026 · prepared 31 October from Linear, the collections and salesforce repositories and the 30 October team meeting
1 / 16

Three things this meeting settles30 minutes: 5 context, 10 live demo, 10 plan, 5 process and asks

It is wired

A real sale in the Omniyat AI sandbox invites the Owner, who logs in and reads construction and documents from Salesforce, on a phone, live.

What ships by 6 November

The Omniyat AI owner journey, item by item, with one owner each. Payments, pre-handover and Living follow on 13 November. Five items wait on Salesforce answers and carry no date until they land.

How work flows from now

Every Salesforce question is a Linear decision with an owner and a two-day answer. Nothing merges with the screen done and Salesforce not connected.

We are later than planned. This deck says where, why, and what is different now. It does not promise the full scope on 6 November.
2 / 16

What shipped since 25 Octoberall on staging, gated releases, nothing hand-deployed

17API releases, api-v0.3.107 to 0.3.123, the last on 30 October

310pull requests merged: 155 collections, 72 salesforce, 83 cloud

6TestFlight builds, RC 38 to RC 43, 27 to 30 October

12 minper API release through the gate, down from 33

Integration work landed

  • Owner invitation raised by a Sales Order turning Sold in Omniyat AI, through the connector, with the email and deep link sent by the platform.
  • Owner first login verified live against the Account’s mobile, one-time code by SMS.
  • Unit catalogue, unit stage, construction updates and Owner documents read from Omniyat AI as the integration user.
  • Move-in Case, household invitations and First Visit appointments proven against the Corven AI sandbox by repeatable journeys.
  • One connector box per Salesforce org, each with its own credentials, subscriptions and health.

QA position, 30 October

Cycles 1 to 7 executedabout 75%, 26 tests left, 18 blocked
Cycle 8started
Salesforce end-to-end scenarios19 prepared for cycle 9: family access, construction, payments, visits, amenities, rescheduling, cancellation
Visual pass against Figmanot started, runs in parallel
3 / 16

What we haveStaging today; production has the same shape with its own orgs

Collections platform and Salesforce integration Staging architecture. The Owner app uses the Platform API Worker through Cloudflare Access. The Connector Worker has a separate Go container and credentials for each Salesforce org. Numbered arrows match the flow legend below the diagram. Owner app TestFlight RC 43, Expo Branch deep links Omniyat, Beyond, Corven tenant themes Android deferred THIRD PARTIES Twilio SMS codes Email delivery Branch links QA engine oc qa, Go journeys worlds, ledger, cleanup verifies Salesforce Engineers GitHub Enterprise Actions OpenTofu · oc CLI CLOUDFLARE · COLLECTIONS PLATFORM · STAGING SHOWN Cloudflare Access for every Worker; Owner sessions; service tokens for tooling Platform API Worker omniyat-platform · api-v0.3.123 identity, portfolio, pre-handover handover, post-handover, living 3 Durable Objects BookingCoordinator ChangeStream · AuthAtomics 6 Workflows: owner claim, booking confirmation, offerings confirmation, household change, First Visit mirror, timeslot sync. 6 Workflows claims · confirms · visits · slots 3 Queues + dead letters omniyat-domain-events omniyat-invitation-delivery omniyat-connector-changes Connector Worker omniyat-connector · connector-v0.7.0 ConnectorLink DO: link state SalesforceConnector DO per org omniyat-ai box Go container · own Hyperdrive JWT, server, locator keys, pepper corven-ai box Go container · own Hyperdrive JWT, server, locator keys, pepper Up to 4 Go container instances Postgres Supabase via Hyperdrive KV sessions flags Email invitations R2 documents omniyat-documents Salesforce file cache Release gate cloud-cli-v0.31.0 · GitHub Actions trusted CI, sealed bundle, migrations shadow deploy, health proven, cut-over Evidence evidence-v0.2.1 · ops-v0.8.0 OTLP from both Workers to Loki Grafana dashboards and alerts SALESFORCE · TWO ORGS · SANDBOXES Omniyat AI owners before the keys Person Accounts, Sales Orders Units, Building sections Construction updates Documents, files, payment plans sandbox omniyatai · production pending Corven AI residents after the keys Residents, Households, Pets Cases: move-in, service, maintenance Appointments: First Visit, handover Properties, residences catalogue sandbox corvenai · production pending How we connect bridge integration user per org JWT bearer · REST and SOQL Pub/Sub API for change events 4 5 9 10 2 6 1 6 7 8 3 8 11
  1. 1Sold event by Pub/Sub into the box
  2. 2connector-changes queue to the API
  3. 3invitation email, one deep link
  4. 4app calls HTTPS through Access
  5. 5SMS code by Twilio at first login
  6. 6reads: service binding, then REST
  7. 7writes after the keys to Corven AI
  8. 8R2 file cache, Postgres, KV
  9. 9QA journeys drive the API
  10. 10release gate, no manual deploys
  11. 11telemetry to Loki and Grafana
Collection, ours Salesforce supporting services Salesforce traffic as the bridge integration user people and tooling
4 / 16

The path we demoa sale closes in Salesforce; nobody touches our system until the Owner opens the email

Omniyat AI sandboxSales Order, Account, Unit omniyat-ai boxconnector container Platform APIqueues, workflows, Postgres Email, SMS, Branchthird parties Owner’s phoneTestFlight build 1 Operator ticks “Omniyat signed SPA”; the flow sets Status Sold and Sub-status SPA Omniyat Signed in one save. Sold alone also fires. 2 Pub/Sub event on the invitation channel 3 reads buyer, unit, building as the bridge user 4 owner_invitation_settled, reason invited 5 invitation row queued, then sent: email with a Branch link Owner opens the email, taps the link 6 first login with the mobile number held on the Account one-time code by SMS code, terms, privacy, biometrics: signed in 7 opens Construction, then Documents construction updates and Document__c files read live from Omniyat AI as the bridge user
5 / 16

What is live from Salesforce, and what is still oursthe honest ledger; the Phase 2 scope falls straight out of it

BuyOmniyat AI
First loginOmniyat AI
Before keysOmniyat AI
HandoverOmniyat AI
Move-inCorven AI
LivingCorven AI
AreaTodayOrg
Owner invitation on Sales Order SoldConnector event, platform sends the emailomniyat-ailive
Owner first loginMobile on the Account, SMS code. Company buyers not yet (A2)omniyat-ailive
Unit stage and readinessRead through the connectoromniyat-ailive
ConstructionUpdates and milestones live. Photos, percentage and stage are editorial content (B2)omniyat-ailive part local
Owner documentsDocument__c and files, cached on first openomniyat-ailive
Payments, instalments, invoicesSeeded rows, no Salesforce read (B3, 13 Nov)nonelocal
First Visit bookingAppointments read and writtencorven-ailive
Household invitationResident__c written, flag oncorven-ailive
Move-in applicationSubmit writes a Move-in Case with pets, vehicle and filescorven-ailive, proven in sandbox
Services, maintenance, amenitiesAbout 30 of 50+ service forms mapped field by field (F1, F3)corven-aimapping
6 / 16

Live demodriven by the tickets owner; dry run recorded Sunday 18:00 as the fallback; staging frozen from Sunday midday

  1. A Sales Order in the Omniyat AI sandbox, one step short of Sold, with its buyer and unit. The demo set has eight owners, each with a unit in four towers: under construction, pre-handover, handover, move-in.
  2. Close the sale. Tick the signed-SPA field; the flow sets Sold.
  3. The connector hears it. Invitation settled, row queued then sent, inside a minute.
  4. The Owner’s inbox on the demo phone: one email, one link, the app opens on the right screen.
  5. First login. Mobile number, SMS code, terms, biometrics, Home.
  6. Construction. Switch between the owner’s units across the four stages; open the latest update and milestones, read live.
  7. Documents. The Owner’s files from Salesforce, opened on the phone.
  8. Stop. Move-in, household and First Visit are shown as journey reports from the Corven sandbox, since they come after handover.

What we will say out loud

  • Photos and the construction percentage are still our content. That is B2, due 6 November.
  • Payments are seeded. That is B3, due 13 November.
  • Company buyers cannot log in yet. That is A2, due 6 November.

If something fails

  • Event not settled in two minutes: switch to the recording, continue with the pre-invited buyer.
  • Box down at first login: recording.
  • Empty document list: sandbox data, recording.
7 / 16

Evidence beyond the demorepeatable journeys the QA engine runs against staging and the sandboxes

BuyOmniyat AI
First loginOmniyat AI
Before keysOmniyat AI
HandoverOmniyat AI
Move-inCorven AI
LivingCorven AI
JourneyWhat it provesWhere
identity/first-loginAn invited Owner completes first login exactly as the app makes the calls, with the world bound to its sandbox person and unit.staging + sandbox
living/invite-familyAn Owner invites a family member through the API; the member logs in; the Resident__c record exists and matches.corven-ai sandbox
post-handover/move-in-applicationThe wizard, the uploads and two submits produce one Move-in Case whose fields and file bytes match the frozen submission.corven-ai sandbox
pre-handover/first-visit-bookingConfirm, retry and replace a First Visit time against real appointments.corven-ai sandbox
handover/chauffeur, handover/arrangementChauffeur slots; handover confirm and retry.staging
post-handover/move-in-refusalsUnauthorised, wrong-stage and incomplete requests are refused.staging
Every journey writes a report and verifies the Salesforce side with the Salesforce CLI, never by trusting our own database. Nineteen manual Salesforce scenarios sit beside them in QA cycle 9.
8 / 16

Why we are late, and what is different nowno blame; each cause has a change already made or asked for today

CauseChange
No single Salesforce decision owner with reserved time. Questions waited in chat and the build waited on them.Every question is a Linear decision issue owned by the Salesforce owner. The project lead chases a two-working-day answer. ask 1, 2
Field mapping started late. About 30 of 50+ service forms are compared so far.Mapping is a dated phase item (F1). Missing Salesforce fields are added before mapping continues.
Staging was unstable on QA weekends.Release freeze from Sunday midday before any demo or QA weekend. Releases go through the gate: health proven before cut-over, 12 minutes each.
Features merged with the screen done and Salesforce not connected.From 3 November, collections and salesforce pull requests that touch Salesforce behaviour link a journey report before merge.
The 28 October demo slipped on one person’s availability.A named demo driver, a recorded dry run, and a fallback that needs no environment.
9 / 16

Where the work standsLinear project “Salesforce”, 131 issues, snapshot 31 October 2026

68Done
6In progress
46Todo
7Blocked

4 cancelled issues are not counted

Work by stream

DoneIn progressTodoBlocked
September: appointments and First VisitSeptember: appointments and First Visit · Done 28September: appointments and First Visit · In progress 1September: appointments and First Visit · Todo 130Decisions with the Salesforce ownerDecisions with the Salesforce owner · Done 1515Registration and invitationRegistration and invitation · Done 77Demo 28 OctoberDemo 28 October · Done 77Identity: sign-in and householdIdentity: sign-in and household · Done 66Owner API: stage, construction, slotsOwner API: stage, construction, slots · Done 2Owner API: stage, construction, slots · In progress 1Owner API: stage, construction, slots · Todo 14Connector: Omniyat AI readsConnector: Omniyat AI reads · Done 2Connector: Omniyat AI reads · Todo 46Tickets: move-in and First VisitTickets: move-in and First Visit · In progress 1Tickets: move-in and First Visit · Todo 4Tickets: move-in and First Visit · Blocked 16Catch-up plan, phases 1 to 7Catch-up plan, phases 1 to 7 · Done 1Catch-up plan, phases 1 to 7 · In progress 2Catch-up plan, phases 1 to 7 · Todo 22Catch-up plan, phases 1 to 7 · Blocked 530Questions for the Salesforce ownerQuestions for the Salesforce owner · Todo 8Questions for the Salesforce owner · Blocked 19Services backlogServices backlog · Todo 66

One in-progress issue sits outside the streams.

Delivery plan

9Shipped and proven
Owner invitation · First login (OTP) · Unit stage · Construction (live read) · Documents · First Visit · Household invite · Move-in Case · B1 catalogue reads
7Friday 6 November
A1 · A2 · B2 · B4 · D1 · D2 · E1
9Friday 13 November
B3 · C1 · C2 · E2 · F1 · F3 · G1 · G2 · G3
5Blocked on an answer
C3 · C4 · F2 · F4 · G4
10 / 16

Work done and effortissues in the Linear project by week, and merged pull requests across the five repositories

in scopedone
Issues in scope and done, 31 August to 26 October 2026 Scope rises from 3 to 131 issues, while completed issues rise from 0 to 68. Both series jump in the week of 26 October. 0 50 100 31 Aug 7 Sep 14 Sep 21 Sep 28 Sep 5 Oct 12 Oct 19 Oct 26 Oct 31 Aug · 3 in scope 7 Sep · 7 in scope 14 Sep · 32 in scope 21 Sep · 33 in scope 28 Sep · 33 in scope 5 Oct · 33 in scope 12 Oct · 33 in scope 19 Oct · 33 in scope 26 Oct · 131 in scope 131 in scope 31 Aug · 0 done 7 Sep · 1 done 14 Sep · 2 done 21 Sep · 13 done 28 Sep · 14 done 5 Oct · 14 done 12 Oct · 14 done 19 Oct · 14 done 26 Oct · 68 done 68 done
Scope jumped on 26 October when the catch-up plan and the journeys epic were written down; 54 issues closed that same week.

Merged pull requests per week

collections: 830 merged pull requests over five weekscollections · 830 collections · 28 Sep · 195 collections · 5 Oct · 131 collections · 12 Oct · 226 collections · 19 Oct · 145 collections · 26 Oct · 133 133 28 Sep26 Oct salesforce: 197 merged pull requests over five weekssalesforce · 197 salesforce · 28 Sep · 27 salesforce · 5 Oct · 11 salesforce · 12 Oct · 50 salesforce · 19 Oct · 50 salesforce · 26 Oct · 59 59 28 Sep26 Oct cloud: 653 merged pull requests over five weekscloud · 653 cloud · 28 Sep · 55 cloud · 5 Oct · 326 cloud · 12 Oct · 146 cloud · 19 Oct · 64 cloud · 26 Oct · 62 62 28 Sep26 Oct mobile: 150 merged pull requests over five weeksmobile · 150 mobile · 28 Sep · 34 mobile · 5 Oct · 28 mobile · 12 Oct · 25 mobile · 19 Oct · 33 mobile · 26 Oct · 30 30 28 Sep26 Oct framework: 102 merged pull requests over five weeksframework · 102 framework · 28 Sep · 9 framework · 5 Oct · 26 framework · 12 Oct · 27 framework · 19 Oct · 22 framework · 26 Oct · 18 18 28 Sep26 Oct
Counts from GitHub Enterprise, merged pull requests per ISO week; collections and cloud include automated pin and release-cycle pull requests. Each panel has its own scale.
11 / 16

Friday 6 November: the Omniyat AI owner journeyevery item unblocked today, one owner each; Linear milestone “6 Nov”

BuyA1
First loginA2
Before keysB2, B4
HandoverD1, D2
Move-inE1
Living13 Nov
ItemDone whenOwnerIssue
A1 Sold-trigger Owner invitationsProven on the current staging release; Monday’s demo is the proofOwner API ownerOMN-1017
A2 Owner mobile OTP, company buyersA company buyer’s primary contact logs in; country code handledOwner API ownerOMN-1018
B2 Construction progress and filesPhotos and progress come from Omniyat AI as the integration user, no editorial fallback on a demo unitConnector ownerOMN-1020
B4 Owner document downloadsAuthorised downloads through Salesforce Files on stagingConnector ownerOMN-1022
D1 Handover booking, reschedule, cancelEligible Owner books, moves and cancels against real appointmentsTickets ownerOMN-1027
D2 Handover Completed eventThe Sales Order signal reconciles and the app moves the Owner past keysTickets ownerOMN-1028
E1 Move-in ticket, pet and vehicle writesProven in Corven with the sharing setting appliedTickets ownerOMN-1029
12 / 16

Friday 13 November, and what carries no date yetmilestone “13 Nov”; blocked items start the day their answer lands

13 NovemberOwnerIssue
B3 Payment plan, instalments, invoices, receiptsConnector ownerOMN-1021
C1 Pre-handover entry signalConnector ownerOMN-1023
C2 Completion notice, BCC, final areaConnector ownerOMN-1024
E2 Household relationship writes and readbackIdentity ownerOMN-1030
F1 Service receiving and status mappingsConnector ownerOMN-1031
F3 Maintenance Case access and lifecycleConnector ownerOMN-1033
G1 Existing-event notification pathsOwner API ownerOMN-1035
G2 Per-scenario notification contractsGusOMN-1036
G3 Sandbox workflow states for QAGusOMN-1037
BlockedWaits onIssue
C3 First VisitQ2 org, appointment type, durationOMN-1025
C4 Snag recordsQ4 Onsite API date, snag sourceOMN-1026
F2 Service confirmationQ6 booking confirmation, proof of paymentOMN-1032
F4 Amenity reservationsQ5 availability, capacity, booking authorityOMN-1034
G4 Production sharing approvalCTO new-customer pre-handover dataOMN-1038
Eight Salesforce questions are open under OMN-1016, answer-by Wednesday 4 November. Each answer moves its item to Todo with its own build lead time written on the issue.
13 / 16

How a Salesforce request moves from Mondayone Blocked state, one link, one place to look

Question or requestbecomes a decision issueowner: Salesforce owneranswer-by: two working days Build issue: BlockedblockedBy → the decisionshows in the pending-inputsqueue; project lead chases Answer lands: Tododecision Done, link staysphase owner schedules itin the current cycle In Reviewpull request links itsjourney report before mergecollections and salesforce Doneproof is a staging orsandbox run, not a mergeowner board updates itself

Rules

  • There is no separate Salesforce team. The feature owner connects the feature; each component owner implements its part.
  • A feature is not done because its screen is done.
  • “Blocked by Salesforce” as a state is retired; a blocked issue carries a link to the decision that blocks it.
  • Status lives in Linear’s owner board and pending-inputs queue. No separate report.

Later, not Monday

  • A CI gate that runs the relevant journey on every pull request (Phase 7). Needs sandbox capacity and data we do not have this week.
  • Alignment of activity lists and the date-time shape between the service forms and Salesforce (F1).
14 / 16

Who does what this weekone row per person; the same names sit on the Linear owner board

PersonThis weekDates
GusPresents. Owns Phase 7, G2 and G3. Signs off releases and the Sunday freeze. Applies the Linear changes.freeze Sun 12:00
Ghalib, project leadChases the eight Salesforce questions to an answer. Owns Phases 2, 3 and 6. Delivers B2 and B4.Q answers Wed 4 Nov; B2, B4 Fri 6 Nov
Carl, Salesforce ownerAnswers Q1 to Q8. Deploys the field and sharing changes the answers need.Wed 4 Nov
HarryDelivers A1 and A2. G1 next.Fri 6 Nov; G1 Fri 13 Nov
BhupeshDrives the demo and the Sunday dry run. Delivers D1, D2 and E1.dry run Sun 18:00; Fri 6 Nov
DigambarDelivers E2. Stands by on first login during the demo.Fri 13 Nov
Ali, QARuns the 19 Salesforce scenarios in cycle 9. Starts the Figma visual pass alongside.cycle 9
Louis, Nguyen, JunaidKeep the demo phone on the build that passed the first-login journey. Ship the revamp build to TestFlight once the backend merge lands. Fold the remaining Salesforce items into the AI front end when they land.before Sun 18:00
15 / 16

Four askseach one removes a cause from slide 9

1
Back a two-working-day answer on Salesforce decisions.The project lead chases; the Salesforce owner answers. Without it, five items have no date.
2
Reserve the Salesforce owner’s time this week for the eight open questions.Answer-by Wednesday 4 November, so the 13 November items can start on time.
3
Accept the 6 November scope and the 13 November milestone as the plan of record.Both are in Linear as milestones; progress is read there, not reported.
4
Approve production sharing for new-customer pre-handover data.G4, OMN-1038. Nothing else is needed from outside the team to reach 6 November.
Next checkpoints: Wednesday 4 November (answers), Friday 6 November (milestone 1), Friday 13 November (milestone 2)
16 / 16