DataRunner Product

The reporting infrastructure you've been putting off building.

Connect databases, write SQL, schedule delivery, react to changes, monitor endpoints — one workspace, no backend to maintain.

How it works

Three steps. One pipeline. End to end.

The same workflow runs every report, every watch, every campaign — connect, query, deliver. Everything else is configuration.

01
Connect

Bring your database in 60 seconds.

Pick a driver, paste credentials, test the connection. DataRunner encrypts secrets at rest, browses your live schema, and shows latency right in the connection card — no separate tool to manage.

15+ driversSSL & SSH tunnelRead-onlyLive schema
Search…⌘ K
prodJD
Connections
6 connections · 5 healthy

Connections

6

Healthy

5

Avg latency

24ms

All6Latency1Healthy5
PostgreSQL
analytics-prod
db.acme.io
connected
Latency8ms
BigQuery
warehouse-bq
bigquery.io
connected
Latency64ms
MySQL
orders-mysql
orders.local
connected
Latency12ms
PostgreSQL
reporting-replica
replica.acme
connected
Latency11ms
02
Query

Write SQL with the editor you already know.

Monaco-powered workbench with schema-aware autocomplete, multi-tab state that survives refresh, parameter placeholders that carry into schedules, and a preview that runs the actual query.

Monaco editorAutocomplete{{parameters}}Live preview
Search…⌘ K
prodJD
weekly-revenuePostgreSQLanalytics-proddone
weekly-revenue.sql+
SELECT
  date_trunc('week', created_at) AS week,
  COUNT(*)               AS orders,
  SUM(total_cents)/100.0 AS revenue_usd
FROM orders
WHERE status = 'fulfilled'
  AND created_at >= now() - INTERVAL '90 days'
GROUP BY 1 ORDER BY 1 DESC;
12,847 rows · 482mscached 5m
CSVXLSXJSONSQL
weekordersrevenue_usd
2026-05-252,431$184,228.40
2026-05-182,109$162,041.18
2026-05-111,884$148,772.93
2026-04-271,609$124,318.45
03
Deliver

Schedule, watch, monitor, broadcast.

A query plus a cron expression plus a channel becomes a report. A query plus a polling interval becomes a watch. Both write to the same audit log, both retry the same way, both fan out to email, Slack, S3, or webhook in parallel.

Cron schedules60s watches4 channelsAudit log
Search…⌘ K
prodJD
Schedules
9 active · next run in 14 minutes
Hourly2Daily3Weekly2Monthly1Paused1
ReportCronChannelsNext runStatus
Weekly revenue0 9 * * 1Mon 09:00scheduled
Daily ops report0 8 * * *Tomorrow 08:00scheduled
Order anomalies*/15 * * * *in 4 minrunning
Monthly NPS0 9 1 * *Jul 1 09:00scheduled
Hourly inventory0 * * * *in 47 minretry 1/3
Modules

Every module. One workspace. No add-on tax.

Each module owns a clean responsibility. Together they cover the full path from credentials to inbox — query, deliver, monitor, alert, and reach out.

Connections

15+ database connectors

Native drivers per database. SSL, SSH tunnels, health monitoring, schema snapshots, encrypted credentials per workspace.

Workbench

Monaco SQL editor

Multi-tab Monaco editor with schema-aware autocomplete, parameterized queries, live preview, snippet library.

Schedules

Cron schedules

Any expression from */1 to "first Monday at 09:00". CSV, Excel, PDF output. Fan-out to multiple channels per run.

Watches

Event-driven triggers

Poll any SQL condition from 60 seconds. Per-row deduplication. Same delivery shape as scheduled reports.

Monitors

HTTP endpoint checks

GET, HEAD, or POST probes from 30 seconds. Consecutive-failure thresholds. Auto-open and auto-close incidents.

Delivery

4 channels per report

Email, Slack, S3, and webhooks. Parallel fan-out, per-recipient log, retry with exponential backoff.

Audit

Unified history log

Every run from every source in one filterable, exportable log. Append-only, with before/after JSON diffs.

Campaigns

Marketing broadcasts

Draft → scheduled → sending → sent. Broadcast lists deduped at send. Per-recipient delivery receipts.

Dashboards

KPI + charts + tables

Drag-and-drop grid. KPI widgets, line/bar/pie charts, paginated tables. Auto-refresh from 10s to 1h.

Metrics

Semantic layer

One canonical, parameterizable SQL definition per number. Dashboards and the API all read the same source of truth.

Catalog

Tables & lineage

Searchable inventory of every introspected table and column, annotated with descriptions and tags your team owns.

Hosts

Server metrics agent

Lightweight push agent streams CPU, memory, disk and network from Linux and Windows boxes — no inbound ports.

Status pages

Public uptime pages

Shareable status pages assembled from your monitors. Component status and incident history at a clean URL.

Alerting

Routes & on-call

Match alerts to routes, escalate through tiers, page whoever is on call, and silence noise during maintenance windows.

Contacts

Audience & consent

Contacts and broadcast lists with double opt-in, suppression, and one-click unsubscribe enforced at send time.

Sequences

Automated drips

Multi-step email workflows — email, wait, condition, webhook — that advance contacts on signup, tag, or API event.

Forms

Embeddable capture

Drop-in HTML signup forms with Turnstile/hCaptcha that feed submissions straight into a broadcast list.

Architecture

One process. Boring on purpose.

A single .NET service runs the API, the scheduler, the executors, and the delivery workers — no message bus, no separate cron container, no Redis hop on the read path.

Browser

Workbench, dashboards, settings

API server

Auth, queries, schedule registry

Scheduler

Hangfire job queue + cron parser

Connectors

15+ native drivers · pooled · TLS

