01 · Project overview

Loaded — live operations
Projects acme-supply-chain
Acme Supply Chain
Production
DH
MK
JS
+4
Live ingest · records/s last 15m
Kfkalshi_ws 3,412/s
BQkalshi_markets 1,240/s
Pgorders_pg 214/s
S3news_wire 86/s
View all 14 connectors →
RelQL queries
128 queries/s
p50 41ms p95 187ms
How fast predictions come back.
Inference pipelines
6 active
oil_impact_stream→ kafka
reorder_forecast→ table
Predictions writing continuously.
Model serving
Healthy
rtj-oil-ft fp16 38ms p50
2 checkpoints serving · RelativeDB Cloud
IngestionHealthy Query engineHealthy PipelinesHealthy Model servingHealthy StorageHealthy Full observability →
Recent activity
Run finetune_oil_impact completed · AUROC 0.874run
12m ago
Alert oil_impact_1sigma fired · published kafka://oil-alertsalert
26m ago
Dataset oil_impact_scores grew +48,120 rowsdataset
1h ago
📥kalshi_ws backfill window closed · 2.1M recordsingestion
2h ago
ƒDerived headline_embeddings rebuiltderived
4h ago
View all activity →
💬
The overview is an operations dash, not an inventory: what is flowing right now, how fast queries answer, what changed last. Every activity row ends in a → jump to its object.
Loading skeleton
Projects acme-supply-chain
Acme Supply Chain
Production
Live ingest · records/s
RelQL queries
Inference pipelines
Model serving
IngestionChecking… Query engineChecking… PipelinesChecking… Model servingChecking… StorageChecking…
Recent activity
💬
Rates, sparklines, health words, and the feed are the async regions; chrome and card labels render immediately.
Degraded — news_wire Failed, QPS dips degraded
Projects acme-supply-chain
Acme Supply Chain
Production
Live ingest · records/s last 15m
Kfkalshi_ws 3,398/s
BQkalshi_markets 1,238/s
Pgorders_pg 214/s
S3news_wireFailed 0/s
View all 14 connectors →
RelQL queries
96 queries/s
p50 44ms p95 412ms
Dip follows the news_wire stop at 13:41.
Inference pipelines
6 active
oil_impact_streamLagging
reorder_forecastHealthy
oil_impact_stream waits on headlines.
Model serving
Healthy
rtj-oil-ft fp16 39ms p50
2 checkpoints serving · RelativeDB Cloud
IngestionFailed Query engineHealthy PipelinesLagging Model servingHealthy StorageHealthy Full observability →
💬
One connector failing shows its blast radius on one screen: rate flatlines to 0/s, QPS sparkline dips, the dependent pipeline goes Lagging, and the health band names the subsystem. Color stays on state only.
Helper panel open — nav help state
Projects acme-supply-chain
Acme Supply Chain
Production
Live ingest · records/s last 15m
Kfkalshi_ws 3,398/s
BQkalshi_markets 1,238/s
Pgorders_pg 214/s
S3news_wireFailed 0/s
View all 14 connectors →
RelQL queries
96 queries/s
p50 44ms p95 412ms
Inference pipelines
6 active
Model serving
Healthy
rtj-oil-ft fp16
IngestionFailed QueriesHealthy PipelinesLagging ModelsHealthy StorageHealthy
Studio helper
where do I see why ingestion dropped?
Rates over time live in Observability ▸ Ingestion. The drop traces to news_wire — Failed since 13:41 (S3 credentials rejected). Open the connector →
Continue in workspace →
💬
The FAB opens the same chat + history as the workspace; here it navigates rather than analyzes, and hands off with "Continue in workspace →".
Tablet · 834px responsive
Projects acme-supply-chain
Acme Supply Chain
Production
Live ingest · records/s last 15m
Kfkalshi_ws3,412/s
BQkalshi_markets1,240/s
Pgorders_pg214/s
S3news_wire86/s
View all 14 connectors →
RelQL queries
128q/s
p50 41msp95 187ms
Inference pipelines
6active
2 streaming → kafka
Model serving
Healthy
rtj-oil-ft fp16
IngestionHealthy QueriesHealthy PipelinesHealthy ModelsHealthy StorageHealthy
Recent activity
▶ Run finetune_oil_impact completed12m
⚠ Alert oil_impact_1sigma fired26m
▤ Dataset oil_impact_scores +48,120 rows1h
📥 kalshi_ws backfill window closed2h
View all activity →
💬
Mobile · 390px responsive
acme-supply-chain
Acme Supply Chain
Prod
Live ingest · records/s
Kfkalshi_ws3,412/s
BQkalshi_markets1,240/s
Pgorders_pg214/s
View all 14 connectors →
Queries
128 q/s
p50 41ms · p95 187ms
Pipelines
6 active
Healthy
IngestHealthy ModelsHealthy StorageHealthy
Recent activity
finetune_oil_impact completed
AUROC 0.874 · 12m ago
oil_impact_1sigma fired
kafka://oil-alerts · 26m ago
oil_impact_scores +48,120 rows
1h ago
View all activity →
💬
Home
Sources
Graph
💬Chat
Runs

02 · Sources

Loaded — top instances
acme-supply-chain Sources
Sources
Connector instances feeding this project — a type can have many instances.
InstanceTypeSharingRateHealth
kalshi_ws KfKafka All projects 3,412/s Healthy
orders_pg PgPostgres This project 214/s Healthy
news_s3 S3S3 All projects 86/s Healthy
market_bq BQBigQuery This project 58/s Lagging
filings_watch LoLocal files This project 4/s Healthy
Sorted by records/s · shared connectors are marked "All projects".
💬
Instances, not types: three BigQuery connections are three rows. The table stays bounded to the five busiest; the catalog of connector types lives behind "+ New connector".
Catalog open — connector types state
acme-supply-chain Sources
Sources
New connector
Pick a type — you can run as many instances of each as you need.
PgPostgres3 instances
MyMySQL0 instances
BQBigQuery3 instances
SfSnowflake0 instances
S3S32 instances
GCGCS0 instances
FTSFTP0 instances
LoLocal files1 instance
ESElasticsearch1 instance
SlSlack1 instance
PXPMXT0 instances
KfKafka1 instance
KgKaggle1 instanceImport datasets
{}Custom REST/Python1 instance
14 types · 14 running instances across this org
💬
The full type catalog is an overlay, not the page: monogram tiles carry per-type instance counts. Kaggle is highlighted mid-selection and hints that imports land as ready-to-use datasets.
Row expanded — sharing controls state
acme-supply-chain Sources
Sources
InstanceTypeSharingRateHealth
kalshi_ws KfKafka All projects 3,412/s Healthy
Available to all projects
Other projects mount this connector read-only. Credentials stay here.
Used by: oil-desk · retail-forecast · this project
Copies host, topic, and sync settings into a fresh instance you own.
orders_pg PgPostgres This project 214/s Healthy
news_s3 S3S3 All projects 86/s Healthy
💬
Sharing expands inline: the toggle names its consequence in plain verbs, the clone action makes "many instances of one type" a one-click path.
Loading skeleton
acme-supply-chain Sources
Sources
InstanceTypeSharingRateHealth
💬
Five skeleton rows match the bounded table; filters and the New connector action render immediately.
Tablet · 834px responsive
acme-supply-chain Sources
Sources
InstanceRateHealth
Kfkalshi_wsAll projects3,412/sHealthy
Pgorders_pg214/sHealthy
S3news_s3All projects86/sHealthy
BQmarket_bq58/sLagging
Lofilings_watch4/sHealthy
💬
Mobile · 390px responsive
acme-supply-chain Sources
Sources
Kfkalshi_ws
HealthyAll projects 3,412/s
Pgorders_pg
Healthy 214/s
S3news_s3
HealthyAll projects 86/s
BQmarket_bq
Lagging 58/s
💬
Home
Sources
Graph
💬Chat
Runs

03 · Connector setup

Postgres — full form, in page
acme-supply-chain Sources
Sources
Sources New connector Postgres
Pg
Postgres
Full refresh Incremental · cursor CDC · logical replication
CDC streams inserts, updates, and deletes as they commit — best for live rates.
💬
Setup is a centered drawer over Sources — shown here in the 1280px page frame. The artboards below crop to the drawer itself, one per connector type. Every form ends the same way: Test connection, Create connector, and the org-wide share checkbox. No skeleton state: the form has no async region.
BigQuery connector type
Sources New connector BigQuery
BQ
BigQuery
Drop the JSON key file here, or browse
service-account.json · needs bigquery.dataViewer
New rows are pulled by watermark on this column.
S3 connector type
Sources New connector S3
S3
S3
IAM role ARN Access keys
Ingest new objects as they land
Kaggle — dataset import connector type
Sources New connector Kaggle
Kg
Kaggle
Import datasets
Paste a dataset URL or slug — competitions work too.
From kaggle.com ▸ Account ▸ Create API token.
Manual Daily
Kafka connector type
Sources New connector Kafka
Kf
Kafka
earliest latest
Slack connector type
Sources New connector Slack
Sl
Slack
Authorizedacme-hq.slack.com
#trading ✕ #ops-alerts ✕ #supplier-updates ✕ Add channel…
Messages become timestamped rows — anchor-time rules apply like any other table.
Elasticsearch connector type
Sources New connector Elasticsearch
ES
Elasticsearch
Local watched folder connector type
Sources New connector Local files
Lo
Local watched folder
Watch subfolders too
Infer column names and types from the first files
You can correct inferred types in the dataset view before anything trains on them.
Custom REST/Python connector type
Sources New connector Custom REST/Python
{}
Custom REST/Python
A Python script path or a REST URL to poll.
# scripts implement three calls:
discover() # → tables + columns
read(cursor) # → rows since cursor
checkpoint() # → durable cursor
The contract is the documentation: three mono function names, shown where the script path is typed.
Test connection — success state
Sources New connector Postgres
Pg
Postgres
HealthyConnection succeeded
connected to db.internal.acme.com:5432 in 84ms
found 12 tables · logical replication available · slot relql_orders_slot free
Everything checks out. Create the connector to start the first sync.
Test connection — failed error
Sources New connector Postgres
Pg
Postgres
Check this user exists and allows password auth.
Failure quotes the driver error in mono, marks only the fields to fix, and disables Create until a test passes.
Tablet · 834px — Kaggle responsive
Sources New connector Kaggle
Kg
Kaggle
ManualDaily
💬
Mobile · 390px — Kaggle responsive
Sources New Kaggle
Kg
Kaggle
ManualDaily
💬
Home
Sources
Graph
💬Chat
Runs

