Flows: depth
How a Flow takes one Persona from first sign-in to an Offer's activation Event, with at most five onboarding questions, shown on leaseclock.com.
A Flow is the ordered path one Persona takes through an App, from first sign-in to an Offer's activation Event. In the design, the App derives each step from the definition and asks at most five questions before the first one.
From first sign-in to the activation Event
A Flow names three things: the Persona it guides, the Offer whose activation ends it, and its steps in order. Each step is one screen that ends in the Verb that opens the next.
The Offer declares what activation means: one Event, a count and a window. Customer.activate marks the Customer activated once that Event reaches the count, and time to value runs from the first step to that moment.
leaseclock.com sells reminders, so its activation is the first renewal reminder a manager's resident receives.
---
price: { amount: 29, currency: USD }
interval: month
activation: { event: Reminder.sent, count: 1, window: 14d }
---The manager's Flow on leaseclock.com
In the design, the App builds the manager's Flow from the Property and Lease Nouns of The leaseclock.com sample and the forms the manager may open.
| Step | Screen | Ends in | Why it comes here |
|---|---|---|---|
| 1 | onboarding questions | Setting.update with the notice window | sets when reminders go out before any lease exists |
| 2 | Property create form | Property.create | a Lease needs a property to point at |
| 3 | Lease create form | Lease.create | the first lease with an endsOn |
| 4 | Lease list, sorted by endsOn | the next Lease.create | more leases mean an earlier first reminder |
The Flow ends at the first Reminder.sent, which leaseclock.com sends with no step of its own. A manager with 12 leases spread over a year has one ending inside 60 days, so it arrives within the 14-day window.
Onboarding questions
A Flow asks at most five questions, and every answer lands in a record or a Setting the definition already holds. A question with nowhere to store its answer never appears.
---
persona: manager
offer: starter
asks:
- { question: "What is the name of your first building?", fills: Property.name }
- { question: "How many units does it have?", fills: Property.units }
- { question: "How many days before a lease ends should residents hear from you?", fills: Setting.noticeDays, default: 60 }
---Three questions fill the first two steps ahead of time. The Property form opens with name and units filled in, so step 2 is one click.
Per Persona and per Offer
Each Persona gets its own Flow, because each comes to do a different job. Each Offer can end it at a different Event.
| Persona | Offer | Steps after sign-in | Ends at |
|---|---|---|---|
| manager | starter | questions, Property, first Lease, more leases | the first Reminder.sent within 14 days |
| manager | team | questions, Property, invite an assistant, first Lease | the fifth Reminder.sent within 30 days |
| assistant | team | the Lease list, then Lease.create | the fifth Reminder.sent within 30 days |
| landlord | team | none | no Flow |
team declares activation: { event: Reminder.sent, count: 5, window: 30d }, because a team manages more leases. The landlord holds viewer and calls no Verb, so no step can end and the landlord has no Flow.
Where a Flow stalls
Time to value is measured per step, so the step that holds Customers shows in the Flow's numbers. If managers stop at step 3, the Lease form asks too much before the first save.
The fix stays in the definition. A question that fills startsOn and endsOn ahead of time shortens step 3 for every manager at once. App per Persona: derivation rules lists the rules that draw each step's screen.
Tenants, seats and access in an App: depth
How a Customer's Tenant, each person's seat and each Persona's Access level decide what an App renders and what the Offer charges, in the design.
One screen, three renderings
The leaseclock.com Lease list as HTML for people, JSON for programs and Markdown for agents, with what each costs an agent in tokens.