What is your organisation actually using AI for?
Bedrock already logged the answer.

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.

Get set up
curl -LsSf https://semantr.com/install.sh | sh

Then run semantr. It finds your invocation logs on AWS, prices the run, and analyses them.

$ semantr
semantr: 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.
Continue? [Y/n] y

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

  report  semantr-report.html

Sign in once, with Google, so we can fund the model that names what it finds. Your account also keeps history, trends and shareable links.

Completions and raw logs never leave Under $1 to run, for a million invocations Apache 2.0

See what your usage actually means.

Every discovered use case, named from its own contents, with its own spend, conversations and cost improvements attached.

Example report output:

$2,145.30total spend
21use cases
1,007conversations
$2.13per conversation
Use caseTagsConvSpend
Customer Support Responsesnon-coding repeatable206$1,204.60
Invoice Data Extractionnon-coding repeatable238$58.30
Pull Request Reviewcoding repeatable131$14.90
Churn Analysis Queriescoding experimental44$616.40
Database Script Developmentcoding experimental34$18.20

See what's production and what's people experimenting

Every use case is tagged coding vs non-coding, and repeatable vs experimental — so you can tell, at a glance, how much of your spend is automation running in production and how much is people still trying things out.

Recommendations and improvements

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.

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

Cost dashboards report spend by team, key and model — an accounting answer to a question nobody actually asked. What people want to know is what the money bought.

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.

Get 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.

Sessionise, discover, aggregate.

The naming step runs about 150 model calls, whether your corpus is a million invocations or fifty million — which is what keeps this in cents, not tens of thousands of dollars.

  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.

    $2,145.30 across 21 use cases · analysis cost $0.03

Security & privacy

Completions and raw logs never leave your machine.

Bedrock invocation logs contain full prompts and completions — the most sensitive data class a company produces. This is not a footnote. Every design decision below follows from taking that seriously, starting with what is and isn't allowed to leave the machine it runs on.

Only snippets leave, never completions

Naming is the only step that calls a model, and it only ever sees prompt snippets: system prompt, tool names, first turn, each capped at 600 characters. By default that runs on Semantr's hosted inference, against your account. Point --classifier-model at your own provider, including something fully local, and that path is never touched.

Aggregates are kept, prompt text isn't

Every run keeps a copy of its aggregates, counts, cost, and the names it discovered, so the report has a home and a working share link, with or without an account. Prompt text is stripped before anything is sent, and the egress schema is published in the README rather than buried in a policy.

Runs entirely inside your own AWS account

The CLI, the pipeline and the report are Apache 2.0. Read the source, or run the whole thing yourself, and nothing you analyse has to leave your account at all.

Free, and open source.

The CLI, the pipeline and the report are Apache 2.0 — free to read, run and change.

Open source

$0
  • The full analysis pipeline
  • The complete HTML report
  • Share a report with a public link
  • No account needed to run it
  • 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.