← Back to concepts
Minecart · Entity Lists · Today screen · Interaction flows

Ten storyboards, low-fi.

Flows 01–04 cover the rep's primary daily gestures (mark done · drill to account · list↔map · record-note). Flows 05–09 are the variants and edge cases: done-at-top as a side-by-side comparison, swipe gestures, end-of-day carry-over, add-to-list from account detail, and reorder mode. Flow 10 is a per-list_type behavior comparison panel showing why one done-state rule doesn't fit. Phone outlines stripped to the bone — read each row left-to-right. Yellow circles = tap targets; dashed borders = modal sheets; black pills = toasts.

tap target
modal sheet (from below)
toast (auto-dismiss)
done state (in place)
Flow 01
Mark done in place.

Single status-dot tap. Row strikes through where it sits — no jump to a "done" zone. Toast offers undo for 4s. Eye stays with the route.

Atask row visible
9:41
Tue · Mar 5
Today
26 items · 2 done · ~3h drive
Sheboygan Visits10/12
Cedar Marine & Tackle
Sheboygan Falls, WI
Delaware Lawn & Power
Plymouth, WI
Evergreen Equipment
Plymouth, WI
Falls Forge Hardware
Sheboygan Falls, WI
— closed Mondays, try afternoon
Grafton Garden Tractor
Grafton, WI
Rep is at Falls Forge. Status dot is the tap target — small, intentional.
tap dotsingle tap
Bdone · toast up
9:41
Tue · Mar 5
Today
26 items · 3 done · ~3h drive
Sheboygan Visits9/12
Cedar Marine & Tackle
Sheboygan Falls, WI
Delaware Lawn & Power
Plymouth, WI
Evergreen Equipment
Plymouth, WI
Falls Forge Hardware
Sheboygan Falls, WI
Grafton Garden Tractor
Grafton, WI
DoneUNDO
Dot fills, row strikes through in place. Stat updates (3 done). Toast over the bottom nav for ~4s.
~4stoast dismisses
Csteady state
9:41
Tue · Mar 5
Today
26 items · 3 done · ~3h drive
Sheboygan Visits9/12
Cedar Marine & Tackle
Sheboygan Falls, WI
Delaware Lawn & Power
Plymouth, WI
Evergreen Equipment
Plymouth, WI
Falls Forge Hardware
Sheboygan Falls, WI
Grafton Garden Tractor
Grafton, WI
Toast gone. Falls Forge stays struck-through in geographic order. Eye drops naturally to Grafton.

Notes

List does not scroll. List does not reorder. The done item stays where it sits because the route is the spatial truth — moving it would disorient the rep.

Status-dot tap target is small (~9px visual, 36px hit area). Whole-row tap is reserved for drill-down (Flow 2). Conflict if hit areas overlap — keep dot's hit area generous but not eat the row tap.

