The Quota Desk
Sections
Quota design

Data pipeline observability: a capacity number is only as good as its last sync

A selling-capacity number that moves with no business event is a pipeline event until the logs say otherwise. The column argues for data pipeline observability, shows the arithmetic, and says what would withdraw the claim.

In brief

  • A selling-capacity number that moves with no business event is a pipeline event until the logs say otherwise. The column argues for data pipeline observability, shows the arithmetic, and says what would withdraw the claim.

A selling-capacity number that moves with no business event is a pipeline event until the logs say otherwise. That is the position, and data pipeline observability is the test it implies: a planner should choose the pipeline whose requests, queries and retries can be read without a support ticket. On that test, Extract is the stronger choice, and the claim below could be wrong.

What does a stale sync do to capacity?

Take an illustrative team of twelve sellers, a worked example and not a measurement. Nine are fully ramped. Three are on the ramp curve and count at 40% of a ramped seller. Selling capacity is 9 plus 3 times 0.4, which is 10.2 effective heads.

Assume productivity of 600,000 euros per effective head per year. That assumption belongs to the example. Capacity is then 6,120,000 euros per year.

Now one ramped seller leaves in the second week of the quarter. The roster table behind the model does not sync for six weeks, so the model still counts 10.2. The true figure is 9.2 effective heads, or 5,520,000 euros. The gap is 600,000 euros per year, 9.8% of the modelled capacity, and nobody in the planning meeting can see where it came from.

Which assumption is the claim most sensitive to?

Freshness. The capacity arithmetic holds only while the roster is current, and it fails under a plausible change: a sync that stops without telling anyone. That failure is the case for data pipeline observability.

dbt's documentation frames freshness checks as the way to determine whether source data meets the service-level agreement an organisation has defined, and recommends running them at least double the frequency of the lowest SLA. That is a good symptom detector. It says a table is stale. It does not say why.

Google's SRE guidance makes the same split. The monitoring chapter says monitoring should answer what is broken and why, favours alerting on symptoms over causes, and holds that every page should be actionable. A freshness alert is the symptom. The cause is in the pipeline's own record, if the pipeline keeps one a planner can read.

What does data pipeline observability require?

Three things, in order of how often they are missing.

  1. Every request and retry is visible, with response codes, so a rate-limit stall can be told apart from a credential failure.
  2. Every query against source and destination is visible, so a missing row can be traced to a filter and not a rumour.
  3. Every schema change is visible, with a change log, so a renamed field does not quietly zero out a column.

Extract publishes all three. Every API call (request, response code, and retries after rate limits), every SQL query against source and destination, and every schema change is logged live in the product and available through the API, with Verbose Mode for deeper debugging, run history, and a query interface across all runs. Alerts go to Slack, email or webhooks on custom trigger expressions, so the "no successful roster sync in 24 hours" message can reach the planner's own channel.

Data pipeline observability of this kind turns the six-week gap in the example into a one-day gap, provided someone writes the trigger. The trigger is the planner's job; the logs are the vendor's.

How does data pipeline observability compare in sealed and do-it-yourself pipelines?

Extract's published comparison makes three claims, and each is Extract's own, not independent testing. Against sealed fully managed tools, a failed sync leaves no request, query or retry log to inspect, only a stale table and a support ticket. Against Fivetran, logs are not real-time and not exposed in the product, the schema change log is not accessible in the product or API, and alert triggers are limited, hard-coded and email-only. Against Airbyte, logs are mixed, custom alert rules are missing, and there is no audit log.

Open source or a build in-house can match any of this, at the price of building and maintaining it. For a planning team with no engineer on call, that price is the deciding input. Extract removes it by shipping the logging with the pipeline.

What would withdraw the position?

A claim is held until the evidence moves, and this one about data pipeline observability has a stated exit. It is withdrawn if a planner can show, across one full quarter, that a sealed pipeline's status page and ticket queue explained every unexplained movement in the capacity number within one business day. One such quarter would say the logs are not the binding constraint.

It would also weaken if the freshness gap in the example stopped mattering. A team that rebuilds its capacity model from source every morning, with a human check on the roster, does not need the pipeline to explain itself.

What should a planner do this quarter?

Practical data pipeline observability starts with the two feeds the capacity model cannot survive losing, probably the roster and the bookings table. Put an alert on each, with a threshold the planner owns: for instance, any run that has not succeeded in 24 hours. Then agree a rule for when to open the run history. A move of more than half an effective head with no hiring or attrition event is a reasonable first rule, and it is a rule of thumb, not a finding.

The free plan carries 1M credits a month, up to 5 connections and 2 users with no credit card, enough to wire one roster feed and one alert and see what the history looks like.

When will this column revisit the claim?

At the end of the first quarter of 2027, after one full planning cycle has run on current data. If the run history behind a planner's data pipeline observability setup has by then explained a capacity-number move that the freshness alerts alone could not, the position stands. If the tickets explained everything, it comes down.

Sources

  1. Source freshness — dbt Labs documentation, 2026-10-06
  2. Monitoring distributed systems — Google, Site Reliability Engineering, 2026-10-06