DATA OPS
Classify New Snowflake Columns for PII on Schema Change
Watches for newly added columns across Snowflake schemas, runs an LLM classifier on column names plus sampled values to flag likely PII, and posts a triage summary to Slack.
How it runs
The automated pipeline, trigger to output.
- TriggerScheduled scan interval
- ActionQuery Snowflake INFORMATION_SCHEMA.COLUMNSSnowflake
- LogicDiff against prior snapshot to isolate new columns
- ActionSample values for each new columnSnowflake
- ActionClassify columns for PII with OpenAIOpenAI
- LogicFilter to columns above confidence threshold
- OutputPost triage summary to SlackSlack
What it does
Every time the scan runs, it diffs the current Snowflake column inventory against the last known snapshot. Any column that appeared since the last run is sampled, classified for personally identifiable information (email, SSN, phone, address, full name, payment data), and the suspected-PII columns are summarized in a single Slack message so a data steward can confirm or dismiss.
When to use it
Use it when engineers ship migrations faster than governance can review them and untagged PII keeps slipping into warehouse tables. It catches drift at the moment a column lands, before it propagates into downstream marts or exports.
How it works
- 1A scheduled trigger fires the scan (e.g. hourly).
- 2Query `INFORMATION_SCHEMA.COLUMNS` in Snowflake for the full current column list and diff against the prior snapshot to isolate brand-new columns.
- 3For each new column, sample a handful of non-null values from the table.
- 4An OpenAI classifier scores each column name plus its sample for PII type and confidence.
- 5A logic step keeps only columns above the confidence threshold.
- 6Post a grouped triage summary (table, column, PII type, confidence) to the data-governance Slack channel.
Set it up
What you configure once, before turning it on.
- 1Connect SnowflakeWarehouses, queries, shares.
- 2Connect OpenAIModels, embeddings, files.
- 3Connect SlackChannels, DMs, threads, mentions.
- 4Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
- 5Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
- 6Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.
More Data Ops workflows
Weekly BigQuery Cost Trend Sheet and Exec Digest
Compiles week-over-week BigQuery scheduled-query cost by owner and dataset into a Google Sheet with trend columns.
Daily BigQuery Scheduled-Query Cost Attribution to Owners
Each morning, totals the prior day's on-demand bytes-billed per scheduled query, maps each query to its owner from a label, and posts a per-owner cost leaderboard to Slack.
BigQuery Per-Team Budget Breach Alert to PagerDuty
Tracks month-to-date BigQuery scheduled-query spend per team and, when a team crosses its monthly budget, pages the team's on-call in PagerDuty and snapshots the spend breakdown…
dbt source freshness watcher with severity-routed alerts
Checks Snowflake loaded-at timestamps against each dbt source's freshness SLA, then routes warnings to Slack and hard breaches to a PagerDuty incident so stale data never…
dbt orphan model detector with Linear cleanup tickets
Scans your dbt manifest for models that no other model, exposure, or BI tool consumes.
Raw Sensor Telemetry Archive to BigQuery
Captures every incoming building sensor reading via webhook, normalizes the payload into a consistent schema.
Run it inside a business
This workflow drops into a full company template. Import the org, and this is one of the playbooks its agents run.

Run this workflow in your colony.
14-day trial. No DevOps. No Sales call. Provisioned in under a minute.
