A data refresh is a bill. Before re-pulling from any paid source, check what each pull costs, reuse the cache, dry-run the total, and pull only the unavoidable remainder.
At Doozer's scale, "just refresh the data" is not a neutral operation. Every pull from a paid source (Google Places, photos, deep research, AI) is money, multiplied by thousands of rows. The instinct to freshen everything is exactly the instinct that burns a budget.
A photo refresh was needed. The naive implementation — re-pull every business's photos from the source — would have cost roughly $300. The actual requirement, once we asked which photos genuinely must be re-fetched, was a small subset already missing or broken. Reusing everything still valid and pulling only the real remainder cost about $1.40. Same visible outcome. Two orders of magnitude apart.
Before any bulk refresh:
precisely so a "refresh" is not a re-buy. Cached-and-still-valid means do nothing.
that bills, and look at that number, before running it for real.
The clever part is treating a refresh as a bill to be estimated, not a button to be pressed. It reframes an ops task as a budgeting decision, and it turns "regenerate everything" — which feels responsible — into the reckless option. This is the cost half of the skeleton-first instinct (do the expensive thing only when it is truly needed) and it is why the regeneration engine reports cost per mode before it runs. A silent money-burn from not doing this is what motivated the admin alerting roadmap.