Skip to content

Know what your AI actually costs — and what it returns.

Plevsy attributes every LLM call to the feature, customer and ticket it served, in development and in production, and puts that cost next to whether the feature gets used.

Join the waitlist

For anyone who has to answer the question — engineering, product, finance.

What the video shows

The video has no sound. Its captions, scene by scene. The company, Nordlicht SaaS GmbH, and every number in it are invented.

  1. 0:00Plevsy runs on your own infrastructure. Nordlicht SaaS GmbH signs in to its hub.
  2. 0:08The overview: what AI cost in the last 14 days, against the 14 before, and which providers it went to.
  3. 0:18Every screen filters the same way: here, one team's spend.
  4. 0:26Weekly budgets for production and for development, measured against any window.
  5. 0:34Cost by feature: search-assist, ticket-summary and onboarding-copilot.
  6. 0:41One feature: what it costs to run, how often it is used, and the AI cost of one use.
  7. 0:51Which customers use search-assist most.
  8. 0:57The same customers, ranked by what their use of the feature cost in AI.
  9. 1:03ROI: what building each feature cost in development, beside what running it costs.
  10. 1:13Customers: AI cost and calls per customer, beside what each one pays.
  11. 1:23kranich-reisen went quiet mid-month. Spend shows it weeks before a renewal does.
  12. 1:29Teams and developers, pseudonymised: the cost of building, by team and by tool.
  13. 1:36Investment: what each epic cost to build, read against its tickets in Jira.
  14. 1:45Recommendations: a cheaper model only where it did the same work as well, with the evidence.
  15. 1:59Model comparison: what this traffic would have cost on another model, at catalog prices.
  16. 2:09Data health: whether the numbers can be believed. Events ingest refused are counted, by reason.
  17. 2:19Every event, as it was stored: token counts and cost, never a prompt.
  18. 2:25Settings: people and their roles.
  19. 2:29Ingest keys, one per environment.
  20. 2:32Edges: the production and development collectors, paired and forwarding.
  21. 2:36Single sign-on through your identity provider.
  22. 2:40Prices from a signed catalog, with your own overrides and discounts.
  23. 2:43Attribution: one value, legacy-faq-bot, still belongs to no feature. Mapping it is one step.
  24. 2:52The licence, bound to this hub, and the heartbeat: counts only, sent only when switched on.
  25. 3:00How long events are kept.
  26. 3:04Every change, in the audit log.
  27. 3:07How developers appear: pseudonymised here, by the tenant's choice.
  28. 3:11The tenant itself.
  29. 3:14How dates and numbers read, for each person.
  30. 3:18In English and German, light and dark.
  31. 3:28The customer portal: where Nordlicht manages its licence and its hubs.
  32. 3:36This month's events, from the hubs that send a heartbeat, against the licence's allowance.
  33. 3:43The organisation's details.
  34. 3:47Members and their roles, each invited by email.
  35. 3:51Hubs: registered online or offline, each with its version and its last heartbeat.
  36. 4:01Every licence issued, and the one in force, verifiable offline.

Your provider invoice is one number.

Your engineers know which model they called; nobody knows which feature or customer it was for.

When finance asks what the AI spend returned, the honest answer today is a spreadsheet and a guess.

How it works

Five steps, from the call in your code to a cost on a feature — and back to your developers' coding tools as a model recommendation.

  1. Report each call

    In production, your code reports token counts, model, feature and customer — over HTTP from any language, or through the TypeScript SDK. On developers' machines, plevsy-dev records every Claude Code and Codex CLI call exactly, taking the ticket from the branch name. Events that carry prompt or completion fields are refused.

  2. Collect where the data is

    Run an edge in your dev network and one in production. Edges buffer locally and forward to one hub, outbound only. Or send straight to the hub.

  3. Price it

    Prices come from a signed catalog with input, output, cache and batch rates. Where a provider charges more above a prompt length, a call is priced at the rate its length falls under; where the provider's page leaves the rule open, the row is flagged, not guessed. Your negotiated rates and discounts override the catalog.

  4. Attribute it

    Map repositories, ticket IDs and customer IDs to features, teams and customers. With Jira Cloud connected, each ticket also brings its epic, issue type and status. Events are never rewritten, so a rename — or a ticket moved to another epic — applies to all of its history.

  5. Recommend a cheaper model

    From the same cost and Jira history, the hub works out for each team and kind of work whether a cheaper model did the work as well, and names it — or says there is no recommendation, and why. The development edge keeps a copy, and a coding tool asks it which model to use for the work in front of it. It is advice: a team takes it or leaves it.

