Each building's fees, saved confirmed so a website or rent-roll pull can't overwrite them
30 Sept 2026 · branch feat/onboarding-leasing-fees-p3c · captured against propflow-stage · at c6ed45430d4+local
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.
Each fee is a card with one row per building in the company. Typing a fee and saving it confirms it, which locks it so the next website or rent-roll pull can't overwrite it. A blue dot marks every building whose fee nobody has confirmed yet.
Two rows on this stage company already hold a scraped $27 application fee. They show Confirm, which saves the same value with the lock. Every other row is empty. Building names sit in one fixed-width column, so the inputs line up across all five cards. Pet charges save through the same door as Building › Policies, so a pet fee the company locked is refused here too.
Asserted in the captured DOM — Fees & deposits · Application fee · Security deposit · Pet rent. All five fee cards rendered (not the loading or error state).
Round 1 (against the mock). The mock asks each fee with one row per building, and that is what renders. Round 1 found the inputs jumping left and right with each building name's length. The fix is one fixed-width name column (truncated, with the full name on hover).
Round 2 (brand-and-design.md). The labels are plain (Application fee, Pet rent (monthly)), the dots use the shared pending tone, and Confirmed is quiet muted text, not a badge. A known cost: a company with many buildings gets long cards, five per company. A per-building view is a later option if that proves heavy. Nothing was saved in the capture. The saves and the lock are pinned by the route and DOM tests.