
DataPilot - AI Teammate for Data Teams. The team behind #dbtpoweruser vscode extension
Sunnyvale, California
Joined February 2024
- Tweets62
- Following7
- Followers30
- Likes22
Long dbt models with many ref() calls and macros are hard to follow. The compiled SQL explains the whole model, but you usually need one piece of it.
Hover over a macro to see what it does and which models use it. Or ask AI to explain one transformation at a time.
Debugging dbt means you untangle Jinja and copy compiled SQL into another tool. The bug often sits in one CTE, and you check them one at a time.
Profile each CTE to see its row count. A hidden jump in rows points at the bad join, such as a fan-out that duplicates rows.
You change one column. Table-level lineage flags every downstream model, and you check each one by hand. In a large dbt project the graph is too complex to read by eye.
It works in VS Code or Cursor, and AI chat answers questions about the model and its upstream models.
AI writes a dbt model in seconds. You still read every line before you merge it. A model can run green and still return wrong rows: the tests pass, and the totals are off.
It catches correctness bugs before they reach a dashboard, and cost problems such as SELECT * in a CTE.
Ever wanted to drop a dbt column and had no idea what reads it? Say it is legacy_segment_code in dim_customer. Table lineage hands you 40 downstream tables to open by hand. Column lineage names the 2 models that actually read it... ↓
So before we trust a graph, we pick the field the team argues about most. We ask the tool for its consumers, then count them by hand. The gap between the two counts is your coverage number.
How do you check that your lineage graph covers the models that matter? The guide has 8 use cases:
altimate.ai/blog/column-leve…
github.com/AltimateAI/vscode…




