Onboarding, inside Settings

A friendlier version of the go-live questions for customers who are new to software: it stays in Settings, explains before it asks, and turns questions into big choices.

Mock for Gera · 2026-10-01 · nothing built yet · real questions from the app today, fictional company

Click around. Use the left menu (or the picker at phone width). Switch how far along the company is, including after go-live. Choices save as you tap.

Company: Width:
Five design decisions
  1. It lives in Settings, as its own group. A new Onboarding group sits at the top of the Settings menu until go-live: Overview, Leasing, Maintenance, Renewals. Every page is under /settings/onboarding/…, inside the normal Settings frame, so clicking a module never leaves Settings. After go-live the group drops to the bottom as a record. The Company group loses its "Onboarding & go-live" row (it became Overview). The other option, sub-pages under Company › Onboarding & go-live, buries the most important thing a new customer does three levels deep.
  2. Each module explains before it asks. A one-line "what Clara does here" plus a five-step flow, where each step names the question step that controls it, the same way the blueprint's timeline does. Then the sections become numbered steps with Back and Next, one at a time, with "N of 25 answered" always in view.
  3. Big choice cards wherever the answer has a real shape. Tour length, travel time, office hours, the application link, who handles escalations, ring order, renewal rent. Typed answers stay as text, with tap-to-fill examples for the yes-or-no ones. Choices save the moment you tap (the same write the Save button does today); typed answers keep a Save button, so we never store half a sentence.
  4. "Recommended" appears only where we really have one. Only tour length (30 minutes) and travel time (none, "our default") get the badge, because those are the only questions on these pages that acceptRecommendationPlan allows. Renewal limits show "used until you answer" instead: Clara does use 2 months owed and 2 late payments today, but the code deliberately refuses to call the customer's money our recommendation. Office hours get a quick preset, not a badge.
  5. Same rules underneath, plus warmth on top. Same questions, same writers, same pending dots (smaller, amber, never after go-live), same read-only-after-go-live rule. The brand gradient and logo come from the blueprint. Copy says "Propflow" (lowercase f, the brand rule); the app's existing strings still say "PropFlow" and change in the copy part.
Every question in the mock, against the app today

From origin/main on 2026-10-01. "Counts" = it is in ONBOARDING_MENU[].fields, so it can hold a dot and shows in "N left". Labels in the middle column are today's; the mock rewrites them as plain questions.