What it answers

What did it cost to build feature X with AI?

Every call from a coding tool carries the developer, the ticket and the tool. Tickets map to features, and through Jira to their epics and initiatives, so development cost reads by initiative, epic and ticket — and by team and tool.

Developers are pseudonymised by default, and views by developer need their own permission.

The Investment screen: development AI cost by epic and ticket, with what Jira says came of it — reopens, review rounds and resolved tickets.

What does feature X cost to run, and for whom?

Production AI cost by feature, module, customer and model.

Cost per use, not only per call: averaged over the uses a feature reports, and exact for calls tied together by a trace ID. Per customer, the margin against the monthly fee you record.

The Customers screen: each customer's cost, its trend, the monthly fee and the margin.

Is what we built actually used?

Your code reports uses — events with no AI in them, like “payment completed”, 312 times.

Each feature's development cost sits next to its uses, as development cost per 1,000 uses. Releases shown as marks on the charts: planned.

The ROI screen: development cost and production AI cost side by side for each feature.

Would a cheaper model do?

Plevsy re-prices the tokens you actually used on the 72 current Anthropic, OpenAI and Google models in its signed catalog, with published benchmark scores beside the price where there are any. Where the tokenizer differs, the figure is marked as an estimate.

The Model comparison screen: for each model in use, what the same tokens would cost on cheaper models, firm or estimated.

And did it do the work as well?

Price alone is not an answer. For each team and kind of work — bug, chore, feature, spike — Plevsy reads the last 90 days of Jira tickets. It names a cheaper model only when each model has at least 20 done tickets, the cheaper one's are reopened no more often (within five points) and take at most one more review round, and it costs at least 20% less per ticket.

Then it names the model, the saving and every number behind it. Otherwise it says “no recommendation” and why; with fewer than 20 tickets, it shows how many it has. It is advice a team takes or leaves: it never routes a call, never switches a model, and never names a developer.

In Claude Code, and in Cursor where it is set up, the answer comes from the edge in your own network — even when the hub cannot be reached, and then marked as stale. The same policy can be proposed as a change to the repository's CLAUDE.md or AGENTS.md, as a diff for someone to review. Both are opt-in. The tool only answers; the developer or their agent decides.

The Recommendations card: one team's recommendation of a cheaper model with its evidence and estimated saving, and another's “no recommendation” with the reason.

Budgets and data health

Weekly budgets per environment

Set a weekly AI budget for development and one for production. Any window you look at is measured against the budget scaled to it.

Development and production AI budgets for this week, with the top teams and features.

Nothing hidden

Unmapped values, unpriced models and the events ingest refused are listed, each with its reason. An unpriced call is counted with no cost, never as zero — and once a price exists, a recalculation prices the past calls, after saying exactly how many it will touch.

The Data health screen: ingestion, with refused and lost events, and attribution coverage per dimension.

Built for European companies

Metadata only

Tokens, model, cost and tags. Prompt and completion fields are rejected at ingest, at any depth; the event schema has no place for them. Tag values are free text, so keep content out of them.

On your infrastructure

One binary, built as a Docker image, with Postgres and ClickHouse. Docker Compose files included.

It calls out only for prices and for its licence, and both can be switched off: load the signed catalog from a file, and install the licence file by hand. It reads your own Jira site once you connect one, sends a heartbeat, counts only, when you switch it on, and a problem report when someone sends one.