04 · Observability

Loaded — Ingestion tab
Acme Supply ChainObservability
Observability
Ingestion
Queries
Pipelines
Models
Infrastructure
Total ingest · records/s (24h)
peak 6,480/s · now 5,206/s
2026-07-27 14:00
02:00
now
14:02
ConnectorRate24h volumeLagHealth
Kfkalshi_ws3,412/s281.4M0.3sHealthy
BQkalshi_markets1,240/s102.9M4.1sHealthy
Pgorders_pg214/s17.8M0.9sHealthy
S3news_s386/s7.2M12sHealthy
BQmarket_bq58/s4.9M38mLagging
View all 14 connectors →
💬
One page, five lenses: ingestion, queries, pipelines, models, infrastructure. The area chart rides the shared violet time spine; the table stays bounded to the five busiest connectors.
Queries tab — QPS, latency, slow queries state
Acme Supply ChainObservability
Observability
Ingestion
Queries
Pipelines
Models
Infrastructure
RelQL queries/s
128
peak 312/s at 09:30
Latency · how long a prediction takes to answer
p50 41ms p95 187ms p99 640ms
Half answer under 41ms; the slowest 1% take up to 640ms.
Errors (24h)
7
0.002% of 3.1M queries
Slowest queries (24h) by p95
QueryTaskCallsp95
PREDICT SUM(transactions.price) OVER (90 DAYS FOLLOWING) FROM customers…ltv_90d41,2081.84s
PREDICT ARRAY_AGG(transactions.article_id) OVER (30 DAYS FOLLOWING RANK TOP 12)…reorder_rank18,4411.12s
PREDICT SUM(sales.qty) OVER (7 DAYS FOLLOWING HORIZONS 4) FROM storesstore_forecast9,006870ms
PREDICT NOT EXISTS(orders.*) FROM customers WHERE c.plan = 'basic' AS OF :anchor…churn_basic204,112412ms
PREDICT oil_impact_score FROM headlines AS OF :t RETURN EXPECTED VALUEoil_impact96,733388ms
View all queries →
💬
Slow-query rows show the real first line of RelQL in mono with syntax color; each jumps to the workbench with the query loaded.
Pipelines tab — streaming inference state
Acme Supply ChainObservability
Observability
Ingestion
Queries
Pipelines
Models
Infrastructure
Streaming inference pipelines score new rows continuously and can fire triggers into Kafka or pub/sub.
PipelineSource → targetThroughputLagTrigger fires (24h)Health
oil_impact_streamnews_s3 → oil_impact_scores86/s1.2s14Healthy
kalshi_edge_streamkalshi_ws → market_edges3,412/s0.4s212Healthy
reorder_forecastorders_pg → reorder_predictions214/s0.9s3Healthy
churn_daily_scorecustomers → churn_scores12/s6.0s0Healthy
filing_risk_streamfilings_watch → filing_risk4/s51s1Lagging
View all 8 pipelines →
Trigger fires count conditions met, e.g. prediction moves > 1σ → publish to kafka://oil-alerts.
💬
Models tab — serving checkpoints state
Acme Supply ChainObservability
Observability
Ingestion
Queries
Pipelines
Models
Infrastructure
CheckpointPrecisionTokens/sServing p50WhereHealth
rtj-oil-ftfp1618,40038msRelativeDB CloudHealthy
rtj-oil-ftint831,20022msEKS us-east-1Healthy
rt-j-referencefp1616,90044mson-prem k8sHealthy
churn-head-v3int829,80019msGKE europe-west4Healthy
forecast-head-v1fp1617,30041msRelativeDB CloudLagging
View all 7 checkpoints →
Lower precision serves faster and smaller; int8 trades a little accuracy for roughly half the latency. Placement chips match the Compute page.
💬
Degraded — news_s3 stopped degraded
Acme Supply ChainObservability
Observability
Ingestion
Queries
Pipelines
Models
Infrastructure
Total ingest · records/s (24h)
now 5,104/s
2026-07-27 14:00
13:41 · stop
now
ConnectorRate24h volumeLagHealth
Kfkalshi_ws3,398/s281.1M0.3sHealthy
BQkalshi_markets1,238/s102.7M4.0sHealthy
Pgorders_pg214/s17.8M0.9sHealthy
S3news_s30/s6.9M21mFailed
BQmarket_bq58/s4.9M38mLagging
View all 14 connectors →
💬
The stop is one critical dot on the chart at 13:41 and one critical-edged row — the failure reads on the spine and in the table without recoloring anything else.
Loading skeleton
Acme Supply ChainObservability
Observability
Ingestion
Queries
Pipelines
Models
Infrastructure
Total ingest · records/s (24h)
now
ConnectorRate24h volumeLagHealth
💬
The spine axis and "now" caret draw immediately; the chart body and rate cells shimmer until metrics stream in.
Tablet · 834px responsive
Acme Supply ChainObservability
Observability
Ingestion
Queries
Pipelines
Models
Infra
Total ingest · records/s (24h)
-24h
now
ConnectorRateHealth
Kfkalshi_ws3,412/sHealthy
BQkalshi_markets1,240/sHealthy
Pgorders_pg214/sHealthy
S3news_s386/sHealthy
BQmarket_bq58/sLagging
View all 14 connectors →
💬
Mobile · 390px responsive
acme-supply-chain
Observability
Ingestion
Queries
Pipelines
Models
Total ingest (24h)
now
Kfkalshi_ws3,412/s
Healthy
BQkalshi_markets1,240/s
Healthy
BQmarket_bq58/s
Lagging
💬
Home
Sources
Graph
💬Chat
Runs

05 · Context graph

