Dynamic onboarding: every screen, every state

Phase 5 item 8 of the ingest plan. The customer connects their tools, presses Onboard, and Propflow reads everything it can. When the read is done, the customer answers only what we could not find or found two answers for. Target 10 to 15 minutes, 30 at most.

Mock for logic, flow and states, not polish. Company and values are made up ("Harbor Lane Homes (TEST)"). Lives on the existing Onboarding & Go Live page (/onboarding-hub), above the go-live checklist. No new page, no switch.

The whole flow on one card. 1 connect calendar and PMS, 2 pick any other apps, 3 press Onboard, 4 ingest runs as long as it needs, 5 "your onboarding is ready", 6 answer only the gaps. Each step below shows every state it can be in.

Every screen and state, with the review

Screen 1 (8.1 to 8.3): connect, pick apps, Onboard

Let Propflow read what you already have

We read, we never change anything in your tools.

Property management system
Your buildings, fees and policies.
Connect AppFolio
Calendar
Where Clara books tours.
Connect a calendar
Any other apps?
Optional. The more we can read, the fewer questions for you.
GmailConnect
OutlookConnect
Google DriveI use this
MondayI use this
igloohomeI use this
Connect your property management system first. That is where most answers live.
Onboard

Let Propflow read what you already have

Property management system
AppFolio, 12 buildings synced.
Connected
Calendar
leasing@harborlane.example (Google)
Connected
Any other apps?
GmailConnected
OutlookConnect
MondayNot connected yet. Noted, we will set it up with you.
Google DriveI use this
igloohomeI use this
This can take a few hours. You can leave this page.
Onboard

Logic. Onboard needs the PMS only, because that is the source ingest reads. The calendar stays on the card (and on the checklist) because Clara needs it to go live, but it does not hold up the read. Gmail and Outlook use the existing connect flows (/api/integrations/company-channels/connect). Drive, Monday and igloohome have no connect yet, so "I use this" records the app on the company (a setting) and the run's next-step for a gap names that connector. It is never a dead Connect button.

Screen 2 (8.4): the read is running

Onboarding requested

Propflow will start reading in a few minutes. You can leave this page.

Requested by Dana Ortiz, Oct 16, 2:14 PM.

Reading your data

Propflow is reading AppFolio, your website and your listings. This usually takes one to three hours. This page will show your questions when it is done.

Started 2:19 PM.

The read stopped before it finished

Propflow has been told and will start it again. You do not need to do anything.

Stopped 3:02 PM. Staff see the reason on the Interview guide.

Logic. The card reads the run request from ingest's run-requests API (queued, running, done, failed). "Done" becomes "ready" only once ingest has published the pre-fill for that run (PREFILL#<org> run number at least the run the request produced). Pressing Onboard twice never starts two reads: one open request per company. No email is promised on screen, because the email is not switched on.

Screen 3 (8.5): "your onboarding is ready"

Your onboarding is ready

7 questions need you, about 10 minutes. We filled 41 answers from your records.

Answer the 7 questions
DRAFT FOR GERA. NOT SENT. DELIVERY IS NOT BUILT.

Subject: Your Propflow onboarding is ready

Hi {first name},

We finished reading {company}'s records. We filled in {filled} answers for you, and {count} questions still need you. Most people finish in about {minutes} minutes.

{link: Answer your questions}

Thanks,
The Propflow team

Logic. The in-app card is the live notice. The email is built as a template plus a sender function behind the existing team-notice path, and nothing calls it until Gera approves the wording. When Gera approves the wording, the send is wired through sendOrHoldTeamNotice with one company setting, off by default, that Fede turns on (propflowai rule 8 for a new outbound). The in-app card needs no switch: it is part of the existing Overview.

Screen 4 (8.6): answer only what we could not find

7 questions need you

0 of 48 go-live answers saved. 41 are ready to save from your records, 7 need you.

We could not find these

Who should Clara escalate to when something goes wrong?
Your records do not name one person.
Answer
What hours can people tour?
Your calendar has no tour hours yet.
Answer
Where should people meet for a tour, and how do they get in?
Not in AppFolio or on your website.
Answer

Your records disagree

Application fee
$45 per adult
AppFolio › Listings, seen Oct 2
$50 per adult
Company website, seen Sep 18
Pick one

We filled these from your records

Late fee
$75 after the 5th
from AppFolio › Late Fee Policy, seen Oct 16
Pet rent
$35 a month per pet one source
from Company website, seen Mar 3, 2025
and 39 more
Save all 41

Nothing left for you

Every go-live answer is in. Propflow will finish setup and turn Clara on with you.

Answers saved Oct 16. You can change any of them later in Settings.

Logic. The list is only the customer's go-live questions (the hub's customer sections). Each is in exactly one group:

"Answer" and "Pick one" open the question where it already lives, scrolled to it, the same way Hand to client lands today. The time estimate is about 1.5 minutes per open question. A pre-fill never counts toward go-live until it is saved, so the bar counts saved answers only and names the ready-to-save pre-fills separately.

Review against the onboarding rules

Rule (Gera, 10-14)How the mock meets it
The customer sees only go-live blockersScreen 4 lists only the customer sections' asked questions. Non-blocking gaps stay on the staff Interview guide.
All pre-filled, no confirm buttonsFilled answers show the value and source. The single Save all is a save, not a per-field confirm (ADR-0059 amendment, draft commit 5018c07).
A default counts only if runtime uses the same valueAn unsaved ingest value never counts as answered. Only Save all (a real save) moves go-live.
Never hide data we haveConflicts show both values. Thin or old values show with a small flag, never dropped.
Logic and states first, polish lastThis page. Visual polish comes after v1 is live.
Canonical, no switchThe card is part of the existing Overview. The only thing not live is the email, which waits on Gera's wording.
Customer copy is drafted, never sentScreen 3's email is marked DRAFT and has no caller.

Build status (2026-10-17)

Test guide (screenshots owed: no signed-in browser was available to the builder)

Use Fairhaven Residential (TEST). Type TEST in the company picker before any screenshot. Each line is one screenshot.

  1. Before the token is in Vercel: Onboarding & Go Live shows no Onboard card and no "We can't check onboarding" line (#20516).
  2. After Gera's token step (commands on #20510): the card reads "Press Onboard and Propflow reads your records", with "Any other apps?" below it. Gmail or Outlook shows Connect, Connected, Reconnect (broken inbox) or Waiting for approval (Microsoft admin pending). Drive, Monday and igloohome show "Not connected yet" with no button (#20542).
  3. Press Onboard. The card reads "Onboarding requested", then "Reading your data". On ingest.propflowai.co the queue shows the request as service:propflowai as <user id> (#20510, ingest #205).
  4. When the run finishes, the card reads "Almost done" and then "Your onboarding is ready" (#20519). If the pre-fill never arrives, the card reads "stopped" after 30 minutes. A failed read never does (#20541).
  5. Below the card: "N questions need you, about M minutes", grouped as could-not-find, your records disagree, and filled from your records. Each item opens its question (#20515).
  6. Staff view of the same company: a stopped read shows "Staff only: <reason>".

The "your onboarding is ready" email is a DRAFT for Gera (#20514). It has no sender. Do not expect an email.

Review record

PropFlow Docs