Behavior diverges by list_type: day = stay in place forever. follow_ups / steady = collapse to a "Completed (N)" group at bottom (route order doesn't apply). Two rules, predictable per list.

Flow 02
Drill to account, add note, return.

Row tap opens detail as a sheet over Today — bottom nav stays Home, no tab switch. Composer stacks over the sheet. Dismiss returns to Today, scroll position preserved.

Atap row body
9:41
Tue · Mar 5
Today
26 items · 2 done · ~3h drive
Sheboygan Visits10/12
Acme Auto Repair
Sheboygan, WI
Bayside Power Sports
Sheboygan, WI
Cedar Marine & Tackle
Sheboygan Falls, WI
Delaware Lawn & Power
Plymouth, WI
Evergreen Equipment
Plymouth, WI
Tap anywhere on the row body (not the dot). Drill-down affordance is the whole row — chevron is dropped.
tap rowsheet slides up
Baccount sheet open
9:41
Tue · Mar 5
Today
Sheboygan Visits10/12
Acme Auto Repair
Sheboygan, WI
Account · From day list
Acme Auto Repair
Sheboygan, WI · Health 7.2 · Last visit 21d ago
Add note
Log activity
Get directions
Mark done on list
Briefing
Last noteOwner mentioned a new mechanic
Open follow-upQuote $14k · Due Wed
Sheet covers ~70%. Today list peeks at top — anchors return path. Bottom nav still on Home.
tap "add note"composer stacks
Ccomposer over sheet
9:41
Tue · Mar 5
Today
Sheboygan Visits10/12
Acme Auto Repair
Sheboygan, WI
Account
Acme Auto Repair
Sheboygan, WI · Health 7.2
Note · attaching to Acme Auto Repair
New note
Spoke with owner about new NextPart upgrade. They want a callback Thursday.
Composer stacks over the account sheet. Implicit context shown in eyebrow — note will attach to Acme.
save2× swipe down
Dback at today
9:41
Tue · Mar 5
Today
26 items · 2 done · 1 note added
Sheboygan Visits10/12
Acme Auto Repair
Sheboygan, WI · note 2m ago
Bayside Power Sports
Sheboygan, WI
Cedar Marine & Tackle
Sheboygan Falls, WI
Delaware Lawn & Power
Plymouth, WI
Evergreen Equipment
Plymouth, WI
Both sheets dismissed. Same scroll position. Acme row sub-line picks up "note 2m ago" as quiet confirmation.

Notes

Sheets, not tab-switch. Tapping an account row never moves the bottom nav to Accounts tab. The rep is doing the day's work — context preserved.

Sheet stacking is OK at depth 2 (account → composer). Going deeper (composer → photo picker → camera) starts to feel like a trap. If a third sheet is needed, push it as a tab-replacement screen from inside the second sheet, with explicit Back.

For contact-typed rows ("Call Pat Reilly"), the sheet is a contact-detail with the same shape; the "Call" CTA is the most prominent action inside. The row body never auto-dials — too easy to misfire while driving.

Flow 03
List → Map → Stop → back to Map.

Map is a tab-replacement, not a sheet — needs full screen height. Bottom nav stays. Tapping a stop pin opens the same account sheet pattern as Flow 2, layered on the map.

Alist view, map toggle
9:41
Tue · Mar 5 · Sheboygan visits
Today
List Map
12 stops · 3h 14m · 148 mi
Route order10/12
01 · Acme Auto
Sheboygan · 4 mi
02 · Bayside Power
Sheboygan · 0.4 mi
03 · Cedar Marine
Sheboygan Falls · 6 mi
04 · Delaware Lawn
Plymouth · 9 mi
05 · Evergreen Eq
Plymouth · 1 mi
"List · Map" toggle in header. List active. Tap target on Map.
tap mapreplaces list
Bmap active
9:41
Tue · Mar 5
Today
List Map
12 stops · 3h 14m · 148 mi
Lake Michigan 1 2 3 4 5 6 7 8 9 10 11 12
Map fills the content area. Bottom nav still visible — rep can leave to Accounts mid-route. Tap stop 7.
tap pinsheet over map
Caccount sheet over map
9:41
Tue · Mar 5
Today
Stop 07 · Day list
Grafton Garden Tractor
Grafton, WI · 32 mi from Stop 06
Get directions
Add note
Mark done on list
Briefing
Last visit14d ago
Open quoteNone
Same sheet pattern as Flow 2 — slides up over the map. Map peeks at top. Swipe-down dismisses.
swipe downdismiss sheet
Dback at map
9:41
Tue · Mar 5
Today
List Map
12 stops · 3h 14m · 148 mi
Lake Michigan 1 2 3 4 5 6 7 8 9 10 11 12
Sheet dismissed. Map zoom/pan preserved. Stop 7 highlighted in yellow as last viewed (returns to default after a few seconds).

Notes

Map is full-screen, not a sheet. A pannable map under a draggable sheet creates gesture conflicts (sheet handle vs map pan). Full-screen map + sheet on top is cleanest — sheet drag wins, map pan engages outside the sheet.

"Last viewed" pin highlight is the trail of breadcrumbs back. Without it, after dismissing the sheet the rep loses the spatial anchor of "what was I just looking at?"

"Get directions" inside the sheet exits to Apple/Google Maps. Coming back, app should restore Map view at same zoom — NOT auto-recompute "what's next." Smart-restart is a chat-agent job, post-v1.

Flow 04
Record note with implicit context.

Middle nav button = record. The currently-visible item becomes implicit context, surfaced as a chip with × to clear. Implicit context with explicit override.

Atap record
9:41
Tue · Mar 5
Today
Sheboygan Visits10/12
Cedar Marine & Tackle
Sheboygan Falls, WI
Delaware Lawn & Power
Plymouth, WI
Evergreen Equipment
Plymouth, WI
Falls Forge Hardware
Sheboygan Falls, WI
— closed Mondays, try afternoon
Grafton Garden Tractor
Grafton, WI
Rep is parked at Falls Forge — it's the visually-prominent row. Middle nav = record, always one tap away.
tap micrecorder modal
Brecorder ready
× Voice note
Recording about: Falls Forge×
Tap to record
0:00
Modal takes the screen. Implicit-context chip shows what this note will attach to — × clears it, makes the note unattached.
tap recordlive capture
Crecording live
× Voice note · live
Falls Forge×
Recording…
0:23
Recording. Chip remains pinned — the rep can clear context mid-record if they realize they meant a different account. Tap Save.

Notes

Implicit context resolution rule needs to be deterministic. "Currently visible" is fuzzy. Better: the topmost item in the visible viewport, or the item the rep last interacted with (tapped/swiped). Pick one and document.

What if no item is visible (rep is on the lists index, or settings)? The chip simply isn't there — the note is unattached, can be filed later. Don't fall back to "the last tab they were on."

The × on the chip is critical. Without it, the rep can't override and we'll get bug reports of "I recorded a note about Bayside but it attached to Acme." The override must be obvious and one-tap.

Flow 05
Variant — done-at-top.

The pattern you originally floated. Done items pin to the top of the list section; default scroll lands at the first pending item. Shown for direct comparison with Flow 01 — same data, different rendering rule.

Asteady state
9:41
Tue · Mar 5 · variant
Today
12 stops · 3 done · 9 pending
Done · 3
Bayside Power Sports
Sheboygan, WI
Cedar Marine & Tackle
Sheboygan Falls, WI
Jefferson Powerhouse
Jefferson, WI
Pending · 9
Acme Auto Repair
Sheboygan, WI
Delaware Lawn & Power
Plymouth, WI
Evergreen Equipment
Plymouth, WI
Default scroll lands at "Pending · 9". Done items are technically above the fold — scroll up to inspect history.
tap doton Falls Forge
Btap → row lifts
9:41
Tue · Mar 5 · variant
Today
12 stops · 3 done · 9 pending
Done · 3
Bayside Power Sports
Sheboygan, WI
Cedar Marine & Tackle
Sheboygan Falls, WI
Jefferson Powerhouse
Jefferson, WI
Pending · 9
Acme Auto Repair
Sheboygan, WI
Delaware Lawn & Power
Plymouth, WI
Evergreen Equipment
Plymouth, WI
Falls Forge Hardware
Sheboygan Falls, WI
Tap on Falls Forge dot. Row will fly upward 165px past 4 pending rows + section break to land in Done block.
~400msanimate · scroll-restore
Cafter
9:41
Tue · Mar 5 · variant
Today
12 stops · 4 done · 8 pending
Done · 4
Bayside Power Sports
Sheboygan, WI
Cedar Marine & Tackle
Sheboygan Falls, WI
Jefferson Powerhouse
Jefferson, WI
Falls Forge Hardware
Sheboygan Falls, WI
Pending · 8
Acme Auto Repair
Sheboygan, WI
Delaware Lawn & Power
Plymouth, WI
Done section now 4. Pending header re-anchored. Acme — previously the next pending — is still on top of the visible region.

Notes

Animation cost. Watch Frame B → C: the row physically jumps ~165px upward past 4 rows it didn't visit. Scroll has to compensate to keep "first pending" anchored, otherwise the screen jolts. One feature, two coupled animations.

Spatial confusion in geographic lists. If the rep is at Falls Forge and marks it done, the row leaving the geographic position and joining a "history" block above breaks the route mental model. Acceptable for non-route lists; bad for day lists.

Default-scroll restoration on every view. Returning from a sheet (Flow 2) must re-anchor scroll to "first pending," which is now in a different position than when you left. Doable but a fragile coupling.

If you want this: ship it for follow_ups and steady only. Day lists keep Flow 01's done-in-place. Same primitive, list_type-driven rendering rule. (See Flow 10.)

Flow 06
Swipe gestures.

Right-swipe = mark done (positive direction, conventional). Left-swipe = action menu (Note · Call · Skip · Defer). Faster than tap-dot for power users; tap-dot stays for first-timers.

Aswipe right · done
9:41
Tue · Mar 5
Today
Sheboygan Visits10/12
Acme Auto Repair
Sheboygan, WI
Cedar Marine & Tackle
Sheboygan Falls, WI
Delaware Lawn & Power
Plymouth, WI
Evergreen Equipment
Plymouth, WI
Falls Forge Hardware
Sheboygan Falls, WI
→ → →
Drag right past threshold (40% of row width) → release commits. Green pill = "done" affordance behind the row.
left sideopposite gesture
Bswipe left · actions
9:41
Tue · Mar 5
Today
Sheboygan Visits10/12
Acme Auto Repair
Sheboygan, WI
Cedar Marine & Tackle
Sheboygan Falls, WI
Delaware Lawn & Power
Plymouth, WI
NoteCallSkipDefer
Evergreen Equipment
Plymouth, WI
Falls Forge Hardware
Sheboygan Falls, WI
← ← ←
Reveals 4 quick actions in a fixed row. Tap any to commit; release without tapping snaps row back closed.
tap actioncommits + closes
Caction picked
9:41
Tue · Mar 5
Today
Sheboygan Visits10/12
Acme Auto Repair
Sheboygan, WI
Cedar Marine & Tackle
Sheboygan Falls, WI
Delaware Lawn & Power
Plymouth, WI
NoteCallSkipDefer
Evergreen Equipment
Plymouth, WI
Falls Forge Hardware
Sheboygan Falls, WI
"Call" highlights briefly on tap → row closes → phone dialer launches with the contact pre-filled.

Notes

Threshold tuning matters more than the gesture itself. Too sensitive and the rep marks done while scrolling. Too stiff and the gesture feels broken. iOS Mail uses ~50% of row width for full commit; ~20% to peek. Steal that.

"Call" only shows for contact-typed members. For account-typed, the menu is Note · Skip · Defer · Move (no Call). The row knows what its FK is and renders the right action set.

Conflict with horizontal scroll: none, since these lists don't scroll horizontally. But concept-C-style "step number on left" rows need to ensure the swipe-right reveal doesn't cover the step number visually.

Flow 07
Carry over incomplete items.

End-of-day prompt: roll the not-done items into a new day list (or onto an existing one). Their explicit ask. Uses parent_list so the chain back to the original is preserved.

Aend of day
5:14
Tue · Mar 5 · 5:14 PM
Today
12 stops · 9 done · 3 left
Sheboygan Visits3/12
Acme Auto Repair
Sheboygan, WI
Bayside Power Sports
Sheboygan, WI
Iola Outboard
Iola, WI
Kewaunee Auto & Marine
Kewaunee, WI
Lakeshore Power Equipment
Two Rivers, WI
End of day 3 items not done
Carry over →
EOD pill appears when local time crosses a threshold OR when nav switches away with un-done items left. Persistent until acted on or dismissed.
tap carrysheet up
Bcarry-over sheet
5:14
Tue · Mar 5
Today
Iola Outboard
Carry over · 3 items
Roll into a new list
From: Sheboygan Visits — Tue Mar 5
When
Wed06Tomorrow
Thu07Day after
Mon11Next week
Items rolling forward
Iola OutboardIola
Kewaunee Auto & MarineKewaunee
Lakeshore Power EquipmentTwo Rivers
Date picker defaults to day-after (skipping Wed which already has a Sheboygan day list). Items pre-listed — rep can untick any.
createnext morning
Cthursday morning
8:02
Thu · Mar 7
Today
3 carried + 8 new · ~2h drive
Sheboygan Visits — Thu11 items
Iola Outboardcarried
Iola, WI · from Tue Mar 5
Kewaunee Auto & Marinecarried
Kewaunee, WI · from Tue Mar 5
Lakeshore Power Equipmentcarried
Two Rivers, WI · from Tue Mar 5
Manitowoc Mower
Manitowoc, WI
Two Rivers Auto Body
Two Rivers, WI
Carried items at top with badge + lineage sub. New list's parent_list points back at the original Tuesday list.

Notes

Avoid infinite carry-over. If an item has been carried 3 times, the EOD pill should escalate: "Carry again, or drop?" Otherwise leftovers ride forever and rot the data.

Day-already-exists rule. If the rep targets a date that already has a day list with overlapping geographic scope, prompt to merge instead of creating a parallel list.

Original list's status. Tuesday's list isn't archived just because items left it — it shows "9 done · 3 carried to Thu" in its summary. Manager reconciliation (the agent job already in dev/active/) needs to count carry-overs as legitimate completion paths, not losses.

Flow 08
Add to list from account detail.

The other primary creation path you specified. Rep is browsing accounts (or just finished a visit), pulls up an account, adds it to one of their lists. Lives in the Accounts tab, surfaces all rep-owned lists.

Aaccount detail
2:18
Account · Accounts tab
Manitowoc Mower & Marine
Manitowoc, WI · Health 6.4 · Last visit 38d ago
Add to list Note Call Map
Briefing
OwnerMark Schroeder
Phone(920) 555-0142
Last visitJan 28 · Pat Reilly
Open quotes$8,400 · 22d aged
Activity
Note · "Owner mentioned NextPart upgrade"21d
Visit · marked done38d
"Add to list" lives in the primary action row. Highest-prominence verb on accounts the rep has assignment to.
tap actionpicker sheet
Blist picker
2:18
Manitowoc Mower
Add Manitowoc Mower to a list
Your lists
Showing rep-owned, non-archived lists.
Sheboygan Visits — Tueday · scheduled today
12 items
NextPart Bit-Flip Pushsteady · from Manager Q2 Push
8 items
Open Follow-upsfollow_ups · 6 due this week
6 items
Manitowoc loop — Thuday · scheduled Thu Mar 7
5 items
+ Create new list…
Picker shows list_type, lineage, scheduled date, current count. Helps rep pick the right one without opening each. "Manitowoc loop — Thu" is the obvious target.
tap target listcommits + toast
Cback at account
2:18
Account · Accounts tab
Manitowoc Mower & Marine
Manitowoc, WI · Health 6.4 · Last visit 38d ago
Add to list Note Call Map
On 1 list · Manitowoc loop — Thu
Briefing
OwnerMark Schroeder
Phone(920) 555-0142
Last visitJan 28 · Pat Reilly
Open quotes$8,400 · 22d aged
Added to Manitowoc loop — Thu
Toast confirms. New "On N lists" chip appears under header — tap to see all lists this account is on.

Notes

Picker eligibility: rep-owned, non-archived, non-day-list-in-the-past, type allows accounts. Don't show day lists scheduled for today if it's already 4pm — adding now is just confusion.

Manager-curated list visibility: a manager's master list with the rep as assignee — show it? Tap-to-add affects the rep's child slice, not the master. Confirm whether reps can pull additions onto a manager's list at all.

Multi-add via account list: from Accounts index, multi-select 5 accounts → "Add to list" → same picker sheet, batch add. Don't ship Flow 8 without thinking about this — single-add via detail and bulk-add via index need to share the picker.

Flow 09
Reorder mode (long-press conflict resolution).

Long-press = context menu (Apple Reminders pattern), not direct reorder. "Reorder list" lives inside the menu and enters a dedicated mode with handles + "Done" button. Discoverable + safe vs route overwrites.

Along-press → menu
9:41
Tue · Mar 5
Today
Sheboygan Visits10/12
Acme Auto Repair
Sheboygan, WI
Cedar Marine & Tackle
Sheboygan Falls, WI
Delaware Lawn & Power
Plymouth, WI
Evergreen Equipment
Plymouth, WI
Falls Forge Hardware
Sheboygan Falls, WI
Falls Forge
Mark done
Add note
Open detail
Reorder list
Move to list…
Defer to date…
Skip · drop
~500ms hold + haptic. Menu floats anchored to the row, scrim dims everything else. Reorder is one option of many.
tap reorderenter mode
Breorder mode active
9:41
Reorder mode
Sheboygan Visits
drag handles · drag rows to reorder
Acme Auto Repair
Sheboygan, WI
Cedar Marine & Tackle
Sheboygan Falls, WI
Delaware Lawn & Power
Plymouth, WI
Evergreen Equipment
Plymouth, WI
Falls Forge Hardware
Sheboygan Falls, WI
Mode badge replaces eyebrow. Done button in header right exits. Drag handles appear on every row; whole row is the drag zone.
dragmoves position
Cmid-drag
9:41
Reorder mode
Sheboygan Visits
overrides auto-route · "manual" badge will appear
Acme Auto Repair
Sheboygan, WI
Falls Forge Hardware
Sheboygan Falls, WI
Cedar Marine & Tackle
Sheboygan Falls, WI
Delaware Lawn & Power
Plymouth, WI
Evergreen Equipment
Plymouth, WI
Falls Forge dragged into position 2. Other rows fade as a re-order target. Release writes position + flips list to "manual" ordering.

Notes

Manual override warning: when reordering a route-based day list, show a banner first: "Reordering will replace auto-route. Re-optimize anytime from the menu." Stops the rep from accidentally making the day worse.

Long-press hit-target conflict with iOS-system text-selection on the row's name. Disable text selection inside .item-lo at the platform level.

"Move to list…" is the menu item that bridges to Flow 8's picker sheet. One picker, two entry points. Don't fork it.

Flow 10
Behavior by list_type — same gesture, three rules.

The same "marked done" tap, rendered three different ways depending on list_type. Why one rule doesn't fit: route-based lists need spatial preservation; task piles need a clean "completed" archive; activity-typed members are derived state and can simply leave.

Dlist_type = day
9:41
Sheboygan Visits · day
Route order
12 stops · 2 done
01 · Acme Auto
Sheboygan
02 · Bayside Power
Sheboygan
03 · Cedar Marine
Sheboygan Falls
04 · Delaware Lawn
Plymouth
05 · Evergreen Eq
Plymouth
06 · Falls Forge
Sheboygan Falls
Done in place. Position is geographic truth. Bayside (stop 2) stays at index 2, struck through. Stops never reshuffle.
Slist_type = steady
9:41
NextPart Push · steady
Open work
8 items · 3 done
Algoma Marine
Algoma, WI
Green Bay Garden
Green Bay, WI
Marinette Mower
Marinette, WI
Sturgeon Bay PS
Sturgeon Bay, WI
Oconto Power
Oconto, WI
Completed · 3
Manitowoc Mower
Manitowoc, WI
Random Lake Power
Random Lake, WI
Collapsed to bottom. Pending up top, "Completed (3)" group below — collapsible, recoverable. Order is task priority, not space.
Flist_type = follow_ups
9:41
Open follow-ups · follow_ups
Due this week
6 open · 1 closed today
Call Pat Reilly
Acme · Due Wed
Call Sam Voss
Bayside · Due Thu
Call Drew Halverson
Cedar Marine · Due Fri
Send quote · Falls Forge
$14k · Due Wed
Send quote · Harbor Marine
$6,200 · Due Thu
Send quote · Iola Outboard
$22k · Due Fri
Drops out. Member is a derived view of Activity.status — closing the activity removes the row. The dotted ghost shows where it was for ~3s, then gone.

Notes

This is one feature, three render strategies. Driven entirely by list_type — no per-list config. The model already has the field, no migration needed.

Activity-typed members in steady/day lists: still derived from Activity.status, so even in a day list, an activity-typed member that gets closed externally (rep marks the activity done from the activity detail screen) needs to update the row. Per the design doc this is a signal — confirm scope.

"Completed (N)" collapse state defaults to expanded. Hide nothing the rep just did; require an explicit collapse to tuck it away. Collapse state is per-rep-per-list, persists across sessions.