Loaded — graph canvas helper panel open
🗄
ƒ
Oil desk Context graph
Context graph
1:N
1:N
1:1
N:1
PGcustomers12.4K
customer_id PKint
emailvarchar
planvarchar
◈ signup_attimestamptz
+6 more
PGorders48.1K
order_id PKint
customer_id FKint
◈ placed_attimestamptz
total_usdnumeric
+8 more
PGtransactions512K
txn_id PKbigint
order_id FKint
pricenumeric
◈ settled_attimestamptz
+5 more
RDBcustomers_dedup11.9K
entity_id PKint
customer_id FKint
match_scorenumeric
derived view · +2 more
BQmarket_history41.2M
bar_id PKint64
symbolstring
closefloat64
◈ bar_tstimestamp
+5 more
KFkalshi_ticks
9 cols · ◈1 · 128M rows
KFnews_wire
6 cols · ◈1 · streaming
S3news_archive
7 cols · ◈1 · 3.4M rows
⋯ 4 more tables → ⋯ 7 more below ↓
Showing 8 of 63 tables · pan to explore
map
Chat helper
Where do the Kalshi ticks join in?
kalshi_ticks joins market_history on symbol — I centered that edge for you. It also feeds one derived edge into news_wire.
Continue in workspace →
💬
No full-canvas skeleton: the graph hydrates node-by-node from cached schema metadata, so nodes appear progressively on an already-rendered canvas instead of behind a shimmer.
Node selected — relationship stats panel state
🗄
ƒ
Oil desk Context graph
Context graph
1:N · 0.83
1:N · 0.97
PGcustomers12.4K
customer_id PKint
emailvarchar
◈ signup_attimestamptz
+7 more
PGorders48.1K
order_id PKint
customer_id FKint
◈ placed_attimestamptz
total_usdnumeric
+8 more
PGtransactions512K
txn_id PKbigint
order_id FKint
◈ settled_attimestamptz
+6 more
RDBcustomers_dedup11.9K
entity_id PKint
derived view · +4 more
BQmarket_history41.2M
symbolstring
◈ bar_tstimestamp
+7 more
⋯ 4 more tables →
Showing 5 of 63 tables
PGorders
raw · oildesk_pg · orders
Rows48,102
Last sync2m ago
HealthHealthy
Temporal◈ placed_at
Edge — customers → orders
Selectivity0.83
share of customers with at least one order
Avg fan-out4.7
orders per customer, mean
Orphaned FK0.2%
orders whose customer_id matches no customer
Edge — orders → transactions
selectivity 0.97 · fan-out 10.6
orphaned FK 0.0%
💬
Edge statistics render on hover as the inverted pill on the edge itself; selecting either endpoint pins the full stats into the panel.
Add edge — derived-edge drawer RelQL / process source
🗄
ƒ
Oil desk Context graph
Context graph
new edge — draft
PGcustomers12.4K
customer_id PKint
emailvarchar
+8 more
RDBcustomers_dedup11.9K
entity_id PKint
emailvarchar
derived view · +3 more
PGtransactions512K
txn_id PKbigint
billing_emailvarchar
◈ settled_attimestamptz
+6 more
⋯ 5 more tables →
New derived edge
edge_dedup_txn.rqlvalid
1
2
3
4
5
-- link deduped customers to card txns SELECT c.entity_id, t.txn_id FROM customers_dedup c JOIN transactions t ON LOWER(c.email) = LOWER(t.billing_email)
💬
The two endpoint nodes stay highlighted while the drawer is open; the dashed blue edge is the draft. Choosing "Process — Entity resolution" swaps the editor for the matcher's column-pair picker.
Ablations — in-context toggles reversible
🗄
ƒ
Oil desk Context graph
Context graph
PGcustomers12.4K
customer_id PKint
+9 more
PGorders48.1K
order_id PKint
+11 more
PGtransactions512K
txn_id PKbigint
pricenumeric
feenumeric
◈ settled_attimestamptz
+5 more
BQmarket_history41.2M
◈ bar_tstimestamp
+8 more
S3news_archive
7 cols · 3.4M rows
↺ Unablate
⋯ 4 more tables →
2 ablations active
Context ablations
Toggled-off tables and columns are dropped from every scored context. Reversible any time.
Tables
PGcustomersIn context
PGordersIn context
PGtransactionsIn context
BQmarket_historyIn context
S3news_archiveAblated
View all 63 tables →
Columns — transactions
priceIn context
feeAblated
venueIn context
View all 9 columns →
💬
Ablated nodes stay on the canvas at 45% with a dashed border and an inline "↺ Unablate" affordance — removal from context is never removal from the map.
EXPLAIN ABLATE — running ~30s progress
🗄
ƒ
Oil desk Context graph
Context graph
PGcustomers
10 cols · 12.4K rows
PGorders
12 cols · 48.1K rows
PGtransactions
9 cols · 512K rows
BQmarket_history
9 cols · 41.2M rows
S3news_archive
7 cols · 3.4M rows
EXPLAIN ABLATE — quiet_customers_90d
Scoring the query once per candidate ablation, then ranking by how far predictions move.
1
2
3
EXPLAIN ABLATE PREDICT NOT EXISTS(orders.*) FROM customers AS OF :anchor RETURN PROBABILITY
Re-scoring 14 candidates · ~30s 6 of 14 · elapsed 00:12
💬
This is the async region: a determinate progress card (candidates scored + elapsed time), not a skeleton — the canvas underneath stays visible and dimmed.
EXPLAIN ABLATE — results relevance tint + ranked list
🗄
ƒ
Oil desk Context graph
Context graph
PGcustomersΔ .019
entity table — always kept
PGordersΔ .028
12 cols · 48.1K rows
PGtransactionsΔ .041
priceΔ .041
venueΔ .006
+7 more
BQmarket_historyΔ .062
largest movement — load-bearing
S3news_archiveΔ .003
near-zero — safe to ablate
⋯ 4 more scored →
Run finished 00:29 · 14 candidates
Ablation ranking
Δ = mean shift in predicted probability when the candidate is dropped from context.
Load-bearing ↑
BQmarket_historyΔ 0.062
PGtransactions.priceΔ 0.041
PGordersΔ 0.028
KFkalshi_ticksΔ 0.017
Safe to ablate ↓
PGtransactions.venueΔ 0.006
KFnews_wireΔ 0.004
S3news_archiveΔ 0.003
PGcustomers.planΔ 0.001
View all 14 candidates →
💬
Relevance tint uses the signal-blue ramp only (never green/amber/red — those stay reserved for health). Darker fill = larger movement = load-bearing.
Path view — traversal highlighted customers → orders → transactions
🗄
ƒ
Oil desk Context graph
Context graph
Path · customers → orders → transactions 2 hops · the join route a context walk takes from the entity table
1
2
PGcustomersstart
customer_id PKint
+9 more
PGorders
customer_id FKint
order_id PKint
+10 more
PGtransactionsend
order_id FKint
pricenumeric
+7 more
RDBcustomers_dedup
5 cols · 11.9K rows
BQmarket_history
9 cols · 41.2M rows
KFkalshi_ticks
9 cols · 128M rows
⋯ 5 more tables →
Hop 1: customer_id · Hop 2: order_id
💬
Tablet · 834px responsive
🗄
ƒ
Oil desk Context graph
Context graph
PGcustomers12.4K
customer_id PKint
◈ signup_attimestamptz
+8 more
PGorders48.1K
customer_id FKint
◈ placed_attimestamptz
+10 more
PGtransactions512K
order_id FKint
+8 more
RDBcustomers_dedup
5 cols · 11.9K rows
⋯ 4 more → ⋯ 3 more →
4 of 63 tables
💬
Mobile · 390px responsive
Oil desk Context graph
Context graph
PGcustomers
10 cols · 12.4K rows · ◈ signup_at
PGorders
12 cols · 48.1K rows · ◈ placed_at
PGtransactions
9 cols · 512K rows · ◈ settled_at
BQmarket_history
9 cols · 41.2M rows · ◈ bar_ts
KFkalshi_ticks
9 cols · 128M rows · streaming
S3news_archive
7 cols · 3.4M rows · ◈ published_at
Home
🗄Sources
Graph
💬Chat
Runs
💬

06 · Dataset detail

