The FinOps harness

What if your FinOps ran itself?

There’s a cost note in your team’s Slack channel. (The fix is already with your coding agent.)

While your team shipped, Costory read your cloud, data and LLM cost with your company’s context, decided what was worth anyone’s time and pinged the owner with the cause. When the fix is clear, your coding agent opens the PR. You decide what merges.

Start 30-day free trial

30 days free, no credit card. Connect in under 30 minutes, get your first recommendation the next day.

Search Acme
G
Acme ▾
▾Channels
finops
general
incidents
team-support-ai
support-ops
▾Direct messages
Daniel Chen
Julien Moreau
▾Apps
Costory
team-support-ai▾
14
Today
CostoryAPP8:02 AM
LLM cost alert · Support agent. Model API spend for the AI support agent is up this week. The switch from Gemini 3 Flash to Llama 3.3 70B on Monday is not the cause.
What changed
Daily LLM cost up from €210 to €340. Cost per ticket flat at €0.17.
Likely cause
Tickets (Snowflake) up from 1,200 to 2,000 a day since Tuesday. Llama 3.3 70B costs about the same per token as Gemini 3 Flash.
Owner
@Daniel Chen · Support AI team
Suggested next step
Find what drove the spike, then deflect repeat questions to the help center.
View detailsMark expectedSnooze 24h
2 repliesLast reply today at 4:23 PMView thread
Message #team-support-ai
Threadteam-support-ai✕
2 replies
Daniel Chen4:22 PM
@Costory which ticket categories grew the most since Tuesday, and what did they cost?
CostoryAPP4:23 PM
Login and auth tickets grew the most, from about 150 to 900 a day, and account for most of the increase. Cost per ticket in that category is €0.16, in line with the others (€0.15 to €0.18). Suggested next step: add a help center answer for the login error and point those tickets to it.
Reply…

Cost is nobody’s first job. So it shouldn’t depend on someone remembering.

Every cost tool so far waits to be opened: a dashboard, a report, a chat box. That works for the one person whose job is cost. Everyone else is shipping. The spike from Tuesday’s deploy shows up weeks later on an invoice, and by then nobody remembers the PR. A billing MCP in Claude doesn’t change that on its own: someone still has to think of asking.

We think FinOps should work the other way round. Something should read the cost every day, know which team owns what, and go to the person who can act, only when it’s worth it. Then it should keep watching until the fix has worked. That’s what we mean by self-driving.

Pull (you ask)

Someone has to think of asking

Raw billing lines for one account

One person sees the answer

Ends with an answer

Push (Costory comes to you)

Runs every day on its own

Allocated cost, owners and deploys

The owning team sees it in its channel

Ends when spend is back to baseline

How Costory makes your FinOps self-driving

A model on its own answers questions. A harness is everything around it that lets it do the job without being asked. Ours has five parts.

An agent.

It monitors, investigates, recommends and follows up, every day, without a prompt.

Skills.

The FinOps work, written down so the agent runs it the same way every time: allocation and showback, anomaly investigation, optimization, unit economics, budgets, finance close and AI spend.

Your company’s context.

One cost model across every provider, allocated by YAML rules you keep in git, with owners from your catalog, joined with deploys, telemetry and usage metrics.

Loops.

Scouts are markdown files: what to read, what to summarize, when to ping. Costory runs them every morning. Write your own, or start from ours. If nothing is worth a ping, the result goes to memory and Slack stays quiet.

Guardrails.

Read-only on your cloud. Any change to your code goes through a PR your team reviews.

✳︎ BigQuery cost this week
Claude Code v2.1.322
Opus 5.5 · Claude Enterprise
~/acme/analytics-dbt
> Why did our BigQuery cost go up this week?
●costory - get_context (MCP)(team: "data-platform")
⎿Team, owners, services and dbt models
●costory - query (MCP)(metric: "cost", groupBy: "dbt_model", period: "last 14 days")
⎿14 rows
●
The dbt model orders_daily scans the full table since PR #2291: +€640 this week. Owner: Leo Martin (data platform).
Recommendation: partition orders_daily by date. I can make that change in this repo and open a PR for your review.
>
? for shortcuts

Notice, explain, hand off, check. The loop doesn’t end with an answer. It ends when spend is back to baseline.

It runs on its own. It doesn’t run your cloud.

Self-driving means nobody has to prompt it, not that nobody is in charge. Nobody has to ask. Nothing changes without a human.

Read-only, everywhere.

Costory reads native billing and usage exports.

It can’t merge itself.

Recommendations go to your coding agent, which opens a PR.

Quiet by default.

Each Scout sets its own threshold for a ping.

Your rules, in git.

Allocation is YAML you version, review in a PR and manage with Terraform.

What it can create.

The MCP can only create Costory objects: alerts, reports, dashboards and events.

What Costory does not do

Costory does not buy Reserved Instances or Savings Plans for you. The agent recommends; your team decides.

It does not apply automated rightsizing or change resources for you.

It does not promise a savings percentage. Recommendations come with an impact estimate from your own usage.

It never gets write access to your cloud accounts. MCP actions create Costory objects only: alerts, reports, dashboards and events.

It never charges a percentage of your bill.

Context is what keeps it on the road.

