Data & Analytics · Track & Escalate
Bad data caught before it costs you.
Doe runs SQL-based quality checks against your database every 6 hours: sync freshness, row counts, null rates, schema drift. Every check is a readable SQL assertion. Alerts fire with the exact table, column, and threshold that failed.
Works acrossNeon
What you get.
Doe monitors data quality across your Postgres and MySQL databases every 6 hours. Connects to Neon, Supabase, and PlanetScale. Checks sync freshness, row counts, null rates, and schema drift using SQL assertions you can read and edit. Alerts fire with the exact table, column, and threshold that failed, before bad data reaches dashboards or downstream systems.
The revenue dashboard says $0 for yesterday. Nobody noticed until the CEO did.
Your Stripe data syncs to Postgres via Fivetran. PostHog events land on a nightly job. When the pipelines are healthy, everything works. But the Fivetran sync hung at 2 AM because Stripe rate-limited the API. The reporting table is 18 hours stale. The revenue dashboard shows $0 for yesterday. The CEO screenshots it at 9:15 AM.
Last month it was a schema migration. Someone added a nullable column to the customers table. A downstream query that filters on that column started silently excluding every row where the new field was null. The signup funnel showed a 40% drop. Two people spent a full day investigating the "conversion crisis" before someone realized the data was wrong, not the signups. It had been wrong for six days.
What changes.
- 01Detection timingBefore · When someone sees wrong numbers in a dashboardWith Doe · Within hours, before downstream systems consume it
- 02Investigation timeBefore · Half a day figuring out whether the data, the sync, or the query is brokenWith Doe · Alert includes the exact table, column, check SQL, and likely root cause
- 03Pipeline coverageBefore · Fivetran/Airbyte show sync status, but not whether the data is correctWith Doe · Row counts, null rates, and freshness validated at the destination
- 04Schema changesBefore · Break downstream queries silently for daysWith Doe · Detected and flagged before dependent systems are affected
How Doe monitors your data quality
- 01Checks sync freshness, row counts, null rates, and schema driftNeonstripe_subscriptions is 18 hours stale (expected < 2 hours). Null rate on customers.plan_id spiked from 0.1% to 12%. A new nullable column was added to the orders table since the last snapshot
- 02Synthesizes failures into actionable alertsDoeDoe grouped the 3 findings by severity: the stale sync is critical (revenue dashboard affected), the null spike is high (downstream funnel query will under-count), the schema change is informational. Failed SQL assertions included for each
- 03RecurringEvery 6 hoursDoe runs the full suite four times a day across all connected databases. Clean runs are silent. Failures include the check SQL, current value, and threshold so the on-call engineer can reproduce and fix immediately. Alerts posted to #data-quality in Slack.
Up and running in under ten minutes.
- 01Connect your toolsOne-click OAuth for each integration. No API keys, no engineering.
- 02Describe what you need“Monitor the orders, users, and events tables every 6 hours. Flag anything with more than 5% nulls in required columns or row counts that drop more than 20% from the 7-day average.”
- 03It runs on scheduleChecks run every 6 hours and you only hear about it when something breaks.
Before you delegate.
- 01How is this different from Fivetran or Airbyte's built-in monitoring?Sync tools tell you whether the job ran. Doe tells you whether the data is correct at the destination. A Fivetran sync can complete successfully while delivering partial data due to rate limits or schema mismatches. Doe validates actual row counts, null rates, and freshness in your database.
- 02Can I see and edit the quality checks?Every check is a SQL assertion. "SELECT MAX(updated_at) FROM stripe_subscriptions" with a threshold of "< 2 hours ago." You can read, edit, and add your own. Custom assertions work too: "null rate on email < 2%", "today's row count within 5% of yesterday."
- 03Will the quality checks slow down my database?Doe runs lightweight, read-only queries. Freshness checks are single MAX(updated_at) queries, not full table scans. For high-traffic databases, point Doe at a read replica.
- 04Can Doe monitor databases from different providers simultaneously?Yes. Neon (Postgres), PlanetScale (MySQL), and Supabase (Postgres) in the same configuration. You can set independent thresholds and checks for each database.
- 05What happens when a check fails?An alert fires with the check name, the SQL that ran, the current value, the expected threshold, and when the issue likely started. Severity levels control routing: critical freshness failures alert immediately, minor issues accumulate for daily review.