Finance sees cost, not people

Developer-level data sits behind its own permission. The finance role sees cost, customers, ROI and budgets, and can set budgets — but no developers, teams, repositories or tickets, enforced by the API, not only hidden.

Your customer IDs stay yours

Customer IDs stay on your hub and get their names from your own registry. With a licence, an edge can replace them with a keyed hash before forwarding.

Every change on record

A change and its audit entry are written together: if the entry cannot be written, the change is not made. Sign-ins, refused sign-ins and ended sessions are recorded too. Sign-in entries are kept 180 days and changes 730, each settable within limits, never forever.

Integrations

Today

  • Events API over HTTP at POST /v1/events, from any language. Accepts calls to Anthropic, OpenAI, Google, Azure OpenAI, AWS Bedrock and Mistral.
  • A TypeScript SDK, @plevsy/sdk, that reports each call and each use of a feature.
  • plevsy-dev on developers' machines: Claude Code and Codex CLI, exact per call, the ticket from the branch.
  • plevsy-dev mcp and advise: each team's model policy where the work happens — the MCP tool model_policy for Claude Code and Cursor (opt-in), and the Model policy table in CLAUDE.md or AGENTS.md, proposed as a diff.
  • Jira Cloud: each ticket's epic, issue type, status and workflow history, synced hourly.
  • Prices for Anthropic, OpenAI and Google models. Calls to other providers are stored and counted, unpriced.
  • A read API described in OpenAPI, for your own BI tool: time series, breakdowns, customers, traces, model comparison, data health.
  • Single sign-on with OIDC.

Nothing is published yet: the hub, the edge, the SDK and plevsy-dev are downloadable from the first release.

Planned

  • The Python SDK.
  • Gemini CLI; Cursor and Copilot as totals per key, when asked for.
  • Jira fix versions as releases, and Jira Data Center.
  • Stripe, for revenue per customer.
  • Hosted in the EU.

Tiers

No prices yet: nothing paid is sold before it can be. The paid tiers are coming soon, and you can register your interest in one below.

  • Free

    Evaluation: a week of history.

    Includes

    • Every event accepted
    • 7 days of history
    • 3 edges
    • 3 seats
    • 1 hub
    • The newest prices every week

    Download and run

  • Enterprise

    Coming soon

    A year of history for a production installation.

    Includes

    • Every event accepted
    • 365 days of history
    • 20 edges
    • Unlimited seats
    • Prices from the standard feed
  • Enterprise Unlimited

    Coming soon

    No limit on history, edges or seats.

    Includes

    • Every event accepted
    • Unlimited history
    • Unlimited edges
    • Unlimited seats
    • Prices from the priority feed

Register interest in a paid tier

We write to you once, when the tier you chose is available. No account, and no confirmation email.

Optional. Anything we should know, such as how many hubs you would run.

We keep your email address, the tier and your note until you ask us to delete them. Your IP address and browser are kept only as a keyed hash, and deleted after 30 days. Privacy policy.

Join the waitlist.

We email you a link to confirm your address. Sign-ups that are not confirmed within 7 days are deleted.

Where should it run?

The rest is optional

It tells us what to build next. Skip anything you would rather not answer.

Providers you use

We use your answers to plan the product and to email you about Plevsy. Nothing else. Every email has a link to remove you from the list. Privacy policy.

Questions

How do you handle GDPR and data residency?

Self-hosted, the data stays where you run it. Events hold no prompt content, and an edge can hash customer IDs before forwarding.

Retention is set per tenant. The audit log records every change and every sign-in, and its entries expire by class. Deleting one person's data on request is not built yet.

What does the SDK add to a request's latency?

Recording a call takes under 200 ns, and a wrapped client adds about a microsecond, in the TypeScript SDK's own benchmark. The event is built after the response has reached your code and sent in the background, and an edge in your network buffers, so your code never waits on the hub.