SectionToday's label · stored asAnswer typeDefault / recommendationCounts
Leasing › Hours & contactOffice hours · office_hoursPer-weekday hours editorNone. Deliberately not acceptable (registry default is a shape readers refuse)Yes
Tour length · tour.durationMinutesWhole minutes, 15 to 120Recommended 30 (Accept recommendation)Yes
Travel time between showings · tour.travelBufferDefaultMinutesWhole minutes, 0 to 120our default 0 (Accept recommendation)Yes
Company name used in emails · Organization.nameTextFrom sign-upNo
Tour hours, minimum notice, how far ahead, time zone, holidays, email signatureComing soon (system admins only today)n/aNo
Leasing › Fees & depositsApplication fee, Admin fee, Security deposit, Pet deposit, Pet rent (monthly) · pricingDetails.* per buildingDollar amount per building, Confirm stamps pricingVerifiedScraped value shown until confirmedYes (5)
Leasing › ApplyingHow applicants get the application link · leasing.applicationLinkModeTwo choices; "A new link for each prospect" needs AppFolioNoneYes
How long a decision takes; ID and income documents needed; Income requirement; Portable screening reports; Co-signers and guarantors; Housing vouchers and affordable units · knowledge.section.*Text, up to 500 charactersNoneYes (6)
Leasing › PoliciesPet limit and rules; Notice needed on month-to-month; Lease lengths offered; Renter's insurance required?; SmokingTextNoneYes (5)
Leasing › Tours & move-inStaffed or self-guided tours; How keys are handed over; What happens after approvalTextNoneYes (3)
Leasing › PeopleWho gets escalations · escalation.ownerEmailNoneYes
Leasing call ring order · ring_list.leasingUp to 4 teammates, orderedNoneYes
Who gets the lead-summary email · leasing_digest.recipientsEmail list; saving one turns the weekly email onEmpty = offNo, on purpose
Maintenance › RoutingMaintenance calls go to · maintenance.intake_routeRead-only for customers (Propflow sets it)NoneYes (see finding 1)
When a maintenance caller asks for a person, Clara rings · ring_list.maintenanceUp to 4 teammatesNoneYes
Calls Clara can't help with forward to · catch_allPhone number with country codeNoneYes
Maintenance › EmergenciesOn-call rotation · emergency.route.residentialPropflow onlyNoneStaff only
What counts as an emergency; Emergency vendors (pointer to Vendors)Coming soon; linkn/aNo
Maintenance › ResidentsOffer Spanish at this building; What to say when a repair is waiting on a partComing soonn/aNo
Renewals › OffersDays before lease end to send the first offerPointer: set per buildingn/aNo
How the new rent is set · renewal.offerTermsMarket / at most a % / at most a $, lease lengths, month-to-month premiumNone (customer's money)Yes
Which leases get an offer · renewal.eligibilityMonths owed, late payments, grace daysEngine uses 2 months, 2 late, 10 days until answered; not offered as a recommendationYes
Renewals › Follow-upFollow-up timing; If there's still no reply; When to hold for a personComing soonn/aNo
Overview (other go-live items)Choose which buildings Propflow works in; Connect your shared leasing inbox; Connect a calendar for tours; Set up billingLinks and Stripe buttonsn/aSetup steps

Totals a customer sees: Leasing 25, Maintenance 3 (2 they can answer), Renewals 2.

Things reading the code turned up
  1. Maintenance always shows one left that the customer cannot answer. maintenance.intake_route is read-only for customers ("Propflow sets this up with you") but it is not in PROPFLOW_ONLY_FIELDS, so it holds a dot and counts toward "N left" until staff set it. The mock shows it as "Propflow sets this up" and leaves it out of the count. Fix: add it to that list, a few lines in its own PR.
  2. Renewal limits: a "Keep what Clara uses now" card would save the engine's numbers as the company's own answer. That is the customer choosing a value, not us recommending one, but it does clear the dot. Gera's call before part 6 ships it; until then part 6 keeps "Set my own limits" only.
  3. Knowledge titles are load-bearing. Building answers override company answers by matching the title text. The plain-language rewrite changes only label and help, never title.
  4. Hours & contact "Coming soon" rows only show to system admins today. The mock keeps that, so customers don't see six greyed-out rows on their first page.
Build plan: routes, components, PR slices

Routes

Components

Slices: each part branched off origin/main, each works on its own

PartWhat ships≈ lines
1 · Stay in SettingsConstant flip, page moves, redirects, Onboarding menu group, shell drops its own header. Today's question cards unchanged. This alone fixes "it leaves Settings".250
0 · Intake dotmaintenance.intake_route into PROPFLOW_ONLY_FIELDS. Independent, can go any time.20
2 · Friendly hubProgress hero, go-live steps, module cards with "N left", setup rows; live and done states; menu counts.280
3 · Leasing page frameIntro, flow, numbered stepper, "N of 25", Back/Next, live record view. Questions unchanged inside it.260
4 · Choice cardsChoiceCards; tour length, travel time, office hours preset, application link, escalation and ring pickers as cards; choice autosave.300
5 · Plain wordsQuestion labels and help rewritten, quick answers for the yes-or-no knowledge questions, "Propflow" spelling.200
6 · Maintenance & RenewalsIntro and flow copy, renewal rent as cards, "Propflow sets this up" rows. Renewal "keep current limits" card waits on finding 2.250

Order: part 1 first, since every later part uses its routes. Then parts 2, 3 and 4 open together, up to three at once, each off fresh origin/main. Parts 5 and 6 come after part 4, because they use the cards.

PropFlow Docs