Skip to main content
Back to blog

FinOps Recommendation Titles Now Say What to Do

Riya Mittal
Riya Mittal Engineer · Zop.Dev
6 min read
FinOps Recommendation Titles Now Say What to Do

FinOps Recommendation Titles Now Say What to Do

A recommendation title is where cost visibility either lands or doesn’t. “EBS volume vol-1 is not encrypted at rest” states a fact. It doesn’t state what to do about it, so every person who scans that list has to do the same small translation from finding to action, one recommendation at a time, forever.

FinOps is the practice of giving engineering, finance, and product teams shared, real-time visibility into cloud cost so spending decisions get made where the usage happens. ZopNight’s recommendation titles now lead with the action instead: “Encrypt EBS volume.” The drawer underneath separates what was observed from what’s recommended, so the fact that justified the action is still there, just not standing in front of it.

1,563 Recommendations Across 53 Rules Were Measured, Not Assumed

All 660 registered rules now declare an action-first headline. 161 of those were reviewed directly against their source workbook. The remaining 393 were extrapolated from each rule’s own prose. A rule’s existing description already implies what the fix should say, once someone reads it that way.

BeforeAfter
Example title”EBS volume vol-1 is not encrypted at rest""Encrypt EBS volume”
What it statesThe findingThe action
Rules covering itUneven, no declared contractAll 660

The scale of the fix is the part worth sitting with. This wasn’t checked against a handful of sample rules picked because they were easy to verify. It was measured against 51,228 production recommendations, pulled from 16 real organizations. The visible gap, meaning recommendations whose title still described the problem instead of the action, came out to 1,563 recommendations across 53 rules. That number is zero now, not because the rules were rewritten by hand one at a time, but because every rule was required to declare the action-first form as part of shipping this release.

Severity and Observation Are Resolved on Read, Not Stored

The drawer’s copy, the reason a recommendation carries a given severity and the observation that backs it, isn’t written once and saved. Three fields, a severity reason, an observation, and the recommendation itself, are transient: none of them are persisted anywhere. Each one resolves at read time from the rule’s own declarations.

Architecture diagram

That choice pays off in two ways that a stored-copy version wouldn’t. A rule that later gets retired carries no orphaned reason text sitting in a database somewhere, because there was never a stored copy to orphan. And a copy edit to how a rule explains itself applies to every recommendation that rule has ever produced, instantly, the next time any of them is read, with no backfill job needed to touch old rows. This works when a rule’s own declaration stays in place for every read that needs it. It fails if that declaration goes missing, since there would be nothing left to resolve.

Severity Gets a Sentence, Confidence Gets a Word

Severity used to be a colored label with no explanation attached. It now comes with a sentence stating why that severity applies to this specific finding. Confidence moved the other direction: what used to be a percentage next to a bar now reads as High, Medium, or Low, a coarser scale that’s honest about how much precision a confidence estimate actually deserves. A new ResourcePanel consolidates a resource’s identity and region into one place at the top of the drawer instead of scattering them through the surrounding text, and attributes and tags now show as chips with room to expand for the full list. Excel exports gained a Confidence column to match.

None of This Needed a Migration

The whole change ships scoped to the recommender’s model and rule declarations, plus the app’s recommendations drawer and list. No migration, no new environment variable. That’s not an incidental detail. It’s the direct payoff of resolving severity reason and observation on read instead of storing them: a fix to how a rule explains itself doesn’t need a backfill script to reach recommendations that already existed, because nothing about those recommendations was ever frozen in the first place.

Tagged
Riya Mittal

Riya Mittal

Engineer · Zop.Dev

Riya is an AI engineer at ZopDev, working on production LLM pipelines behind the company's content and account-intelligence platforms. She works on the engineering that makes these systems reliable and repeatable, from multi-provider orchestration and structured output validation to evals, idempotent pipelines, and automated recovery. She writes about what it takes to make AI systems reliable enough to run in production.

Stop watching the waste.
Start cutting it.

See. Find. Fix. Automatic.

Connect your first cloud account in under 5 minutes. See your first remediation in under 7. No credit card required.

CDCR connect detect classify remediate
full audit every action traceable
read-only default access
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·