“Run all clients <€300k, all markets, +20% last cycle”
assert
plan-contains
1clarify “last cycle”
2smoke-test one first
3then the full run
LLM-as-judge
These asserts describe your Executable Intent
* Some may call these Evals or Behaviour Driven Development
A closer look
The exam question
name: safe-partitioning-for-concurrency
input:"Write a dbt model to get ASINs sold
by marketplace and day for table prov_a.table_b"intent: We need to select partitions explicitly so
that parallel runs work with hive/insert_overwrite
assert:
- type: sql-select # deterministicincludes:snapshot_day: "{{ snapshot_day }}"
marketplace_id: "{{ marketplace_id }}"
Candidate A ✓ passes
SELECT asin,
'{{ snapshot_day }}'AS snapshot_day, -- compiles to a literal{{ marketplace_id }}AS marketplace_id -- e.g. 3 AS marketplace_idFROM speed.shipments
WHERE marketplace_id = {{ marketplace_id }}GROUP BY asin
Candidate B ✗ fails
SELECTmarketplace_id, -- read off the rowCAST(ship_date AS date)AS ship_day,
COUNT(DISTINCT asin) AS asins
FROM {{ source('speed','shipments') }}
GROUP BY marketplace_id, CAST(ship_date AS date)
Both look like reasonable dbt. Only A can run partitions in parallel without overwriting.
A closer look, illustrated
Same model, different result
Same underlying model Claude Sonnet & same questions
You’re judging the whole setup, not just the model
The exam becomes the feedback loop
The exam stays fixed. Change anything beneath it until it passes
Degrees of agency
Use inference where it matters · engineer it away where it doesn’t
Takeaways
Qualify the capabilities you need. Not the model.
Make “good enough” executable
Use the exam to build, not just to score
Start with one behaviour your AI must get right · turn it into an exam · make any implementation pass it
Questions?
Alex Guglielmone Nemi · Mayank Hirani · Analyticon 2026