Storm Tracker UX — what's new

Eight UX improvements that make the storm tracker actually usable for high-volume D&R work: sorting, filtering, dedup export, auto-tagging, queues, and column control.

Updated3 min readstorm

The storm tracker now persists how you sort, where you filter, what you've already exported, and which columns matter to you. Eight small UX phases that add up.

What changed

The storm tracker page (Sidebar → Storm) shipped a wave of UX improvements aimed at teams running large D&R operations across many counties. Everything here is additive — no existing workflow broke.

1. Sortable columns with persisted preferences

Click any column header to sort. Your sort choice is saved per-user in user_view_preferences, so you come back to the same view tomorrow. No more "where was I?".

2. Multi-select filters

The filter bar above the table supports multi-select for region, county, severity, and event type. Each filter shows a count badge for how many rows match. Clear all resets everything to the default view.

3. CSV export with deduplication

When you export to CSV, rows that have been exported before are skipped by default. A toggle lets you include them again ("Re-export all") for when you need a fresh snapshot.

Each row tracks last_exported_at and exported_to_csv_count so you can see at a glance which contacts have been through the funnel before.

4. Roof inspection auto-tagging

When a new inspection is logged, the tracker looks back 60 days for storm events near that customer's coordinates. If exactly one storm is a clear match, the inspection auto-links to it (visible as source_storm_id on the inspection record).

If multiple storms cluster around the same window, the auto-tag refuses to guess — you'll see a "needs manual review" indicator. Click it to pick the right storm.

5. Pre-inspection outreach queue

A widget on the storm event detail page lists customers who are scheduled for inspection within the next 7 days but haven't had recent contact. Use it to send out reminder outreach before the visit.

6. Post-inspection damage-check queue

The companion widget for customers whose inspections completed in the past 14 days but who have no logged damage assessment yet. Use it to chase the assessment and convert eligible customers to a D&R project.

7. Convert-to-D&R pinned

The "Convert to D&R project" action is now pinned to the row hover toolbar, not buried in a menu. One click sends a customer into the D&R intake flow with the storm event pre-populated.

8. Column visibility + reorder

Click the column settings icon in the top right of the table. Drag handles let you reorder columns; checkboxes hide ones you don't use. Customer and Actions columns are pinned and can't be hidden.

Your column layout persists per-user, same as the sort.

Why this matters

Pre-launch, the storm tracker was a flat 83k-row table that everyone ran the same way. Now each ops person can shape it for their workflow:

  • Inside sales reps filter by county and sort by impact severity
  • D&R coordinators live in the pre/post-inspection queues
  • Executives export filtered slices for board reports without double-counting

Verify it worked

  • Visit the storm tracker, click a column header — table re-sorts
  • Apply a county filter, refresh the page — filter persists
  • Open the column settings, drag a column, close — order persists on return
  • Log a new inspection within 60 days of a real storm event — source_storm_id auto-populates on the inspection

Troubleshooting

"My filter / sort isn't persisting." — You're probably signed in as a different user than you tested with. The preferences are per-user, not per-team.

"Auto-tag isn't matching." — Either there's no storm in the 60-day window for that location, or there are multiple candidates and the heuristic deliberately refused. Pick manually from the inspection detail.

"I want to re-export rows I already exported." — Toggle Re-export all above the CSV button. This ignores the dedup state for the current export only.