An agent reading raw billing lines guesses. An agent reading your cost model knows which team owns the service, which deploy moved it and what a request is supposed to cost. That’s why the ping goes to the right team with the right number, and why ten people asking get the same answer.

  • Bills. AWS, Google Cloud, Azure, Kubernetes, Snowflake, Databricks, BigQuery, Datadog, OpenAI, Anthropic and more, normalized into one cost model.

  • Allocation. Rules versioned in git as YAML, reviewed in a PR, backfilled over full history.

  • Telemetry. Kubernetes, Datadog, Tsuga and dbt, to split shared cost by real usage.

  • Events and metrics. Deploys and releases from GitHub or your CI, and the usage metrics behind unit costs.

name: component_ownership
description: Generated from the service catalog
keyField: component # the column your component label lands in
#...
targetColumns:
- name: team
mode: replace
- name: cost_center
mode: replace
entries:
# a reorg: past costs keep the old owner
- key: checkout-api
when: { start: "2025-01-01", end: "2026-03-31" }
then:
team: Payments
cost_center: CC-410
- key: checkout-api
when: { start: "2026-04-01" }
then:
team: Commerce Platform
cost_center: CC-520
# a shared database: each team pays its share of daily query time
- key: orders-postgres
then:
metric:
integrationId: datadog
query: sum:postgresql.queries.time{db:orders} by {team,cost_center}
propagates: [team, cost_center]

Sources

Bills

AWS

Google Cloud

Azure

Snowflake

OpenAI

Anthropic

Databricks and more

Context

Telemetry · CI · dbt · Product events · Business metrics

Costory model

One model on BigQuery

normalized · allocated · 5 cost metrics

joined with your context

Where it answers

Slack

Claude

Backstage

BI / finance

It shows up where your team already works.

No new tab to remember.

  • Slack: notes in each team’s channel, and follow-ups with @Costory in the thread

  • Claude, Claude Code, Cursor, Copilot, Codex: through the MCP

  • Dust: company agents

  • Backstage: cost on every service page

  • API: everything else

Backstage
Search
Home
Catalog
APIs
Docs
Create
Catalog
Component • service
support-agent
Lifecycle productionOwner support-platform
OverviewDocsAPIs
Costory
Cost, last 30 days
€8,240
Cost per ticket
€0.17
Daily LLM cost
€340, from €210
Owner
support-platform
CONTEXT
Tickets up from 1,200 to 2,000 a day. PR #2417 routes classification to a smaller model.
View in Costory →

So, what’s left for you?

The reading and the chasing happen while you ship. Then what?

You still pick the destination.

The harness doesn’t decide what’s worth paying for. You do: a bigger model for better answers, a reserved instance, a feature that costs more because it earns more.

Skip the chasing.

The reading, the chasing and the follow-up that nobody had time for land as a note in the right channel or a PR to review. Read it, merge it, get back to work.

No FinOps department required.

Every engineer gets the cost context of a FinOps team. The platform team doesn’t have to build and maintain one more internal tool.

What changes for each team

Engineers

Cost shows up in the channel, the PR and the service page they already use. Their coding agent checks what a service costs and who owns it before a change ships.

Platform team

Allocation rules live in git, not in a spreadsheet. No internal cost tool to host and maintain.

Finance

The same allocated number engineering sees, frozen at month end by cost center, with a monthly report that explains the changes.

Cost belongs in the same loop as the code.

Latency and errors already have an owner, an alert and a fix that goes through review. Cost mostly has an invoice. We think cost moves into the same loop: noticed by an agent, explained with context, fixed in a PR, checked after it ships.

So the FinOps team of the future isn’t a team. It’s your context and your rules, written down, plus a harness that runs them every day. People set the direction and review the trade-offs. We run Costory on Costory.

Questions?

01

Check the docs.

How billing data, Scouts, alerts and the MCP fit together.

02

Read the skills.

Use cases that show what the agent runs, from cost spikes to month-end close.

03

Ask your assistant.

Copy the setup prompt into Claude, Cursor or any MCP client. It signs you up and walks you through it.

04

Talk to a human.

For setup, a security review, a Custom plan or a move from a homegrown tool.

FAQ

Frequently asked questions

What does “self-driving FinOps” mean?

Costory reads your cost every day without being asked, decides what is worth a ping, explains it to the owner and hands the fix to your coding agent. People still decide: every change to your code goes through a PR your team reviews.

Is this an AI agent that changes my infrastructure?

No. Costory is read-only on your cloud and never pushes to your code base. It hands each recommendation to your coding agent, which opens a PR your team reviews.

How is this different from Claude with a billing MCP?

Claude answers when someone asks, from one provider’s raw billing lines. The harness runs every day without being asked, across every provider, on cost already allocated to your teams, and follows up until spend is back to baseline. Many teams use both: Claude asks Costory through the MCP.

Won’t it flood us with alerts?

Each Scout sets its own threshold for a ping. Below it, the result goes to memory, not to Slack. You can backtest any alert on past data to see how often it would have fired.

Do we need perfect tagging first?

No. Allocation comes from your YAML enrichments, your service catalog and telemetry. Costory can also suggest rules from the tags you already have.

Is it included in my plan?

Yes, in every plan from 250€/month. Plans follow usage, including agent runs. Very heavy use moves you up a plan, never a percentage of your bill.

Try it on your own bill for 30 days.

Connect your first bill in under 30 minutes. Your first recommendation arrives the next day. No credit card.

Prefer a human? Talk to us →