Delivery

Email · Slack · S3 · Webhook

Audit

Append-only history · JSON diffs

Runtime
.NET 9 · single binary
Database
PostgreSQL 16 (your own)
State
Append-only audit + Hangfire
Deployment
Docker · or self-contained exe
Telemetry
OTLP traces · /metrics endpoint
Updates
Blue/green via reverse proxy
Use cases

Three workflows. One install.

Illustrative scenarios — the same primitives compose into a different shape for every team that touches the database.

RevOps Lead

Finance gets the weekly revenue rollup before Monday standup. Without me touching it.

A SQL query against the orders table, scheduled for Mon 09:00 UTC, delivered as a multi-sheet XLSX to a five-person email list. Failures page the on-call channel; successes update the dashboard on the wall.

SchedulesDeliveryDashboards
Search…⌘ K
prodJD
Schedules
9 active · next run in 14 minutes
Hourly2Daily3Weekly2Monthly1Paused1
ReportCronChannelsNext runStatus
Weekly revenue0 9 * * 1Mon 09:00scheduled
Daily ops report0 8 * * *Tomorrow 08:00scheduled
Order anomalies*/15 * * * *in 4 minrunning
Monthly NPS0 9 1 * *Jul 1 09:00scheduled
Hourly inventory0 * * * *in 47 minretry 1/3
Backend Engineer

When a failed payment lands, the support channel knows about it before the customer does.

A watch on the payments table polls every 60 seconds for new rows where status = failed. Each fire posts a Block Kit message in Slack with the customer email, amount, and a link back to the run. No CDC, no replication slot.

WatchesDeliveryHistory
Search…⌘ K
prodJD
Monitors
8 endpoints · 1 incident open
All8Down1Up7
api.acme.com/health
GET 30s
42msok
app.acme.com/login
GET 60s
187msok
payments.acme.com/charge
POST 60s
241msok
legacy.internal/jobs
HEAD 60s
timeout503
On-call Engineer

The synthetic checks live in the same audit log as the rest of the pipeline. Less to grep.

Eight HTTP monitors against the public API, the login flow, and the payments endpoint. Two consecutive failures opens an incident with the start time, status code, and response body. Auto-closes on the first 200.

MonitorsAuditDelivery
Search…⌘ K
prodJD
Run history
1,284 runs · last 24h
All1,284Schedule847Watch319Manual118
NameTriggerStatusRowsWhen
weekly-revenuescheduleok12,8472 min ago
new-orders.watchwatchok34 min ago
daily-ops.reportscheduleok84714 min ago
order-anomalieswatchempty022 min ago
inventory-hourlyscheduleerror38 min ago
ad-hoc querymanualok1241 hr ago
Integrations

Native drivers. First-class channels.

Connect to your existing stack. No JDBC bridges, no third-party data-shipper, no sidecar.

Sources

15+ databases, same workflow

Pick a driver, paste credentials, test the connection. The query syntax is whatever the source speaks; everything around it — auth, retry, scheduling, delivery — is identical.

PostgreSQL
PostgreSQL
MySQL
MySQL
SQL Server
SQL Server
BigQuery
BigQuery
Snowflake
Snowflake
Redshift
Redshift
ClickHouse
ClickHouse
DuckDB
DuckDB
SQLite
SQLite
Oracle
Oracle
MariaDB
MariaDB
CockroachDB
CockroachDB
Databricks
Databricks
Presto
Presto
Trino
Trino
Destinations

Four channels, parallel fan-out

Every report can deliver to any combination of channels in the same run. Per-recipient log, per-channel retry. One channel failing does not block the others.

Channel

Email

SMTP or transactional API. Attach CSV, Excel, PDF, or embed a summary in the body.

Channel

Slack

Post to any channel or DM. Attach the report as a file or render a Block Kit summary.

Channel

Amazon S3

Drop files into any S3-compatible bucket with templated paths and timestamps.

Channel

Webhook

POST JSON payloads to any HTTP endpoint with custom headers and auth tokens.

Differentiation

What DataRunner is — and what it is not.

An honest matrix. We have a clear opinion about where this tool sits, and where it does not belong.

Capability
this
DataRunner
this tool
Cron + scripts
DIY
BI tools
Metabase, Looker
Uptime tools
Pingdom, BetterStack
Schedule a SQL query against any DB
Deliver formatted reports via email/Slack/S3
React to row-level changes (no CDC)
HTTP endpoint monitoring + incidents
Unified audit log across triggers
Single-binary self-host
Dashboards / BI semantic layer
ETL between warehouses
full partial not the right tool
Teams & access

Built for the whole team — without a six-week rollout.

Owner, Admin, Editor, Viewer roles ship on day one. Custom roles per workspace when that gets crowded. SAML SSO, scoped API keys, and column-level masking for PII.

  • Workspaces isolate connections, schedules, billing, and audit trails
  • Custom roles with a granular permission grid
  • SAML 2.0 SSO with JIT provisioning
  • API keys scoped per workspace, with expiry and one-click revoke
  • Column-level masking redacts PII from previews and exports
Search…⌘ K
prodJD
Acme · workspace
5 members · SAML SSO enforced
Search members…
Sarah Chen
sarah@acme.com
Owner
David Park
david@acme.com
Admin
Anh Nguyen
anh@acme.com
Editor
Maya Rodriguez
maya@acme.com
Editor
Jordan Lee
jordan@acme.com
Viewer
Owner · permissions
Run queries
Edit reports
Edit schedules
Add connections
Invite members
View audit log
Manage billing
Manage API keys

Run the first report before lunch.

Connect a database, write your SQL, set a schedule. No credit card, no infrastructure, no engineering team required.