Your CFO is asking what the AI spend is for.
Your logs already know.

Semantr reads the Bedrock invocation logs you already have, groups the invocations back into conversations, and works out what kinds of work your organisation is actually doing with AI. Not which team spent what — what the money bought.

One command. No account, no arguments.
uvx semantr

It asks AWS where your invocation logs are, prices the run, and analyses them. Nothing to configure and nothing to look up — if model invocation logging is not switched on, it says so rather than failing at an empty directory.

$ uvx semantr
semantr 1.0.0 — looking for your invocation logs
  found invocation logs at s3://acme-bedrock-logs/AWSLogs/ (ap-southeast-2)

Semantr will read those logs, rebuild the conversations, and name the
kinds of work it finds. Reading is free; naming costs about a cent.
Continue? [Y/n] y

  sessionise   2,778 invocations → 1,007 conversations
  discover     221 distinct prompts → 21 named use cases
  aggregate    $1.10 total spend

  report  semantr-report.html
Prefer your coding agent to run it and explain the findings?
Paste this into Claude Code
Set up Semantr so I can see what our organisation is actually using AI for.

Semantr reads AWS Bedrock model invocation logs, groups the invocations back into
conversations, works out what kinds of work we are doing, and writes a report.

Please:

1. Run it. It finds our invocation logs itself and needs no arguments:
     uvx semantr

   If it says model invocation logging is not enabled, stop and tell me — there will be
   nothing to read until we turn it on.

2. Open semantr-report.html and tell me:
   - the three biggest use cases by spend, and what they actually are
   - anything in there we would not have predicted
   - the cost improvements it suggests, and whether they look right to you

Notes:
- It needs read access to the log bucket. Nothing else.
- Naming is the only step that calls a model, and the only point at which short snippets
  of our prompts leave the machine. Completions, full conversations and raw logs never
  leave. Add --classifier-model <our own model> to send them to our provider instead.
- If we do not use Bedrock, ask me which provider we do use before changing anything.
Runs in your account Completions and raw logs never leave Under $1 for a million invocations Apache 2.0
The problem

Everyone can tell you what AI costs. Nobody can tell you what it bought.

Cost dashboards report spend by team, key and model. That answers an accounting question. It does not answer the one you are being asked.

The CFO asks what it's for

"$40k on Bedrock last quarter" is a number, not an answer. Spend by API key does not tell anyone whether the money bought customer support or someone's side project.

Nobody has the full picture

Every team knows what they built. No one knows what the other eleven teams built, and the list nobody maintains is always out of date.

The obvious approach is unaffordable

Classifying every invocation with an LLM costs tens of thousands of dollars at real volume. Which is why nobody does it, and why nobody knows.

How it works

Three steps. That is the whole model.

Everything before the naming step is free. The naming step runs about 150 model calls whether your corpus is a million invocations or fifty million — which is what makes this cost cents instead of tens of thousands.

  1. Sessionise

    Bedrock logs are stateless — a twenty-turn conversation is twenty unrelated records. But they are self-describing: each invocation contains the one before it. That makes rebuilding conversations an exact join, not a guess.

    2,761 invocations → 1,007 conversations
  2. Discover

    Similar conversations are grouped, and each group is named from its own contents. There is no fixed taxonomy and therefore no other bucket — the categories come from what your organisation is actually doing, including the things nobody thought to ask about.

    1,007 conversations → 221 distinct prompts → 21 named use cases
  3. Aggregate

    Spend, tokens and time roll up against each discovered use case, with the cost improvements that follow from them. Cost per conversation, not per request — a twenty-turn session is one unit of work.

    $1.10 across 21 use cases · analysis cost $0.03
The output

One HTML file you can forward to an exec

Self-contained: inline styles, embedded data, zero external requests. It opens in any browser, prints cleanly, and can be emailed as-is. A CISO can read the whole thing before deciding whether to trust it.

Tagged on two axes

Coding vs not, and repeatable vs experimental — so you can see at a glance how much of your spend is automation and how much is people trying things. Cadence is measured from the data, not guessed by a model.

Cost improvements, quantified

Model right-sizing, prompt caching, retry loops, untagged spend — each with the annual saving worked out, so it is a decision rather than a suggestion.

What leaves your machine

Nothing, unless you ask

Bedrock invocation logs contain full prompts and completions — the most sensitive data class a company produces. Semantr is built so that the awkward conversation never has to happen.

Runs where the data is

The CLI reads your logs in your account. With no API key configured it makes no network calls at all — not a version check, not a ping. Embeddings can run locally too, so only ~150 naming calls ever touch a provider.

Aggregates only, if you opt in

Sign up and the CLI can push counts, cost, and the names it discovered. Prompt text is stripped before anything is sent, and the egress schema is published in the README rather than buried in a policy.

Pricing

The CLI is free. Always.

You get the analysis and the report without an account, forever. The paid tier is history and trends — which a file genuinely cannot give you.

Open source

$0
  • The full analysis pipeline
  • The complete HTML report
  • Share a report with a public link
  • No account needed — the first run is on us
  • Apache 2.0
Read the source

Running Semantr costs you a few cents of inference per run, paid to your own provider. We do not mark that up and we never see it.

Is this for you?

Semantr is worth your time if