Guides

Mean Time to Explanation: A New Metric for AWS Cost Investigation

Operations teams track MTTR and MTTI. FinOps teams should track MTTE: the time from cost signal or question to defensible explanation. Kulshan v0.2.x brings CUR queries and Cost Explorer integration to help reduce it.

Operations teams have clear metrics for incidents. MTTR (Mean Time to Recovery) measures how long it takes to restore service. MTTI (Mean Time to Innocence) measures how long it takes to prove a component is not the cause.

FinOps has no equivalent metric for cost incidents.

When AWS spend increases unexpectedly, how long does it take to produce a defensible explanation? Not a guess. Not "it's probably that new workload." An explanation backed by evidence, with ownership identified and next steps recommended.

That gap is why I'm introducing a new term.

New metric
MTTE
Mean Time to Explanation
The average time from a cost signal or question to a defensible, evidence-backed explanation with ownership and recommended next steps.

Why MTTE matters

Most organizations have some form of cost alerting. AWS Budgets, Cost Anomaly Detection, or a FinOps platform sends a notification when spend increases.

What happens next is where things break down.

Someone opens a dashboard. Clicks around. Filters by service, then by account, then by region. Downloads a CSV. Opens a spreadsheet. Cross-references with deployment logs. Sends a Slack message asking who owns that account. Waits. Sends another message. Eventually, maybe, an explanation emerges.

That process can take hours. Sometimes days. Sometimes the question just gets dropped because nobody has time to chase it.

MTTE is not about speed for its own sake. It's about having a reliable process that produces trustworthy answers.

A high MTTE means cost questions go unanswered. Teams lose confidence in their cost data. Finance and engineering produce different numbers. Anomalies become noise. Ownership becomes unclear.

A low MTTE means cost questions get answered while they're still relevant. Teams can act on findings. Ownership is clear. The cost data becomes a useful operational signal instead of a monthly surprise.

What drives MTTE

MTTE is a function of three things:

Most organizations fail at all three. Billing data is locked in a platform only finance can access. Evidence collection requires manual clicking through the console. Context assembly requires tribal knowledge about who owns what.

Mission FinOps helps reduce MTTE through investigations. Kulshan helps reduce MTTE through tooling.

Kulshan v0.2.x: Built for lower MTTE

Kulshan started as a FinOps baseline tool. Run a scan, get a report, understand your AWS environment's cost and security posture.

With v0.2.x, Kulshan can now query AWS Cost Explorer and CUR data directly. That changes what's possible.

Before

Console clicking

Open Cost Explorer. Filter by service. Filter by account. Filter by region. Download CSV. Open spreadsheet. Repeat for each dimension.

Now

Direct queries

Run kulshan investigate cost against your CUR data. Get top movers by service, account, region, and usage type in one command.

Cost Explorer integration

The kulshan report command now pulls service-level cost data, forecasts, and RI/SP coverage directly from Cost Explorer. The cost pack runs anomaly detection using z-score, IQR, MAD, and week-over-week analysis, and can compare the results with AWS Cost Anomaly Detection findings when available.

$ kulshan report
# Pulls Cost Explorer data, detects anomalies, checks commitment gaps

CUR and Data Export support

Kulshan can now auto-detect your AWS Data Exports and query CUR Parquet files directly. Local files or S3. S3-native queries do not require downloading the full export locally first: DuckDB's httpfs extension handles it.

$ kulshan cur validate --path ./cur/
# Validates Parquet structure, checks schema mapping

$ kulshan investigate cost --s3 s3://your-bucket/cur/ --month 2024-06
# Top movers by service, account, region, usage type

$ kulshan investigate ec2 --cur ./cur/ --month 2024-06
# EC2-specific breakdown: instance family, pricing model, resource-level

Performance improvements

Full 10-pack scans now run substantially faster. Parallel pack execution, parallel region scanning, batched API calls, and quota caching all contribute.

Faster scans mean lower MTTE. You can run a baseline while the cost question is still fresh.

MCP server for AI agents

Kulshan now includes an MCP server. Run kulshan mcp-serve and any MCP-compatible agent (Claude Desktop, Kiro, Cursor) can use Kulshan's tools directly.

Seven tools are exposed:

This means AI agents can gather evidence and investigate cost questions using the same tools you'd use manually. The agent handles the clicking. You get the explanation.

Evidence Contract

Kulshan doesn't just output a confident answer. Every investigation result includes a structured evidence contract:

This structure lets AI agents reason over the evidence while making clear what still needs human confirmation. It's the difference between "EC2 costs increased" and "EC2 costs increased $2,400 in us-east-1, linked account 394812, instance family m5, confidence: high for cost data, low for ownership, owner candidate: platform-team (requires confirmation)."

Evidence quality improvements

Raw findings are not explanations. Kulshan v0.2.x includes several quality improvements:

Better findings mean faster understanding. Faster understanding means lower MTTE.

What MTTE looks like in practice

Here's a concrete example. Finance reports that last month's AWS spend increased 18%. They want to know why.

High MTTE process:

Low MTTE process:

The difference is not magic. It's having the right data accessible and the right tools to query it.

Measuring MTTE

The clock starts when a cost question is accepted for investigation. It stops when the explanation is documented with supporting evidence, known limitations, ownership, and a recommended next action.

You may eventually want to distinguish:

MTTE is the middle one. It measures explanation quality, not just speed.

Reducing MTTE in your organization

MTTE is a useful metric because it's measurable. Track how long cost questions take to answer. Look at the bottlenecks.

Common bottlenecks:

Kulshan helps with data access and tooling. Mission FinOps helps with the full picture: data foundations, ownership models, and investigation process.

Try Kulshan v0.2.x:

pip install kulshan

Run kulshan report for a Cost Explorer baseline. Run kulshan investigate cost --path ./cur/ --month 2024-06 against your CUR data for resource-level breakdown. Read-only by construction. No Kulshan account, SaaS signup, or telemetry.

View on GitHub · PyPI

What's next

MTTE is a useful frame for thinking about cost investigation maturity. Over time, I'll share more about what low MTTE looks like in practice: the data foundations, the tooling, the processes, and the organizational patterns that make cost questions answerable.

If you have cost questions nobody has answered properly, reach out. That's what Mission FinOps does.

Back to guides