ENGINEERING

EXPLAIN Plan Diff on Every Deploy

When a deploy completes, re-runs EXPLAIN on your tracked hot queries, diffs the new plans against the pre-deploy plans.

CategoryEngineering
Enginesim
Difficultyadvanced
Triggerwebhook
Steps6
Setup~25 min

How it runs

The automated pipeline, trigger to output.

  • TriggerVercel deploy-success webhookVercelVercel
  • ActionRun EXPLAIN on tracked queriesPostgreSQLPostgres
  • ActionLoad last-good plansPostgreSQLPostgres
  • LogicDetect scan downgrade or cost spike
  • OutputAlert Slack with deploy SHASlack
  • ActionStore new plan baselinePostgreSQLPostgres

What it does

It catches query plan regressions caused by a deploy. On each Vercel deploy webhook it runs `EXPLAIN (FORMAT JSON)` for a curated list of hot queries against production Postgres, compares the new plan tree to the last-known-good plan, and detects dangerous changes — an index scan flipping to a seq scan, a nested loop becoming a hash join on a large relation, or estimated cost ballooning.

When to use it

Use this when migrations or ORM changes quietly invalidate the planner's choices. It ties plan changes directly to the deploy that caused them so you can revert with confidence.

How it works

  1. 1Vercel deploy-success webhook triggers the run.
  2. 2Run `EXPLAIN (FORMAT JSON)` for each tracked query against Postgres.
  3. 3Load the stored last-good plan for each query.
  4. 4A logic step compares node types and costs, flagging scan-type downgrades or cost spikes.
  5. 5Post a Slack alert with the deploy SHA and the offending plan nodes.
  6. 6Save the new plans as the next baseline.

Set it up

What you configure once, before turning it on.

  1. 1
    Connect VercelDeploys, runtime logs, analytics.
  2. 2
    Connect PostgresAny Postgres URL — query, write, migrate.
  3. 3
    Connect SlackChannels, DMs, threads, mentions.
  4. 4
    Set each agent's modelWe leave models unset so you pick the tier — fast + cheap, or top-quality.
  5. 5
    Tune it to your dataEdit the prompts, filters, and field mappings so it matches how your team works.
  6. 6
    Test, then turn it onRun once against a sample, confirm the output, then enable the trigger.

Run this workflow in your colony.

14-day trial. No DevOps. No Sales call. Provisioned in under a minute.