A reporting database for SaaS products

Better reporting
for your customers.

Customer reports get slow, expensive or out of date. They can also put too much load on the database running your product.

eddy keeps your reporting data updated in a separate database, ready for your app, agents and other systems.

We'll email you to find a time. Early access and pricing.

See the product →

Which kind of product the example is for

When data changes

A correction should reach the report.

A customer changes plan. A refund adjusts last month's sales. eddy updates the reporting data as those records change, so your dashboards and agent tools can use the same numbers.

app.acme.example/accounts/42/usagepostgres update subscriptions set plan = 'scale'
NorthwindUsage · last 30 days

Sep 3–Oct 2 · Source changes through Oct 2, 10:00 UTC

Monthly spend$14,900
PlanScale
Active seats39 / 40
dayseatseventsMonthly spend
Oct 23918,204$14,900
Oct 13921,560$12,400
Sep 303820,917$12,400
Sep 293812,044$12,400

1–4 of 30 · Next →

Same reporting data for your agent

“Northwind’s monthly spend is $14,900 on the Scale plan. Reporting period: Sep 3–Oct 2. Source changes included through Oct 2, 10:00 UTC.”

Example agent tool. Your app checks who can see this account.

Example data and interfaces. Animation timing is illustrative.

Speed and cost

Reports need somewhere to run.

A query that works for one customer can struggle when hundreds open the report together. Running those queries against your application database adds load. Running them repeatedly in a warehouse can get expensive.

eddy keeps the reporting results updated as data changes. Customer requests read those results, instead of rebuilding the underlying report each time.

3,125dashboard reads per second
20.4 msmedian response time
64concurrent clients

Recorded 2026-10-08: Six per-customer dashboard lookups over 30 active customers from a 1,000-customer demo dataset. Warm result caches, a quiet writer and a 20-second run. 4 proxies with 2 cores each on AWS m7g.8xlarge, 32 cores. Full setup and results.

The work behind the report

Keep reports current as your product grows.

New records are only part of the job. Refunds, corrections and deletes need to reach the report too. eddy keeps the results updated as your data and customer traffic grow.

SQL and dbt

Build on the reporting logic you already have.

Define your reporting models in SQL, or start with your existing dbt definitions. Already using Snowflake or Databricks? Start with one customer report. We'll work through its source data and SQL support with you, then compare the results with your current report.

Inside your product

Use the results wherever customers need them.

Your team builds the interface and decides what customers can see and what agents can do. eddy supplies the reporting data.

Your application

Query eddy through Postgres or HTTP. Connect your app.

Your agents

Use the same reporting models through MCP tools. Build customer tools.

Other systems

Push updated results to another database, a Kafka topic or a webhook. See delivery options.

Let's look at your report.

See eddy with a founder and talk through a report that's slow, expensive or out of date. You don't need to connect your data for the demo.

How demos, pilots and pricing work →

We'll email you to find a time.