The leasing funnel, scoped to one lead source

Eight real acquisition channels with their own counts, replacing four invented shares — captured on the expanded card.

3 Sept 2026 · branch gera/r9-real-lead-source-scope · captured against propflow-stage · at ff4e2284b4

Data note. Every name and balance below comes from propflow-stage, which is anonymized by construction (ADR-0097/0110 — phones in the impossible +1000 NPA, emails @example.test). The identical capture against prod would carry real tenants' names and balances and is not safe to attach anywhere, which is why the generator refuses to run against one.

1 · The Scope section, with both controls named for what they filter

Created by is EntitySource — Clara / Manual / External, who created the row. Lead source is where the lead came from. Until this PR the first was also called "Source" and they sat one line apart.

The options are read from funnelByLeadSource in the payload, with each channel's own count: Text · 247, Website · 34, Zillow · 34, Phone · 28, Apartments.com · 19, Email · 12, No source recorded · 7, Referral · 2. The list this replaces was a literal — zillow / apartments / walk-in / referral — and on this same data walk-in does not exist while Text, the largest by four times, was not offered.

Asserted in the captured DOMCreated by · Lead source · Property. Both Scope controls asserted in the DOM after the menu is open, not just photographed.

The Scope section, with both controls named for what they filter
Expanded leasing card → ⋯ → Scope

What the scope does to the numbers

Measured on this capture's own data, picking Text moves the funnel from the unscoped 384 / 63 / 29 / 18 to 247 / 7 / 1 / 0 — four stages of one channel, not a share of the total. A share-of-total implementation, which is what this replaces, would have returned the same shape scaled by a constant.

Every stage's drill-down carries the same scope, and changing the scope drops the members already fetched under the old one — that second half was a review catch, and it is the difference between a badge reading 247 and the list under it still showing all 384.

PropFlow Docs