Loaded — Columns tab
🗄
ƒ
Oil desk Datasets orders
orders
PGraw · oildesk_pg · orders
⬒ 48.1K rows Healthy· synced 1m ago
Overview
Columns
Profile
Lineage
Preview
Stats
Source PG oildesk_pg.orders · "In context" controls whether a column is offered to prediction contexts (mirrors the graph's ablations).
ColumnTypeNull %DistinctMinMaxSampleIn context
order_id PKint0%48.1K100001148102121483On
customer_id FKint0%10.3K1124038821On
◈ placed_attimestamptz0%48.1K2024-01-02 00:142026-07-28 13:592026-07-11 08:42On
statusvarchar0%6cancelledshippedfulfilledOn
total_usdnumeric(12,2)0%41.9K0.00184920.00184.99On
discountnumeric(12,2)61.2%1.1K0.00500.0015.00Off
currencyvarchar(3)0%4CADUSDUSDOn
◈ updated_attimestamptz0.1%48.0K2024-01-02 00:142026-07-28 14:022026-07-28 09:14On
channelvarchar2.4%5appwebwebOff
quantity_bblnumeric(10,2)0%2.8K1.0050000.00250.00On
unit_price_usdnumeric(8,2)0%9.4K41.20128.7578.14On
regionvarchar0.8%11gulf_coastwest_txgulf_coastOn
Showing 12 of 38 columns · 2 ablated
💬
Profile tab
🗄
ƒ
Oil desk Datasets orders
orders
PGraw · oildesk_pg · orders
⬒ 48.1K rows Healthy· synced 1m ago
Overview
Columns
Profile
Lineage
Preview
Stats
Temporal coverage — ◈ placed_at profiled 2026-07-28 09:41
2024-01
2024-09
2025-05
2026-01
48.1K rows
cutoff
now
status — distribution
fulfilled
48%
shipped
25%
pending
16%
cancelled
8%
other
3%
total_usd — histogram
0.00184,920.00
discount — null trend
61.2%
null rate, stable ±0.4% over 30 days
💬
Preview tab — mono data grid
🗄
ƒ
Oil desk Datasets orders
orders
PGraw · oildesk_pg · orders
⬒ 48.1K rows Healthy· synced 1m ago
Overview
Columns
Profile
Lineage
Preview
Stats
Preview reads directly from the source. 8 of 38 columns, first 8 of 100 sampled rows, sampled 2m ago.
order_idcustomer_id◈ placed_atstatustotal_usdquantity_bblcurrencyregion
14810288212026-07-28 13:59:41+00pending19,535.00250.00USDgulf_coast
148101104772026-07-28 13:58:02+00pending4,092.0052.40USDwest_tx
1481009022026-07-28 13:57:44+00fulfilled31,200.00400.00EURrotterdam
14809972042026-07-28 13:55:19+00shipped8,820.00112.90USDgulf_coast
14809855112026-07-28 13:54:03+00fulfilled120,499.001,540.00USDcushing
14809730872026-07-28 13:52:51+00cancelled5,400.0070.00CADalberta
14809661042026-07-28 13:51:12+00fulfilled24,075.00308.50USDgulf_coast
14809588212026-07-28 13:50:58+00fulfilled1,899.0024.30USDgulf_coast
View all 100 sampled rows → Showing 8 of 100 sampled rows · 8 of 38 columns
💬
Create view — view-builder drawer lands in graph as RDB
🗄
ƒ
Oil desk Datasets orders
orders
PGraw · oildesk_pg · orders
⬒ 48.1K rows
Overview
Columns
Profile
Lineage
Preview
Stats
ColumnTypeNull %Sample
order_id PKint0%121483
customer_id FKint0%8821
◈ placed_attimestamptz0%2026-07-11 08:42
total_usdnumeric(12,2)0%184.99
Create view over orders
orders_daily_latest.sqlvalid
1
2
3
4
5
-- one row per customer per day; latest order wins SELECT DISTINCT ON (customer_id, placed_at::date) customer_id, order_id, placed_at, total_usd FROM orders ORDER BY customer_id, placed_at::date, placed_at DESC
Preview31,204 rows · 4 columns · ◈ placed_at kept
💬
Entity-resolution style dedup views (e.g. customers_dedup) are built the same way; the drawer's editor accepts any SQL/RelQL SELECT over this source.
Loading skeleton
🗄
ƒ
Oil desk Datasets orders
orders
PGraw · oildesk_pg · orders
Overview
Columns
Profile
Lineage
Preview
Stats
ColumnTypeNull %DistinctMinMaxSampleIn context
💬
Identity band renders immediately from metadata (name, provenance chip, primary actions); async pills and the column statistics shimmer.
Edge case long column name + sample value
🗄
ƒ
Oil desk Datasets news_archive
news_archive
S3raw · oildesk-news-bucket · news_archive
⬒ 3.4M rows Lagging· last sync 6h ago
Overview
Columns
Profile
Lineage
Preview
Stats
ColumnTypeNull %DistinctMinMaxSampleIn context
normalized_entity_resolution_ticker_symbol_mapping_confidence float12.4%8.9K 0.0021 0.9998 0.9231 On
article_id PKuuid0%3.4M0001f8a2-04c1-…ffff03d9-6e22-…7f9c2b14-88ad-4c11-9b0e-52a…On
◈ published_attimestamptz0%3.4M2024-03-01 00:002026-07-28 08:032026-07-28 08:03:11+00On
source_urltext0.2%1.2Mhttps://feeds.e…https://wire.re…https://wire.reuters.example/markets/c…Off
Showing 4 of 7 columns · 1 ablated
💬
Sample values truncate at 24 characters with the full value on hover; long column names ellipsize inside a fixed name column. Nothing wraps — row height stays 36px.
Degraded — stale profile
🗄
ƒ
Oil desk Datasets orders
orders
PGraw · oildesk_pg · orders
⬒ 48.1K rows Healthy· synced 1m ago
Overview
Columns
Profile
Lineage
Preview
Stats
Temporal coverage — ◈ placed_at profiled 2026-07-19 06:12
2024-01
2024-11
2025-09
47.3K rows at profile time
now
status — distribution
fulfilled
47%
shipped
26%
pending
17%
cancelled
10%
total_usd — histogram
0.00181,204.00
💬
Tablet · 834px responsive
🗄
ƒ
Oil desk Datasets orders
orders
PGraw · oildesk_pg · orders
Healthy
Overview
Columns
Profile
Preview
ColumnTypeNull %In context
order_id PKint0%On
customer_id FKint0%On
◈ placed_attimestamptz0%On
statusvarchar0%On
total_usdnumeric(12,2)0%On
discountnumeric(12,2)61.2%Off
quantity_bblnumeric(10,2)0%On
unit_price_usdnumeric(8,2)0%On
Showing 8 of 38 columns
💬
Mobile · 390px responsive
Oil desk orders
orders
PGoildesk_pg · 48.1K rows
Healthy
Columns
Profile
Preview
order_id PKOn
int · 0% null · 48.1K distinct
customer_id FKOn
int · 0% null · 10.3K distinct
◈ placed_atOn
timestamptz · 0% null · temporal column
total_usdOn
numeric(12,2) · 0% null · max 184,920.00
discountOff
numeric(12,2) · 61.2% null · ablated
Home
🗄Sources
Graph
💬Chat
Runs
💬

07 · Relation studio

Loaded — worksheet open
🗄
ƒ
Riverbend Trading Relation studio customer_spend_90d
Relation studio
worksheet · unsaved changes
Worksheets12
customer_spend_90dRDB
oil_featuresRDB
customer_churn_scoreRDB
dedup_customersRDB
news_sentiment_dailyRDB
View all 12 →
customer_spend_90d.relqlValidRelQL
1
2
3
4
-- expected 90-day spend per customer PREDICT SUM(transactions.price) OVER (90 DAYS FOLLOWING) FROM customers WHERE customers.plan = 'basic' AS OF :anchor RETURN EXPECTED VALUE
Anchor time AS OF :anchor = 2026-06-01
2025-09
2025-12
2026-03
2026-06
◂ drag ▸
now
Context is cut at the anchor; the query scores what happens in the 90 days after it.
last run 0.9s · 2026-07-28 09:38
Results Expected spend over the next 90 days, one row per basic-plan customer.
customer_idplanexpected_spend_90d
1042basic241.80
1047basic198.32
1063basic176.05
1071basic154.99
1088basic122.47
1094basic96.10
1102basic88.63
1115basic71.24
View all 1,204 rows → 1,204 customers scored · 0.9s
💬
No skeleton on load: worksheets and the last saved result set come from local cache and render synchronously. Only a fresh Run is async (see running state).
Error — unknown table diagnostic typo
🗄
ƒ
Riverbend Trading Relation studio customer_spend_90d
Relation studio
Worksheets12
customer_spend_90dRDB
oil_featuresRDB
customer_churn_scoreRDB
View all 12 →
customer_spend_90d.relql1 error
1
2
3
4
-- expected 90-day spend per customer PREDICT SUM(transactons.price) OVER (90 DAYS FOLLOWING) FROM customers WHERE customers.plan = 'basic' AS OF :anchor RETURN EXPECTED VALUE
fix the error to run
Resultsstale · from last valid run 09:38
customer_idplanexpected_spend_90d
1042basic241.80
1047basic198.32
1063basic176.05
View all 1,204 rows →
💬
Running — scoring in progress skeleton
🗄
ƒ
Riverbend Trading Relation studio customer_spend_90d
Relation studio
Worksheets12
customer_spend_90dRDB
oil_featuresRDB
customer_churn_scoreRDB
View all 12 →
customer_spend_90d.relqlRunning
1
2
3
4
-- expected 90-day spend per customer PREDICT SUM(transactions.price) OVER (90 DAYS FOLLOWING) FROM customers WHERE customers.plan = 'basic' AS OF :anchor RETURN EXPECTED VALUE
elapsed 00:07 · 412 / 1,204 entities scored
Resultsrows stream in as entities finish scoring
customer_idplanexpected_spend_90d
1042basic241.80
1047basic198.32
1063basic176.05
xxx
xxx
xxx
💬
Streaming — "Stream to table" config drawer pipelineable tasks
🗄
ƒ
Riverbend Trading Relation studio oil_features
Relation studio
Worksheets12
oil_featuresRDB
customer_spend_90dRDB
customer_churn_scoreRDB
View all 12 →
oil_features.relqlValid
1
2
-- next-day expected oil settle, per market PREDICT SUM(oil_futures.settle) OVER (1 DAYS FOLLOWING) FROM markets AS OF :t
Stream to table
Keep scoring this query as new data arrives and write every result into a live table.
Binary — probability per rowok
✓ Regression — expected valueselected
Forecast — value per horizonok
Rankingnot pipelineable
Ranking can't stream: a ranked list needs the full candidate set on every run.
Created in RelativeDB (RDB) on first write.
● Continuous Every 15 min Hourly
Continuous scores each entity as its upstream rows land.
💬
Streaming — triggers news → oil example
🗄
ƒ
Riverbend Trading Relation studio oil_features Triggers
Triggers
Healthy· streaming to oil_features_live
trigger · oil_move_1sigmaArmed
1
2
-- fire when a scored move breaks one sigma WHEN prediction - baseline > 1.0 * stddev_24h
Publish to
Kafka topic Pub/sub Webhook
One JSON event per firing entity. Consumers see it in under a second.
How this trigger runs — worked example
A headline lands, the pipeline re-scores tomorrow's oil settle, and a >1σ move publishes an alert.
KFnews_wire
headline arrives09:41:06
pipeline re-scores
1
PREDICT SUM(oil_futures.settle) OVER (1 DAYS FOLLOWING) FROM markets AS OF :t
move > 1σ ? yes · +1.09σ
KFoil-alerts
kafka://oil-alerts
27 fires in the last 30 days · last fire 09:41:07
💬
Streaming — trigger fired event payload
🗄
ƒ
Riverbend Trading Relation studio oil_features Triggers
Triggers
event · oil-alerts · offset 84,201JSON
1
2
3
4
5
6
7
8
9
10
11
{ "trigger": "oil_move_1sigma", "fired_at": "2026-07-28T09:41:07Z", "entity": "markets/CL-2026Q3", "prediction": 84.62, "baseline": 82.10, "stddev_24h": 2.31, "move_sigma": 1.09, "cause_hint": "news_wire headline 09:41:06", "published_to": "kafka://oil-alerts" }
Recent fireseach row is one published event
Fired atEntityMove (σ)
09:41:07markets/CL-2026Q3+1.09
07:12:44markets/CL-2026Q4−1.21
yesterday 16:03markets/BZ-2026Q3+1.55
View all 27 fires →
💬
Tablet · 834px responsive
🗄
ƒ
Riverbend Trading Relation studio
Relation studio
customer_spend_90d.relqlValid
1
2
3
4
-- expected 90-day spend per customer PREDICT SUM(transactions.price) OVER (90 DAYS FOLLOWING) FROM customers WHERE customers.plan = 'basic' AS OF :anchor RETURN EXPECTED VALUE
Anchor timeAS OF :anchor = 2026-06-01
2025-12
2026-04
now
customer_idexpected_spend_90d
1042241.80
1047198.32
1063176.05
1071154.99
1088122.47
View all 1,204 rows →
💬
Mobile · 390px responsive
Riverbend Trading
Relation studio
RDB
customer_spend_90d ▾
customer_spend_90d.relqlValid
1
2
3
4
5
-- expected 90-day spend PREDICT SUM(transactions.price) OVER (90 DAYS FOLLOWING) FROM customers WHERE customers.plan = 'basic' AS OF :anchor RETURN EXPECTED VALUE
Anchor:anchor = 2026-06-01
now
customer 1042241.80
expected spend, next 90 days · basic plan
customer 1047198.32
expected spend, next 90 days · basic plan
customer 1063176.05
expected spend, next 90 days · basic plan
View all 1,204 rows →
💬
Home
🗄Sources
Graph
💬Chat
Runs

08 · Lineage

Loaded — oil_features lineage
🗄
ƒ
Riverbend Trading Lineage oil_features
oil_features
RDB View
◈ anchored on markets.trade_date
edges = last run: Healthy Lagging Failed
Upstream 6
This object
Downstream 2
KFkalshi_ticks
84.1M rows◈ tick_ts
Healthyran 2m ago
S3news_archive
2.2M docs◈ published_at
Laggingran 3h ago
PGorders
2.4M rows◈ created_at
Healthyran 5m ago
⋯ 3 more upstream
RDBoil_features
derived view◈ trade_date
412K rowsrebuilt 09:40
Healthy0.9s
Blends market ticks, news, and order flow into one daily feature row per market.
RDBoil_model_scores
streamed tablecontinuous
Healthywrote 12s ago
KFoil-alerts
kafka://oil-alerts
Healthy27 fires / 30d
💬
Same node language as the schema graph: syschip + a 3px top-border tint say where each object physically lives. Edge color is the health of the last run that moved data along it. No skeleton — lineage renders from cached run metadata.
Failure propagation — upstream failed stale downstream
🗄
ƒ
Riverbend Trading Lineage session_features
session_features
RDB View
Upstream 2
This object
Downstream 2
KFclickstream_events
consumer lag ∞◈ event_ts
Failed43m ago
PGcustomers
184K rows◈ created_at
Healthyran 4m ago
RDBsession_features
derived view◈ session_ts
stale · last good 08:58
RDBchurn_scores_live
streamed tablestale
KFchurn-alerts
kafka://churn-alertspaused
Dimmed = not run since the failure; values shown are the last good ones.
💬
Node hover — path highlight
🗄
ƒ
Riverbend Trading Lineage oil_features
oil_features
RDB View
hovering kalshi_ticks — its full path stays lit
Upstream 6
This object
Downstream 2
KFkalshi_ticks
84.1M rows◈ tick_ts
Healthyran 2m ago
S3news_archive
2.2M docs◈ published_at
Laggingran 3h ago
PGorders
2.4M rows◈ created_at
Healthyran 5m ago
⋯ 3 more upstream
RDBoil_features
derived view◈ trade_date
412K rowsrebuilt 09:40
Healthy0.9s
RDBoil_model_scores
streamed tablecontinuous
Healthywrote 12s ago
KFoil-alerts
kafka://oil-alerts
Healthy27 fires / 30d
kalshi_ticks feeds oil_featuresoil_model_scores
💬
Empty downstream — nothing reads this view
🗄
ƒ
Riverbend Trading Lineage dedup_customers
dedup_customers
RDB View
Upstream 2
This object
Downstream 0
PGcustomers
184K rows◈ created_at
Healthyran 4m ago
PGtransactions
9.8M rows◈ txn_ts
Healthyran 4m ago
RDBdedup_customers
derived view◈ created_at
Healthyrebuilt 08:12
Nothing reads this view yet
Schedule it or stream it to a table so other objects can build on it.
💬
Tablet · 834px responsive
🗄
ƒ
Riverbend Trading Lineage oil_features
oil_features
RDB
KFkalshi_ticks
Healthy
S3news_archive
Lagging
PGorders
Healthy
⋯ 3 more upstream
RDBoil_features
◈ trade_date
Healthy
RDBoil_model_scores
Healthy
KFoil-alerts
Healthy
💬
Mobile · 390px responsive
Riverbend Trading ▸ Lineage
oil_features
RDB
Upstream · 6
KFkalshi_ticks Healthy
S3news_archive Lagging
PGorders Healthy
⋯ 3 more upstream
This object
RDBoil_features Healthy
◈ trade_date · rebuilt 09:40
Downstream · 2
RDBoil_model_scores Healthy
KFoil-alerts Healthy
💬
Home
🗄Sources
Graph
💬Chat
Runs

09 · Skills

Loaded — editing oil-prices.md unsaved changes
Oil prices Skills oil-prices.md
Skills
markdown notes agents read first
Project files + New
oil-prices.md modified
kalshi-markets.md clean
data-caveats.md new
A skill is just a markdown file in the project repo. Commits go through git like any other change.
oil-prices.md Edit Preview
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
# Oil prices — read me first Agents read this before any query touches this project's data. ## Units & joins - kalshi_ticks.price is in cents (int). Divide by 100 before comparing to market_history.settle. - settle lags the tape by 10–20s at close — treat same-minute joins as suspect. ## Time - Always AS OF the quote timestamp, never ingest time. - Anchor before the 14:30 ET settlement window when backtesting daily questions. ## Known noise - news_archive headlines before 2019 are OCR'd; expect noise. - orders.region is free text before 2024-03.
Attached to
📁 Oil prices
Used by agents — read before any query touches this project's data.
Mentions
KFkalshi_ticks BQmarket_history S3news_archive PGorders
Last commit
a41f2c9 · tighten AS OF guidance · danielh · 2d ago
Version history →
💬
No skeleton: skills are small markdown files read from the local git checkout in the same round-trip as the page — the editor renders synchronously.
Preview — rendered markdown
Oil prices Skills oil-prices.md
Skills
markdown notes agents read first
Project files + New
oil-prices.md clean
kalshi-markets.md clean
data-caveats.md new
oil-prices.md Edit Preview
Oil prices — read me first

Agents read this before any query touches this project's data.

Units & joins
  • kalshi_ticks.price is in cents (int). Divide by 100 before comparing to market_history.settle.
  • settle lags the tape by 10–20s at close — treat same-minute joins as suspect.
Time
  • Always AS OF the quote timestamp, never ingest time.
  • Anchor before the 14:30 ET settlement window when backtesting daily questions.
Known noise
  • news_archive headlines before 2019 are OCR'd; expect noise.
  • orders.region is free text before 2024-03.
Attached to
📁 Oil prices
Used by agents — read before any query touches this project's data.
Last commit
a41f2c9 · tighten AS OF guidance · danielh · 2d ago
💬
Version history — git log for oil-prices.md
Oil prices Skills oil-prices.md History
Version history
CommitMessageAuthorWhen
a41f2c9tighten AS OF guidancedanielh2d ago
9f03b21add OCR noise caveat for news_archivedanielh5d ago
c77d410cents → dollars conversion notemruiz1w ago
5be9a02split units section out of introdanielh2w ago
e10ff37initial skill: oil-prices.mddanielh3w ago
View full history (12 commits)
Each save is a git commit on the project repo — pick any commit to view or restore that version of the file.
💬
Empty — no skills yet
Oil prices Skills
Skills
Add a skill
A markdown note agents read before touching this project's data — units, caveats, join rules, anything you'd tell a new analyst.
💬
Tablet · 834px responsive
Oil prices Skills oil-prices.md
Skills
oil-prices.md kalshi-markets.md data-caveats.md
oil-prices.md Edit Preview
1 2 3 4 5 6 7 8 9 10 11
# Oil prices — read me first ## Units & joins - kalshi_ticks.price is in cents (int). Divide by 100 before comparing to settle. - settle lags the tape by 10–20s at close. ## Time - Always AS OF the quote timestamp. ## Known noise
📁 Oil prices a41f2c9 · tighten AS OF guidance · 2d ago
Used by agents — read before any query touches this project's data.
💬
Mobile · 390px responsive
Oil pricesSkills
Skills
oil-prices.md kalshi-markets.md +1
oil-prices.md Edit Preview
1 2 3 4 5 6 7 8
# Oil prices — read me ## Units & joins - kalshi_ticks.price is in cents (int); ÷100 vs settle. ## Time - Always AS OF quote time.
Last commit
a41f2c9 · tighten AS OF guidance · 2d ago
Home
🗄Sources
Graph
💬Chat
Runs
💬

10 · Data quality

Loaded — DQ command center
Oil pricesData quality
Data quality
profiled 2026-07-28 06:10
Datasets checked
14
every table this project can query
Columns profiled
212
nulls, cardinality, drift
Open issues
16
2 critical5 warning9 info
Relationships checked
9
FK edges in the schema graph
Table statistics
Top 5 by open issue count — how empty, how varied, how much each table moved this week.
TableNull %CardinalityDrift vs 7dIssues
KFkalshi_ticks0.2%1.2M↑ 0.8σ5
PGorders3.1%812K↑ 2.1σ4
S3news_archive6.4%4.8M→ 0.1σ3
BQmarket_history0.0%96K↓ 0.3σ2
PGcustomers1.2%41K→ 0.0σ1
View all 14 tables
Relationship statistics
Per join edge — how selective it is, how many children per parent, and how many child rows point nowhere.
EdgeSelectivityFan-outOrphaned FKJoin coverage
orders → customers0.974.1% ↑95.9%
transactions → orders0.990.2%99.8%
kalshi_ticks → market_history0.940.0%98.7%
news_archive → market_history0.711.3%88.4%
View all 9 edges
Label & target quality
market_settles_yes
The outcome the query predicts — is it balanced, present, and free of future data.
Class balance21.8% yes · 78.2% no
Coverage — anchors with an observed outcome96.4%
Leakage checks 3 columns read post-anchor data
market_history.settle · kalshi_ticks.close_price ·
news_archive.next_day_volume
Label distributionsettle price, ¢ · 12 bins
50¢100¢
Connectivity warnings
Tables the context graph cannot reach from the entity at scoring time.
ContextConnectivityWarning:
support_tickets unreachable from customers within 2 hops at anchor 2026-06-01
ContextConnectivityWarning:
news_archive reaches market_history only via string-match edge (weak)
Open in graph →
💬
Spot-check — inspect 50 random rows
Oil pricesData qualitySpot check
Inspect 50 random rows
PGorders
Eyeball raw rows the profiler picked at random. Anything you flag becomes an open issue on this table.
order_idcustomer_idtotal_usdregioncreated_atYour call
88214c_04412418.20midwest2026-07-12 09:41
90177c_99999-12.00MIDWEST!!2026-07-24 14:07flagged · looks wrong
87903c_0128896.50gulf2026-07-08 16:22
91042c_077311,204.75gulf2026-07-26 11:03marked ok
86518c_0219458.10northeast2026-06-30 08:15
89660c_05502233.90midwest2026-07-19 19:48
90881c_03356742.00west2026-07-25 10:12
Showing 7 of 50 sampled rows · 1 flagged · 1 ok View all 50
Flags feed the open-issues list on the Data quality overview — the flagged row above created the "orders row with negative total" info issue.
💬
Issue detail — drawer open orphaned FK spike
Oil pricesData quality
Data quality
Datasets checked
14
Columns profiled
212
Open issues
16
2 critical5 warning
EdgeSelectivityOrphaned FKJoin coverage
orders → customers0.974.1% ↑95.9%
transactions → orders0.990.2%99.8%
kalshi_ticks → market_history0.940.0%98.7%
Warning
Orphaned FK spike
orders → customers
orders→customers orphaned FK rate rose from 0.8% to 4.1% after the 07-24 backfill. About 33,400 order rows now reference customer ids that don't exist.
First seen2026-07-24 14:02
Affected queries6 use this edge in context
Severitywarning → critical at 5%
Suggested fix
Re-run the customers backfill for customer_id > c_90412, or exclude orphaned orders from context until it lands.
💬
Loading skeleton
Oil pricesData quality
Data quality
Datasets checked
Columns profiled
Open issues
Relationships checked
Table statistics
Relationship statistics
Label & target quality
Connectivity warnings
💬
Profiling stats are computed server-side per run and can take a few seconds on 14 tables — every async region shimmers; page chrome and card headers render immediately.
Tablet · 834px responsive
Oil pricesData quality
Data quality
Datasets
14
Columns
212
Open issues
16
259
Table statistics — top 3 by issues
TableNull %Drift vs 7dIssues
KFkalshi_ticks0.2%↑ 0.8σ5
PGorders3.1%↑ 2.1σ4
S3news_archive6.4%→ 0.1σ3
View all 14 tables
Label & target quality 3 columns read post-anchor data
Class balance21.8% yes · 78.2% no
Coverage96.4%
💬
Mobile · 390px responsive
Oil pricesData quality
Data quality
Datasets
14
Issues
16
25
PGorders 4 issues
null 3.1% · drift ↑ 2.1σ · orphaned FK 4.1%
KFkalshi_ticks 5 issues
null 0.2% · drift ↑ 0.8σ · card 1.2M
Label quality 3 leaky cols
21.8% yes · coverage 96.4%
View all 14 tables →
Home
🗄Sources
Graph
💬Chat
Runs
💬

11 · Training

Configure — binary classification
🗄
ƒ
Kalshi Oil Desk Training order_churn_head
Training
order_churn_head · draft
task queryrelqlvalid ✓
1
2
PREDICT NOT EXISTS(orders.*) FROM customers AS OF :anchor RETURN PROBABILITY
Auto-detected task
Binary classification → probability
The query defines the task and its labels — no hand labeling.
Anchors — where supervision comes from
12 anchors · 2025-07 … 2026-06
Labels = what actually happened after each anchor. Monthly × 12.
2025-07
2026-01
2026-06
now
future — no data
Training mode
Zero-shotno training
Run the backbone as-is. Good first look before spending compute.
0 epochs · run now
Fit headselected
Backbone frozen; trains a small task head on your anchors.
epochs 100 · lr 1e-3
minutes · CPU ok
Full fine-tuneneeds GPU/MPS
Updates the whole backbone. Binary + regression tasks only.
epochs 1 · batch 8 · lr 1e-5 · grad clip 1.0
Backbone checkpoint — smaller is faster, slightly less accurate
fp32reference
344MB · 612ms / score
fp16full quality
172MB · 483ms / score
int8−0.2% AUROC
88MB · 341ms / score
int4−1.1% AUROC
64MB · 268ms / score
Latest evaluation — binary classification run #41 · held-out anchors 2026-05, 2026-06
AUROC
0.87
how well it ranks churners above non-churners
Log loss
0.31
penalty for confident wrong answers — lower is better
Calibration — bars near the diagonal mean probabilities are honest
0.0 1.0 obs
💬
The query itself is the label pipeline: each hollow ring is a past cutoff, and the model is graded on what really happened after it. Anchors render on the shared violet time spine like everywhere else. No skeleton artboard: the config page renders from the saved draft in one round-trip — the only async region is the loss curve, which gets its own streaming state below.
Variant — forecasting value per horizon
🗄
ƒ
Kalshi Oil Desk Training oil_settle_forecast
Training
oil_settle_forecast · draft
task queryrelqlvalid ✓
1
PREDICT SUM(oil_futures.settle) OVER (7 DAYS FOLLOWING HORIZONS 4) FROM markets
Auto-detected task
Forecasting → value per horizon
Four successive 7-day horizons — one value each, out to 28 days past the anchor.
Zero-shotno training
0 epochs · run now
Fit headselected
epochs 100 · lr 1e-3
minutes · CPU ok
Full fine-tuneunavailable
Binary + regression tasks only — forecasting heads stay on the frozen backbone.
Latest evaluation — error per horizon run #17 · MAE in $/bbl — how far the forecast lands from the settle
0.41 0.58 0.76 0.97 h+7d h+14d h+21d h+28d MAE $
Error grows with distance from the anchor — expected. The nearest horizon is within $0.41 of the actual settle.
💬
Variant — ranking ranked list
🗄
ƒ
Kalshi Oil Desk Training next_articles_rank
Training
next_articles_rank · draft
task queryrelqlvalid ✓
1
PREDICT ARRAY_AGG(transactions.article_id) OVER (30 DAYS FOLLOWING RANK TOP 12) FROM customers
Auto-detected task
Ranking → ranked list
Top 12 articles each customer is likely to buy in the next 30 days.
Zero-shotno training
0 epochs · run now
Fit headselected
epochs 100 · lr 1e-3
minutes · CPU ok
Full fine-tuneunavailable
Binary + regression tasks only — ranking always uses the frozen backbone.
Latest evaluation — ranking run #9 · held-out anchors 2026-05, 2026-06
NDCG@12
0.61
how close the predicted list is to what customers actually bought
Hit rate@12
0.44
share of customers with ≥1 correct article in their top 12
A random top-12 list scores NDCG 0.07 on this catalog — the head is well above chance.
💬
Full fine-tune is disabled for ranking (and forecasting): the backbone is only updated end-to-end for scalar binary and regression targets.
Training — running streaming loss
🗄
ƒ
Kalshi Oil Desk Training order_churn_head
Training
order_churn_head · run #42 · fit head · fp16
Loss — streaming epoch 62 / 100 · loss 0.342 ↓
38 epochs remaining 0.69 0.30 epoch 1 100
Loss falling means the head is still learning — cancel is safe, progress is checkpointed each epoch. 62% · ~74s left · cpu-local
Claude is watching this run· will report
Run config
Modefit head
Anchors12 · monthly
lr1e-3
Checkpointfp16 · 172MB
StatusHealthy
💬
Training — completed
🗄
ƒ
Kalshi Oil Desk Training order_churn_head
Training
order_churn_head · run #42 · finished 2026-07-28 09:52
AUROC
0.89
+0.02 vs run #41 — better ranking of churners
Log loss
0.27
−0.04 vs run #41 — fewer confident misses
Calibration error
0.021
predicted probabilities track reality closely
Scoring latency
483ms
fp16 checkpoint · per entity
What next
Serve this head — score entities on demand from queries and the workspace.
Stream to table — binary tasks are pipelineable: write scores continuously and fire triggers on conditions.
💬
Edge case leakage — query reads post-anchor data
🗄
ƒ
Kalshi Oil Desk Training order_churn_head
Training
order_churn_head · draft
task queryrelqlleakage ✕
1
2
3
PREDICT NOT EXISTS(orders.*) FROM customers WHERE orders.delivered_at > :anchor -- reads after the anchor AS OF :anchor RETURN PROBABILITY
Where the leak sits
:anchor
read here — off-limits
now
Context must stop at the ring. The hatched span is exactly what the label is made of — training on it would score perfectly and predict nothing.
Override — not recommended
Saves the draft only — training stays blocked until the confirm text matches.
💬
Blocked-by-default with a typed second confirm: leakage is the one mistake this product exists to prevent, so the primary action is disabled rather than warned.
Tablet · 834px responsive
🗄
ƒ
Kalshi Oil Desk Training order_churn_head
Training
task queryBinary classification → probability
1
2
PREDICT NOT EXISTS(orders.*) FROM customers AS OF :anchor RETURN PROBABILITY
Anchors12 anchors · 2025-07 … 2026-06
now
Labels = what actually happened after each anchor.
Fit headselected
epochs 100 · lr 1e-3 · fp16 172MB · 483ms
minutes · CPU ok
AUROC
0.87
Log loss
0.31
Cal. error
0.021
💬
Mobile · 390px responsive
Training order_churn_head
Training
Binary → probability
1
2
PREDICT NOT EXISTS(orders.*) FROM customers AS OF :anchor
Anchors · 12 · monthly
now
2025-07 … 2026-06 · showing every 2nd
Fit headselected
epochs 100 · lr 1e-3 · CPU ok
AUROC
0.87
Log loss
0.31
Home
🗄Sources
Graph
💬Chat
Runs
💬

12 · Workspace

Loaded — thread with query, chart, table
🗄
ƒ
💬
Kalshi oil spread
2m ago
Backfill + retrain
1h ago
Oil trading triggers
3h ago
Churn look
yesterday
Weekly orders digest
2d ago
View all 14 →
Kalshi Oil Desk Workspace Kalshi oil spread
show me the kalshi spread for tomorrow's oil prices, four time horizons, and the expected price at those
Reading kalshi_ticks KF joined through markets S3, series OIL. I split the next day into four horizons and predicted the expected mid at each:
relqlran in 1.2s
1
2
3
4
PREDICT AVG(kalshi_ticks.mid) OVER (6 HOURS FOLLOWING HORIZONS 4) FROM markets WHERE markets.series = 'OIL' RETURN EXPECTED VALUE
78.10 78.24 78.33 78.42 h+6h h+12h h+18h h+24h $/bbl — spread band
HorizonSpreadExpected
h+6h0.4278.10
h+12h0.5578.24
h+18h0.6178.33
h+24h0.6878.42
Spread widens with distance — the market is less sure about tomorrow evening than tomorrow morning. Expected mid drifts up $0.32 across the day.
Pin as live card 📌
This thread is the ONE scrollable surface in the product — every other page is fixed-height with bounded lists. The 💬 helper in the bottom-right of every other page opens this same chat and history; there is no FAB here because chat IS the page.
Task kickoff — backfill then retrain
🗄
ƒ
💬
Kalshi oil spread
2m ago
Backfill + retrain
just now
Oil trading triggers
3h ago
View all 14 →
Kalshi Oil Desk Workspace Backfill + retrain
backfill the news archive and retrain the oil model when done
Started both. The backfill pulls the remaining news_archive S3 partitions; the retrain of oil_settle_forecast is queued behind it so it trains on the complete archive. I'll post here as each finishes.
Backfilling news_archive · 34% · 2.1M of 6.2M docs Pause View →
Retrain oil model · queued · starts when backfill completes View →
Task chips are live objects: they keep updating in the thread and also appear on Runs. Chaining ("when done") is expressed as a queued chip, not hidden scheduler state.
Advanced — ablation, trigger, live pinned card
🗄
ƒ
💬
Kalshi oil spread
2m ago
Backfill + retrain
1h ago
Oil trading triggers
3h ago
View all 14 →
Kalshi Oil Desk Workspace Oil trading triggers
Pinned · livelive
OIL 1-day expected
78.42▲0.6σ
updated 12s ago
which inputs actually matter for the oil model?
Ran EXPLAIN ABLATE — it re-scores the query once per candidate input and ranks by how far dropping each one moves predictions (took 31s):
news_sentiment is load-bearing: dropping it moves predictions 2.3σ.
RDnews_sentiment
2.3σ
KFkalshi_ticks
1.1σ
BQmarket_history
0.4σ
S3news_archive
0.1σsafe to ablate
alert me when the 1-day expected moves more than 1 sigma
Forecasting tasks are pipelineable, so I can stream scores and fire a trigger on that condition:
Publishing to kafka://oil-alerts when |Δ| > 1σ — confirm?
Side effects (Kafka triggers, ablations) always round-trip through an explicit confirm chip — the assistant proposes, the user commits.
Streaming — assistant mid-answer
🗄
ƒ
💬
Kalshi oil spread
now
Backfill + retrain
1h ago
View all 14 →
Kalshi Oil Desk Workspace Kalshi oil spread
show me the kalshi spread for tomorrow's oil prices, four time horizons, and the expected price at those
Reading kalshi_ticks KF for series OIL. Splitting tomorrow into four horizons and scoring the expected mid at each
Running PREDICT· scoring 4 horizons · 0.8s
Empty — new thread
🗄
ƒ
💬
New thread
now
Kalshi oil spread
2m ago
Backfill + retrain
1h ago
View all 14 →
Kalshi Oil Desk Workspace New thread
Ask about your data
Try: "which customers look likely to churn this month?"
Chart oil settle vs kalshi mid Backfill news_archive What moved the oil model today?
Tablet · 834px responsive
🗄
ƒ
💬
☰ Threads Kalshi oil spread
show me the kalshi spread for tomorrow's oil prices, four time horizons, and the expected price at those
Four horizons over the next day for series OIL:
78.10 78.42 h+6h h+12h h+18h h+24h
spread 0.42 → 0.68 · expected 78.10 → 78.42
Mobile · 390px responsive
Kalshi oil spread
Kalshi Oil Desk
+
show me the kalshi spread for tomorrow's oil prices, four time horizons, and the expected price at those
Four horizons over the next day for OIL:
78.10 78.42 h+6h h+12h h+18h h+24h
h+6h 0.42 → 78.10
h+12h 0.55 → 78.24
h+18h 0.61 → 78.33
h+24h 0.68 → 78.42
Pin as live card 📌
alert me if it moves more than 1 sigma
Publishing to kafka://oil-alerts when |Δ| > 1σ — confirm?
Home
🗄Sources
Graph
💬Chat
Runs
Chat is the primary mobile surface: the full app is reachable through it, so the thread gets full height and the tabbar's Chat item is active by default.

13 · Runs

Loaded — running rows live
Acme Supply Chain Runs
Runs
All 412
Jobs 64
Tasks 96
Pipelines 38
Ingestions 214
NameTypeStatusWhereStartedDuration
finetune_oil_impact Task Running EKS us-east-1 2026-07-28 13:41 21m 12s
kalshi_ws_ingest Ingestion Running RelativeDB Cloud 2026-07-28 14:00  2m 09s
orders_ingest Ingestion Healthy on-prem k8s 2026-07-28 12:00 14m 33s
daily_feature_prep Pipeline Failed GKE europe-west4 2026-07-28 06:00 32m 04s
warehouse_sync Job Lagging on-prem k8s 2026-07-28 05:30 58m 47s
View all 412 runs →
💬
The Where column names the cluster a run executes on with the same placement chips as the Compute page, so a run can be traced to its metal in one glance.
Loading skeleton
Acme Supply Chain Runs
Runs
All
Jobs
Tasks
Pipelines
Ingestions
NameTypeStatusWhereStartedDuration
n
t
s
w
d
d
n
t
s
w
d
d
n
t
s
w
d
d
n
t
s
w
d
d
n
t
s
w
d
d
💬
Five skeleton rows at table rhythm; the filters stay interactive while the table loads.
Empty — no runs yet
Acme Supply Chain Runs
Runs
All
Jobs
Tasks
Pipelines
Ingestions
No runs yet.
Runs appear here once a source syncs or a task executes.
💬
Training-run drawer — loss, lr, AUROC on the spine
Acme Supply Chain Runs
Runs
All
Jobs
Tasks
Pipelines
Ingestions
NameStatusWhere
finetune_oil_impact Running EKS us-east-1
orders_ingestHealthyon-prem k8s
daily_feature_prepFailedGKE europe-west4
finetune_oil_impact Running
EKS us-east-1 fit_head · epochs 100 · lr 1e-3
Training curves log loss learning rate
plateau · lr cut 1e-3 → 5e-4
ep 0 · 13:41
ep 48 · 13:52
ep 84
now
AUROC (val)
0.874
Log loss
0.312
Learning rate
5e-4
Steps
assemble_context 4m 41s
train_head running · 16m 31s
💬
Loss and learning rate share one chart in the neutral ramp; the x-axis is the violet spine because it maps epochs to wall-clock. AUROC, loss, and lr get plain-label stat readouts under the chart.
Agent monitor — Claude watching the run state
Acme Supply Chain Runs
Runs
All
Jobs
Tasks
Pipelines
Ingestions
NameStatusWhere
finetune_oil_impact Running EKS us-east-1
orders_ingestHealthyon-prem k8s
finetune_oil_impact Running
Agent monitor · Claude attached watching
Recent agent actions
14:02 observed val loss plateau 3 epochs → reduced lr 1e-3 → 5e-4
14:09 early-stop armed (patience 5 epochs)
14:11 watching val AUROC · no drift
Every agent action is written to the run's audit trail and is reversible — pausing stops interventions, not observation.
Steps
train_head running · 30m 12s
💬
An attached agent is a card, not a hidden daemon: its actions log in mono with timestamps, and the human keeps pause/detach controls plus an audit trail.
Failed-run drawer — log excerpt
Acme Supply Chain Runs
Runs
All
Jobs
Tasks
Pipelines
Ingestions
NameStatusWhere
finetune_oil_impactRunningEKS us-east-1
daily_feature_prep Failed GKE europe-west4
orders_ingestHealthyon-prem k8s
daily_feature_prep Failed
Run timeline
06:00
06:24
06:32 · failed
Steps
extract_orders 14m 12s
join_payments 12m 40s
write_feature_store failed · 5m 12s
06:31:48 INFO writing partition dt=2026-07-27
06:31:55 WARN retry 3/3 on s3://acme-fs/features/
06:32:03 ERROR write_feature_store: AccessDenied
06:32:03 ERROR s3 credentials expired at 06:00:00
06:32:04 INFO run marked failed
💬
Failed steps auto-expand their last log lines; the failed step's bar renders critical on the spine — state color as state, never as decoration.
Tablet · 834px responsive
Acme Supply ChainRuns
Runs
All
Jobs
Tasks
Pipelines
Ingestions
NameStatusWhereStarted
finetune_oil_impactRunningEKS us-east-113:41
kalshi_ws_ingestRunningRelativeDB Cloud14:00
orders_ingestHealthyon-prem k8s12:00
daily_feature_prepFailedGKE europe-west406:00
warehouse_syncLaggingon-prem k8s05:30
View all 412 runs →
💬
Mobile · 390px responsive
acme-supply-chain
Runs
All
Tasks
Pipelines
Ingestions
finetune_oil_impact Running
EKS us-east-1 13:41 · 21m 12s
kalshi_ws_ingest Running
RelativeDB Cloud 14:00 · 2m 09s
daily_feature_prep Failed
GKE europe-west4 06:00 · 32m 04s
warehouse_sync Lagging
on-prem k8s 05:30 · 58m 47s
💬
Home
Sources
Graph
💬Chat
Runs

14 · Compute & deployment

Loaded — clusters
Acme Supply ChainCompute
Compute & deployment
Where jobs run, what it costs, and how to move them.
on-prem k8sus-dc-1
Healthy
Open source on your own infra, running the open RT-J reference checkpoints.
Running jobs14
GPU12 / 16
CPU61%
$0/hr (owned hardware) Details →
AWS · EKSus-east-1
Healthy
Elastic GPU pool for training bursts.
Running jobs9
GPU · A1006 / 8
CPU48%
$41.20/hr Details →
GCP · GKEeurope-west4
Healthy
EU-resident serving for European entities.
Running jobs5
GPU · L42 / 4
CPU33%
$18.60/hr Details →
RelativeDB CloudManaged
Healthy
Managed inference on checkpoints we train and serve ourselves — tuned beyond the open RT-J reference weights.
Running jobs11
Capacityautoscales
Serving p5038ms
$0.84 / 1M predictions Details →
💬
Four placements, one vocabulary: the same chips appear on Runs and Observability. Capacity bars use the neutral chart ramp — utilization is a quantity, not a state.
Deploy streaming job — choose flow 1/2
Acme Supply ChainCompute
Compute & deployment
Deploy streaming job · step 1 of 2
💬
Deploy streaming job — review flow 2/2
Acme Supply ChainCompute
Compute & deployment
Review deployment · step 2 of 2
oil_impact_stream GKE europe-west4
What moves, what it costs
Reads news_s3 (us-east-1) cross-region~2.1 GB/day egress
Estimated egress cost~$0.19/day
Serving checkpoint rtj-oil-ft int8 copy1.8 GB once
Compute on GKE+$2.10/hr
💬
Review names the egress before the button: cross-region reads are the hidden cost of moving compute, so the estimate sits between choose and deploy. Move compute and Offload data reuse this same choose → review shell.
Moving — job mid-migration state
Acme Supply ChainCompute
Compute & deployment
Moving oil_impact_stream EKS us-east-1GKE europe-west4
Draining on EKS · warming on GKE · no dropped records — the old placement serves until the new one is caught up 62%
checkpoint copied · consumer offsets synced · replaying 14:01:12 → now
AWS · EKSus-east-1
Healthy
Running jobs9 → 8
GPU · A1006 / 8
GCP · GKEeurope-west4
Healthy
Running jobs5 → 6
GPU · L43 / 4
💬
Loading skeleton
Acme Supply ChainCompute
Compute & deployment
on-prem k8sus-dc-1
Checking…
Running jobs14
GPU
CPU
AWS · EKSus-east-1
Checking…
Running jobs9
GPU · A100
CPU
GCP · GKEeurope-west4
Checking…
Running jobs5
GPU · L4
CPU
RelativeDB CloudManaged
Checking…
Running jobs11
Capacity
Serving p50
💬
Cluster identity and job counts come from config and render at once; only the capacity bars stream in from each cluster's metrics endpoint, so only they shimmer. Health shows "Checking…" until the first heartbeat.
Tablet · 834px responsive
Acme Supply ChainCompute
Compute & deployment
on-prem k8sus-dc-1
Healthy
14 jobs · GPU 12/16 · CPU 61%$0/hr
AWS · EKSus-east-1
Healthy
9 jobs · GPU 6/8 A100 · CPU 48%$41.20/hr
GCP · GKEeurope-west4
Healthy
5 jobs · GPU 2/4 L4 · CPU 33%$18.60/hr
RelativeDB CloudManaged
Healthy
11 jobs · autoscales · p50 38ms$0.84/1M pred
💬
Mobile · 390px responsive
acme-supply-chain Compute
Compute
on-prem k8sHealthy
14 jobs · GPU 12/16$0/hr
AWS · EKSHealthy
9 jobs · GPU 6/8$41.20/hr
GCP · GKEHealthy
5 jobs · GPU 2/4$18.60/hr
RelativeDB CloudHealthy
11 jobs · managed$0.84/1M
💬
Home
Sources
Graph
💬Chat
Runs

15 · Settings

Loaded — General tab
Acme Supply Chain Settings
Settings
General
API tokens
Integrations
Preferences
Project
Name
Slug
acme-supply-chainCopy
Description
Created
2026-02-11 09:04
Version
2.14.0
Metadata
region = us-west
env = production
Members
NameRoleEmailLast active
Daniel Henneberger you daniel@acme.com now
Anna Lee anna@acme.com 2h ago
Mark Shah mark@acme.com 1d ago
Priya Nair priya@acme.com 3d ago
Danger zone
Deleting a project removes its sources, tasks, and runs. Type the project slug to confirm.
💬
No skeleton for Settings: form values load with the page, so there is no async region to shimmer. Also no time spine — Settings is the one operational page with no temporal reasoning, deliberately.
Permission denied — Viewer read-only degraded
Acme Supply Chain Settings
Settings
General
API tokens
Integrations
Preferences
Project
Name
Slug
acme-supply-chain
Members
NameRoleEmailLast active
Anna Lee anna@acme.com 2h ago
Mark Shah mark@acme.com 1d ago
Daniel Henneberger daniel@acme.com now
Priya Nair you priya@acme.com now
💬
Viewers see values but every control disables; the banner says which role unlocks editing. The danger zone hides entirely for non-Admins.
API tokens tab — revealed once + revoke confirm state
Acme Supply Chain Settings
Settings
General
API tokens
Integrations
Preferences
Token created
rql_live_4f2a9c81e7d340bb92c6a1f08d5e7723
Copy it now — it won't be shown again.
API tokens
NameTokenScopeCreatedExpires
ci-deploy rql_live_4f2a… Copy read-write 2026-07-28 2027-07-28
notebooks rql_live_b81c… Copy read-only 2026-03-02 Expires in 3d
legacy-etl rql_live_09dd… read-write 2025-11-19 2026-11-19 Revoke this token? Anything using it stops working.
💬
The full token appears exactly once after creation. Revoke asks inline — the confirm names the consequence, and the button says what it does.
Invite member — pending row state
Acme Supply Chain Settings
Settings
General
API tokens
Integrations
Preferences
Members
NameRoleEmailLast active
Invited · 0m ago Viewer sofia@acme.com Resend
Anna Lee anna@acme.com 2h ago
Mark Shah mark@acme.com 1d ago
Priya Nair priya@acme.com 3d ago
💬
On send, the pending row appears with the dot-less status word "Invited · 0m ago" in ink-soft and a Resend text button. An invalid email keeps the form open: "That doesn't look like an email address."
Tablet · 834px — General responsive
Acme Supply ChainSettings
Settings
General
API tokens
Integrations
Preferences
Project
Name
Slug
acme-supply-chainCopy
Description
Members
NameRoleLast active
Daniel Henneberger youAdminnow
Anna LeeAdmin2h ago
Mark ShahData Engineer1d ago
Priya NairAnalyst3d ago
💬
Mobile · 390px — General responsive
acme-supply-chain
Settings
General
Tokens
Integrations
Project
Name
Slug
acme-supply-chainCopy
Members
Invite
Daniel Henneberger youAdmin
Anna LeeAdmin
Mark ShahData Engineer
Priya NairAnalyst
💬
Home
Sources
Graph
💬Chat
Runs

16 · Alerts

Loaded — leakage alert prominent
Acme Supply Chain Alerts
Alerts
All alerts 5
Incidents 1
Notifications 12
AlertSeveritySourceTriggeredStatus
oil_impact_1sigma Warning stream 1m ago Open
payments_final_timeout Critical ingestion 2m ago Open
churn_model_leakage Leakage Critical schema 9m ago Open
daily_sales_delay Warning pipeline 1h ago Investigating
schema_drift_orders Info schema 5h ago Open
churn_model reads payments_final after anchor time — a temporal-correctness alert, not infrastructure.
💬
Severity owns color, status owns lifecycle. Unacknowledged Critical rows carry the 2px critical left edge — the only row-level color, and only until acknowledged. The ⧗ glyph + violet badge marks leakage.
Loading skeleton
Acme Supply Chain Alerts
Alerts
All alerts
Incidents
Notifications
AlertSeveritySourceTriggeredStatus
a
s
s
t
s
a
s
s
t
s
a
s
s
t
s
a
s
s
t
s
a
s
s
t
s
a
s
s
t
s
💬
Six skeleton rows; the severity filter renders immediately so triage can be scoped while rows load.
Empty — all clear state
Acme Supply Chain Alerts
Alerts
All alerts
Incidents
Notifications
All clear
No open alerts. Rules are evaluating on every profile run.
💬
Alert detail drawer — leakage timeline
Acme Supply Chain Alerts
Alerts
All alerts
Incidents
Notifications
AlertSeverityTriggered
payments_final_timeoutCritical2m ago
churn_model_leakage Critical 9m ago
daily_sales_delayWarning1h ago
churn_model_leakage Critical
Leakage
Open Investigating Closed
Timeline
cutoff
read
now
12:00 anchor
14:03
churn_model reads payments_final after anchor time — orders.settled_at is read 2h before its availability cutoff. Add a backdating rule or exclude the column.
task churn_model dataset payments_final run task_run_88121
Activity
Rule leakage_guard fired · 13:54
Priya set status to Open · 13:56
💬
Leakage drawers render the anchor (hollow caret), the offending column's availability window as violet hatching, and the leaking read as a critical tick inside the hatch.
Non-leakage drawers show a short trigger-time-vs-now spine per spec — same drawer shell, so no separate artboard is drawn for them.
All filtered out state
Acme Supply Chain Alerts
Alerts
All alerts
Incidents
Notifications
No alerts match these filters.
💬
Alert rules — metric · condition · route
Acme Supply Chain Alerts
Alerts
All alerts
Incidents
Notifications
Rules 6
A rule watches a metric, checks a condition over a window, and routes wherever you work.
MetricConditionWindowRouteStatus
oil_impact_score moves > 1σ vs 24h baseline 5m kafka oil-alerts#trading Active
connector kalshi_ws lag > 60s 1m page on-call Active
reorder_prediction expected stockout < 7 days 1h email owner#ops-alerts Active
query p95 latency > 500ms 10m #eng-perf Active
leakage_guard any read after anchor per run page on-call#ml-platform Active
View all 6 rules →
💬
Rules mix infra (connector lag) with prediction conditions (a score moving 1σ) — the same table grammar covers both, and routes are chips: Kafka topic, Slack channel, email, pager.
Rule builder drawer — condition editor state
Acme Supply Chain Alerts
Alerts
All alerts
Incidents
Notifications
Rules
MetricCondition
oil_impact_scoremoves > 1σ vs 24h baseline
connector kalshi_wslag > 60s
reorder_predictionexpected stockout < 7 days
Edit rule Active
oil_impact.rqlregression · streams to a table
1
2
3
PREDICT AVG(prices.wti_return) OVER (1 DAY FOLLOWING) FROM headlines RETURN EXPECTED VALUE
prediction moves > 1σ vs 24h baseline
Evaluated every 5m on the streamed prediction · one alert per entity · cooldown 15m.
+ #trading (Slack) + Add route
💬
The rule watches a streaming RelQL prediction, so the query gets the IDE shell — violet on the window keywords because they are temporal. The trigger itself is config, not SQL: fire when the streamed prediction moves past 1σ. "Test on last 24h" replays it before it goes live.
Fired trigger — news → oil impact state
Acme Supply Chain Alerts oil_impact_1sigma
Alerts
All alerts
Incidents
Notifications
Rules
AlertSeverityTriggered
oil_impact_1sigma Warning 14:02
payments_final_timeoutCritical14:01
daily_sales_delayWarning13:02
Predicted oil impact +1.4σ Warning
Triggering headline
"OPEC+ signals surprise output cut at emergency session"
news_wire · 2026-07-28 14:01:52 · entity WTI
Prediction delta
+1.4σ
13:00
14:01:52
now
Published to kafka://oil-alerts · 14:02:07
rule oil_impact_1sigma pipeline oil_impact_stream notified #trading
💬
The fired trigger tells the whole story: the headline that moved the model, the score jump on the violet spine (hollow ring = the headline's anchor), and the mono receipt of where and when it published.
Tablet · 834px responsive
Acme Supply ChainAlerts
Alerts
All alerts
Incidents
Notifications
Rules
AlertSeverityTriggered
oil_impact_1sigmaWarning1m ago
payments_final_timeoutCritical2m ago
churn_model_leakage LeakageCritical9m ago
daily_sales_delayWarning1h ago
schema_drift_ordersInfo5h ago
View all alerts →
💬
Mobile · 390px responsive
acme-supply-chain
Alerts
All
Incidents
Rules
oil_impact_1sigma
Warning 1m ago · Open
payments_final_timeout
Critical 2m ago · Open
churn_model_leakage
CriticalLeakage 9m ago · Open
daily_sales_delay
Warning 1h ago · Investigating
💬
Home
Sources
Graph
💬Chat
Runs
RelQL Studio · Pages 100% scroll to pan · pinch to zoom · ⌘0 reset Components · Collections