# build

Docs for TrueQuery 0.1.6. Build a pipeline, load or model end to end, with a contract, code, tests, checks and a receipt.

**For data and analytics engineers.** In Claude Code this is a `/truequery` slash command. In Muse Code, describe the task in your own words, or load the skill with `/skill truequery`. In Codex the skill isn't here yet, only the checks.

```
/truequery build a customer lifetime value mart
```

It follows [the procedure](https://analytically.ai/truequery/docs/procedure.md) from start to finish, in your stack. You get code, tests that ran, a contract and a receipt.

`model`, `ingest` and `orchestrate` also work: they start `build` with that intent.

## What it asks

It works out whether this is a load, a transform or a schedule, then asks only what it can't find out, each with a default:

- **A load:** full, incremental or CDC; the unique key; the late-data window; re-runs; schema drift.
- **A transform:** the grain, the keys, and the incremental key and lookback.
- **A schedule:** schedule and time zone, catch-up and backfill, retries, alerting.

## A real build

On the demo shop, three of the four questions it asked:

1. "What kind of lifetime value should the mart hold?" **Realized, to date (Recommended)**
2. "Should subscription revenue (MRR) count toward LTV, or only order revenue?" **Orders only, MRR shown apart (Recommended)**
3. "Which customers get a row?" **All customers, flagged (Recommended)**

From the result:

> - One row per customer: 600 rows, matching stg_customers exactly.
> - Test and deleted customers: they keep their rows but show zero lifetime value. Use is_ltv_population to filter them out for headline figures.

## When a request conflicts

If you say "just append the feed, keys don't matter" and a contract says otherwise, it tells you before writing, and follows the contract unless you confirm. It never rebuilds raw data unasked.
