Quality Alerts
Rules that watch the metrics of every run, and record an alert when one crosses a threshold: row loss, missing values, dropped columns, stage duration and inference drift.
What quality alerts do
A quality alert rule watches one metric of your runs. When a run finishes, AutoData compares the metric at each pipeline stage with the rule's threshold. If the comparison holds, an alert event is recorded against that run. Rules apply to every run on your account: dashboard uploads, API jobs, connector runs, scheduled runs, listeners, triggers, inference and retraining.
Evaluating the rules never affects the run itself. A run that fires an alert still completes and delivers its outputs.
Metrics
| Metric | API name | Measured |
|---|---|---|
| Row Loss % | row_loss_pct | Percentage of the input rows no longer present after the stage. Negative when a stage adds rows, as synthetic generation does. |
| Null % | null_pct | Percentage of cells that are empty after the stage. |
| Columns Dropped | column_drop_count | Input columns minus the columns after the stage. Negative when a stage adds columns, as encoding usually does. |
| Duration (seconds) | duration_seconds | How long the stage took. |
| Drift score | drift_score | Inference and retraining runs only: how far the new data has drifted from the training session. Below 0.10 is stable; above 0.25 is a significant shift. Reported at the stage drift. |
The first four are measured after each of the pipeline stages a run executes: anomaly, dtc, mdh, cds, dsm and dsg.
Creating a rule
On the Quality Alerts tab, choose New Rule:
| Field | Meaning |
|---|---|
| Rule Name | A label, shown on every alert it fires. |
| Metric | One of the metrics above. |
| Op and Threshold | The comparison that fires the rule: >, <, >=, <= or ==, against a number. |
| Stage | Optional. Watch one stage only. Left at Any stage, the rule is checked at every stage and can fire once per stage in the same run. |
| Severity | Warning or Critical, to sort alerts by how urgent they are. |
Rules can be edited, switched off and on with their toggle, and deleted. A disabled rule is not evaluated.
Examples
- Too many rows lost in missing-data handling: Row Loss %,
>20, stage MDH. - Data still has gaps before generation: Null %,
>0, stage DSM. - Scoring data has shifted: Drift score,
>0.25, stage Drift. - A slow run: Duration (seconds),
>600, any stage.
Reading an alert
The Recent alert events list on the same tab shows when each alert fired, its severity, the stage, and a message in this form:
Quality alert: High row loss alert — row_loss_pct > 20.0 (actual: 34.5) at stage 'mdh'
The message gives the rule, the comparison, the value the run actually measured, and the stage. Each event also records the session it belongs to, so you can open that run from the Runs tab and inspect its outputs.
Notifications
Alerts are recorded on the Quality Alerts tab and through the events endpoint. A rule can store webhook_ids (shown as "Dashboard + N webhooks"), but no webhook is called when it fires, and the quality.breach event is not sent. Poll GET /api/v1/quality-alerts/events from your monitoring instead.
Fields
| Key | Default | Meaning |
|---|---|---|
name | required | |
metric | required | row_loss_pct, null_pct, column_drop_count, duration_seconds, drift_score |
operator | required | >, <, >=, <=, == |
threshold | required | A number; percentages are 0 to 100. |
stage | null (any) | anomaly, dtc, mdh, cds, dsm, dsg, drift |
severity | warning | warning or critical |
enabled | true | |
webhook_ids | Stored, not currently used. |
API
| Method | Path | Purpose |
|---|---|---|
| GET | /api/v1/quality-alerts | List your rules |
| POST | /api/v1/quality-alerts | Create a rule |
| PUT | /api/v1/quality-alerts/{rule_id} | Update a rule (any of its fields, including enabled) |
| DELETE | /api/v1/quality-alerts/{rule_id} | Delete a rule |
| GET | /api/v1/quality-alerts/events | The 100 most recent alert events; ?session_id= filters to one run |
POST /api/v1/quality-alerts
{
"name": "Scoring drift",
"metric": "drift_score",
"operator": ">",
"threshold": 0.25,
"stage": "drift",
"severity": "critical"
}
The Python SDK has the same operations: client.list_quality_alerts(), client.create_quality_alert(name, metric, operator, threshold, severity="warning", stage=None), client.update_quality_alert(rule_id, ...), client.delete_quality_alert(rule_id) and client.get_alert_events(session_id=None).