Row Monitor

For small data teams

All green.
Numbers wrong.

Pipelines succeed while row counts collapse, columns disappear, and freshness slips. Row Monitor baselines the tables you name and tells you, in plain English, what drifted.

Connects
Postgres, read-only
Catches
Schema, volume, lag
Hands you
A dbt test
public.ordersAnomaly

Pipeline succeeded. The table did not.

Row count
6,920
Baseline
18,420
Schema
coupon_code removed
updated_at
3 days behind

Why

The load still finishes, but orders is about a third of its baseline and the coupon column is gone. A filter in the model, or an upstream delete, does this without failing the job.

dbt_expectations.expect_table_row_count_to_be_between

What it watches

The failure mode your orchestrator will not page.

dbt and Airflow tell you a task failed. They stay quiet when the task succeeds and the table is wrong. Row Monitor is the second opinion on the rows themselves.

A baseline, not a vibe

The first clean check stores columns, types, row count, and the newest timestamp. Later checks compare against that snapshot until you accept a new one.

Drift that jobs ignore

Added, removed, and retyped columns. Volume spikes and drops past a threshold. Freshness lag when updated_at stops moving.

English, then YAML

Claude writes a plain-language cause from the diff. You also get a schema.yml snippet — a row-count band, a recency test, or the columns the baseline still expects.

Slack and email

Each workspace keeps one Slack incoming webhook and an alert address. No Resend key in dev? The message is printed and recorded as a console delivery.

Read-only on purpose

Postgres passwords are encrypted at rest. The role you create gets SELECT. Row Monitor never writes to the warehouse and never opens a pull request.

A demo warehouse

No credentials yet? Load Northwind, a fixture that can break on command: missing coupon column, a 62% row drop, and a timestamp three days stale.

How a check works

  1. 01

    Connect

    Add a Postgres read-only role, or load the demo warehouse. Passwords are encrypted with APP_ENCRYPTION_KEY.

  2. 02

    Baseline

    Pick tables. The first check stores schema, count, and freshness. Nothing alerts until there is something to compare.

  3. 03

    Explain

    A later check that drifts opens an anomaly, pages Slack or email, and suggests a schema.yml test you can paste.

Three tables free. The rest is a subscription stub.

Free stops at 3 monitors. Pro is $39 and Team is $99. Checkout runs when Stripe keys exist; without them you can preview a plan so the product is not blocked.

Free

$0 / mo

A side project or a first warehouse

  • 3 tables
  • Schema, volume, and freshness checks
  • Email and Slack alerts
  • Plain-English explanation and a dbt snippet
Start free

Pro

$39 / mo

The analytics team that feels every silent break

  • 50 tables
  • Everything in Free
  • Stripe subscription when keys are set
  • Enough coverage for a core mart
Choose Pro

Team

$99 / mo

More than one person on call for the warehouse

  • 500 tables
  • Everything in Pro
  • Owner and member roles on the workspace
  • Room for staging plus marts
Choose Team