Three features landed in sequence, each one building on the last, each one making the measurement experience less of a task and more of a conversation between the system and the person using it.
First: polygon persistence. Draw your lawn polygons, save the order, come back a week later — and they're still there. Editable, draggable, with every vertex listener intact. The measurement geometry lives in a JSONB column now, serialized on save, restored on re-measure. The pattern already existed in the quick measure tool's localStorage. The work was threading it through the full stack so it survives beyond a browser session.
Second: property insights. The moment an address geocodes, two APIs fire in parallel — parcel boundaries and building footprints. The result: a property estimate card showing lot size minus structure equals maximum treatable lawn. It's a starting point, not a measurement. But starting points change behavior. Instead of staring at blank satellite imagery, the operator begins with a number and refines it.
Third: the mobile widget redesign. What was a dead-end email collector became an instant quote experience. Type an address on your phone and see estimated pricing based on property insights — per-application costs, annual totals, the same math the desktop view does. The "send me a link" CTA became "Ask for Measured Quote," which creates a lead, stores the estimate, and emails the full measurement link. The customer arrives at the measurement tool already knowing the ballpark.
And underneath all three: a tenant scoping fix on the AI assistant that was quietly querying everyone's data instead of just yours. The pipeline summary was reporting 1,700 leads when the real count was 58. Not a hallucination — a missing WHERE clause. Every tool method in the AI service gained tenant ID scoping. The aggregate queries moved to database-level counting. The chat panel switched from v-if to v-show so conversations survive navigation.
The through-line: each feature reduces the distance between "I want to know" and "here's the answer." Polygon persistence means you don't re-do work. Property insights mean you start informed. The mobile widget means you get pricing before you get to a computer. And tenant scoping means the numbers you see are actually yours.