Action Planner / Pipeline · Design Walkthrough · 2026-05-22

Flows, States & Edge Cases

Six screens that pressure-test the Pipeline view. Built on Luke's confirmed signals (pacing tool data, actions-only engagement, logged reschedule history). Each frame solves a specific failure mode the v1 mockup didn't address yet.

01 Pipeline · On Pace (refined) Happy path

Same skeleton as v1 with three targeted refinements. Center tile re-worded per Luke's feedback (now reads "New leads taken or referrals entered" to match the pacing tool's language). Cooling card gains an inline "Triage" link to enter the recovery flow (Frame 05). Engagement column explicitly anchored to actions-in/out, not inbound comms (per Luke's May 7 note).

crm.smartcitylocating.com/pipeline
On
$38,400 / $62,000 On pace 11 working days left
Week
Month
Quarter
Year
Expected pace
$4,200 ahead of expected pace Avg. daily target: $1,311
12
Focus actions completed today
12 of 15
3 remaining
2
New leads taken or referrals entered
2 of 5 this week
3 more to stay on pace
6
Leads cooling · Triage →
6 at risk · $14,200 pipeline
Open recovery view
Mon 18
0
Tue 19
14
Wed 20
28
Thu 21
31
Fri 22
47
Mon 25
52
Tue 26
19
Wed 27
24
Thu 28
16
Fri 29
8
Focus queue 15
New leads 4
Renewals 8
Follow-ups 22
Cooling 6
Past due 11
#
Client name
Phone number
Max price
Move dates
Engagement
Last action
Resched
3 actions
1
Sarah Mitchell
UrgentNew lead2BR/2BA
(404) 555-0192
$2,800
Jun 1 – 15
New
2
Marcus Webb
SlowRenewal1BR/1BA
(312) 555-0847
$1,950
May 31
3 days ago
2x
3
Diana Reyes
UrgentNew lead3BR/2BA
(770) 555-0331
$3,400
Jul 1 – 10
1 day ago
4 actions
4
Kevin Park
TextFollow-up2BR/2BA
(404) 555-0288
$2,650
Jun 15 – 30
5 days ago
1x
What changed from v1
  • CopyCenter target tile now reads "New leads taken or referrals entered" — matches the pacing tool's vocabulary so agents don't context-switch between tools.
  • UXCooling card gets a "Triage →" link instead of a soft sub-label. One click into Frame 05 to actually work the pile.
  • Data"Last contact" column renamed to "Last action" — explicit that the signal is action completion (Luke confirmed there's no reliable inbound tracking).
  • CopyDate in header reflects current Friday (May 22) and density strip shifted so "today" is mid-strip — gives agents look-back + look-forward in the same row.
02 Pipeline · Behind Pace (sad path) Sad path

What does the screen do when an agent is behind? Today: nothing changes. v2: the pacing bar flips red, a recovery banner takes the top of the workspace with a specific dollar gap and a one-click jump to the highest-EV actions. The cooling card escalates to "Triage now" and the focus queue auto-reorders to surface the actions most likely to close revenue this week.

crm.smartcitylocating.com/pipeline
On
Behind pace by $8,200 · 6 working days left in month
Closing 2 high-value cooling leads + 3 active tours could close the gap. Tap "Show recovery queue" to re-rank by expected revenue impact.
$31,800 / $62,000 Behind pace 6 working days left
Week
Month
Quarter
Year
Expected pace
$8,200 behind · need $5,033/day to recover Default daily target: $1,311
7
Focus actions completed today
7 of 15
8 remaining
1
New leads taken or referrals entered
1 of 5 this week
4 short · primary lever to recover pace
9
Leads cooling · Triage now →
9 at risk · $24,800 pipeline
Up 3 since Tuesday
Recovery queue 8
Focus queue 15
New leads 4
Cooling 9
Past due 11
#
Client name
Phone number
Max price
Move dates
Engagement
Last action
Resched
re-ranked by close probability × value
1
Diana Reyes
TouredNew lead3BR/2BA
(770) 555-0331
$3,400
Jul 1 – 10
1 day ago
2
Kevin Park
TextFollow-up2BR/2BA
(404) 555-0288
$2,650
Jun 15 – 30
5 days ago
1x
3
Priya Sharma
SlowRenewal2BR/2BA
(470) 555-0567
$2,450
Jun 15
4 days ago
2x
Take from rotation
4
Sarah Mitchell
RR · 15minNew lead2BR/2BA
(404) 555-0192
$2,800
Jun 1 – 15
New
What this solves
  • NewRecovery banner gives a specific dollar gap and a concrete next move. Replaces today's behavior of agents discovering they're behind only when a GM pings them.
  • New"Recovery queue" filter re-ranks by close-probability × dollar value (not just urgency). Surfaces toured + cooling renewals at the top because those are the fastest path to revenue.
  • NewSections re-label themselves behind pace: "Highest-EV this week" replaces "Time-sensitive". A new section calls out "Push for new lead intake" so the pacing tool's "X leads/day to recover" lever has a destination.
  • NewThe behind-pace state is opt-out, not opt-in. We don't wait for the agent to ask "what do I do?" — we open the day with the answer.
Tech & implementation · Behind-pace recovery queue
Stack
  • v1: Rule-based scoring. No ML.
  • Each lead gets a score: (close_probability × max_price) + (urgency_weight) + (engagement_decay_penalty)
  • Close probability is rule-based: toured = 0.6, hot + new = 0.4, cooling = 0.15, etc.
  • Banner shown when pacing_pct < 0.85 AND days_remaining <= ceil(0.25 × working_days_in_month)
  • v2 option: ML close-probability model trained on historical close/lost outcomes
Build cost
  • ≈ 8-12 dev hrs (v1)
  • Score function + threshold tuning ~4 hrs · banner UI + state mgmt ~3 hrs · "show recovery queue" filter ~3 hrs
  • Zero ongoing API cost
  • v2 ML model: ~40-60 hrs to train + deploy. Worth it after 6 months of v1 data.
Calibration
  • Weights need real tuning. Start with Luke's gut numbers, adjust based on agent feedback at the 30-day mark.
  • Behind-pace threshold (15% behind + final 25% of month) is a starting point. May need per-agent tuning.
  • Watch for false alarms early in the month. Defer banner until at least Day 7.
03 Lead Detail Drawer (slide-in side panel) Drilldown High ROI

The biggest gap in v1 was "what happens when I click a row?" Drawer slides in from the right without losing pipeline context. Includes 5 one-tap quick actions, an action timeline (assigned → completed → next), a reschedule history table (Luke confirmed both dates are logged), and a "Why is this cooling?" explainer that reads back the rules in plain English. No comms-inbound dependency.

crm.smartcitylocating.com/pipeline?lead=marcus-webb
On
Focus queue 15
New leads 4
Renewals 8
Cooling 6
#
Client name
Phone number
Max price
Move dates
Engagement
Last action
Resched
1
Sarah Mitchell
UrgentNew lead
(404) 555-0192
$2,800
Jun 1 – 15
New
2
Marcus Webb
SlowRenewal
(312) 555-0847
$1,950
May 31
3 days ago
2x
3
Diana Reyes
UrgentNew lead
(770) 555-0331
$3,400
Jul 1 – 10
1 day ago
4
Kevin Park
TextFollow-up
(404) 555-0288
$2,650
Jun 15 – 30
5 days ago
1x
Why this is high ROI
  • New5 one-tap actions at the top of the drawer (Call, Text, Email, Search, Tour) cut clicks for the most common ops to one. Today these are 3-4 clicks deep.
  • New"Why is this lead cooling?" reads the rule back in plain English — addresses Luke's exact open question ("criteria for determining a cooling lead"). The rule is shown so it can be challenged and tuned.
  • NewAction timeline uses only the data Luke confirmed exists: action assignment dates, completion dates, and reschedule logs. No dependency on inbound comms tracking.
  • UXPipeline list stays visible behind the drawer. Agent can work through 10 leads in 10 minutes without ever leaving the pipeline view.
04 Day Drilldown · Overloaded Day Redistribute Sad path Modal

When an agent clicks an overloaded day (Mon 25 — 52 actions), they need more than "here's the list." The drilldown opens a redistribute modal that proposes which low-priority actions to move where, with capacity-aware drop zones. The whole point of the density strip was to make Monday's 52 actions feel manageable today — this is the action behind that promise.

crm.smartcitylocating.com/pipeline?day=2026-05-25
On
Mon 18
0
Tue 19
14
Wed 20
28
Thu 21
31
Fri 22
47
Mon 25
52
Tue 26
19
Wed 27
24
Thu 28
16
Fri 29
8
Focus queue 15
New leads 4
Cooling 6
What this solves
  • NewCapacity-aware suggestions. The modal proposes redistribution that respects Luke's hard rules: RR 15-min lock, renewal 2-day max gap, cooling thresholds, hot/toured leads never move.
  • NewBefore / after numbers are visible at the top so the agent knows whether to commit. 52 → 40 makes Monday workable; 52 stays stuck if they cancel.
  • UX"Review one-by-one" escape hatch respects veteran agents who don't trust auto-anything. Same modal, but each row gets approved individually. (Per Luke: workflow varies even veteran-to-veteran.)
  • DataUses the action log's "assigned date vs completed date" Luke confirmed exists. No new schema required.
Tech & implementation · Day Redistribute
Stack
  • Same rule-based optimizer as v3 Frame 13 Auto-Balance, scoped to a single day instead of full week
  • Triggered when agent clicks an overloaded day pill in the density strip
  • Returns top N suggested moves where N is configurable per agent (default: 10-15)
  • "Review one-by-one" hands the agent each suggestion as a confirm/reject modal
Build cost
  • ≈ 6-10 dev hrs (if Auto-Balance Frame 13 is built; this is a UI wrapper around the same engine)
  • Or ≈ 14-18 dev hrs if shipped standalone first
  • Zero ongoing API cost
Why this is a fast first ship
  • Single-day scope is easier to validate against agent intuition
  • Ships before full Week Planning (Frame 08) is ready
  • Once trust is built on the daily version, the weekly auto-balance is the same machinery
05 Cooling Triage Mode At-risk recovery High ROI

"6 leads cooling, $14,200 in pipeline" is interesting but not actionable on its own. Triage mode is where that number becomes work. Leads are grouped by recovery action (not by status), each card has three one-tap moves, and bulk-select lets an agent close 4 dead leads in one click. The goal: clear cooling in 5 minutes, not 50.

crm.smartcitylocating.com/pipeline?filter=cooling
On
Focus queue 15
New leads 4
Renewals 8
Follow-ups 22
Cooling triage 6
Past due 11
At-risk pipeline
$14,200
Cooling leads
6
Avg. days since action
6.3
Recover · still likely to close 2 leads · $6,050
Marcus Webb Renewal
$1,950 · move May 31 · 3 days since last action · rescheduled 2x
Priya Sharma Renewal
$2,450 · move Jun 15 · 4 days since last action · rescheduled 2x
Push hard · text gap closing fast 2 leads · $4,800
Kevin Park Follow-up
$2,650 · move Jun 15–30 · 5 days since last action
Lisa Chang Renewal
$2,200 · move Jun 30 · 7 days since last action · ghosting
Likely dead · close out 2 leads · $3,350
James Whitfield Follow-up
$2,100 · move Jun 10–20 · 12 days since last action · rescheduled 3x
Andre Thompson Follow-up
$1,250 · move TBD · 14 days since last action · no response 3x
Why this is high ROI
  • NewGrouped by recovery move, not status. "Recover" / "Push hard" / "Close out" tells the agent what to do, not just what the system thinks. Status badges still exist on each card for context.
  • New3 in-card actions mean an agent can blast through 6 cooling leads in 2 minutes without ever opening a detail view. Heavy ops (call, mark lost) still confirm before committing.
  • NewBulk select + "Mark lost" for the "likely dead" bucket. This is the single highest-friction job in the agent's week today — close out dead leads — and it currently takes ~30 sec each. Bulk takes it to 5 sec for all.
  • UXPipeline-value top-line ($14.2K at risk) gives the agent a stake in the work. Closing 2 of these is real money, not a chore.
06 Focus Queue Cleared · Delight + Plan-Ahead Happy path Behavioral

Luke's stated goal: "kill the impending dread of opening Action Today with 150 actions due." Hitting zero on the focus queue is the moment where that dread should turn into momentum. The cleared state replaces the empty pipeline with a completion confirmation, a streak indicator, and a tomorrow preview so the agent's next move (plan tomorrow / take from rotation) is one click away — instead of closing the tab.

crm.smartcitylocating.com/pipeline
On
$48,900 / $62,000 Ahead of pace 6 working days left
Week
Month
Quarter
Year
Expected pace
$3,700 ahead of expected pace Avg. daily target: $1,311
Focus queue cleared. You're $3.7K ahead of pace.
15 of 15 actions done. Cooling pile empty. Close the tab or plan tomorrow.
4-day streak
Monday, May 25 — heads up
Actions queued
40 · down from 52
Hot leads waiting
3
Toured awaiting follow-up
2
Why this matters
  • NewBehavioral reinforcement. Hitting zero gives a visible win — the streak counter borrows the Apple Health/Strava pattern from the v1 research doc. Cheap to ship, high adoption signal.
  • NewThree concrete next moves instead of an empty screen. Most veteran agents will pick "Plan Monday's pipeline"; growth-oriented agents will hit "Take from rotation"; everyone else gets permission to close the tab guilt-free.
  • NewMonday heads-up shows the agent that yesterday's redistribute work (Frame 04) actually paid off — 52 → 40. The system's promise gets receipts.
  • UXThis is the answer to Luke's stated goal: "kill the impending dread of an action today with 150 actions due." The way you kill dread is by giving the agent finish lines and visible momentum.
+ Open questions for the team Discussion

Not blocking for the next sync, but worth pressure-testing as a group. Most of these are process / threshold calibration, not design decisions.

For Luke / Dustin / Ben
  • Cooling thresholds. First-pass rules baked in: new lead = 1 day, renewal = 2 days, follow-up = 5 days. Reschedule count ≥ 2 escalates one tier. Are these reasonable starting numbers, or do veteran agents have a better mental model?
  • Recovery queue ranking. Frame 02 reorders by "close probability × value". Probability is currently a proxy (toured = high, hot + new = high, cooling + low resched = medium). Worth a deeper look before we ship — could ML-rank later, rule-based works for v1.
  • Streak / dread psychology. Frame 06 leans on a streak counter. Some agents will love it, some will resent any "score." Worth getting a read from Luke on which agent personas this would land with vs annoy.
  • "Mark lost" bulk move. Frame 05 lets an agent bulk-close 4 dead leads. Are there downstream effects we need to handle (round-robin rotation, GM visibility, lead returning to pool)?
  • Behind-pace banner trigger. Frame 02 shows the banner when an agent is $X behind with Y days left. Threshold suggestion: behind by >15% of monthly goal AND inside the final 25% of working days. Worth Luke's call.
  • "Take from rotation" in Frame 06. Surfaces the round-robin queue inside the pipeline view. Today RR is a separate flow — would unifying it here be net helpful or net confusing?