Library · Data Practice OS
Data product canvas
Template · Published · Source reviewed
Fill this in before building. Keep it in the product's repo as PRODUCT.md, next to the contract
YAML. A product without a named owner and at least one named consumer is not a product yet.
1. Identity
| Field | Value |
|---|---|
| Product name | e.g. licensing.active_licences |
| Domain | e.g. Licensing |
| Product owner (accountable) | name, role |
| Technical owner (on call) | team |
| Platform and catalog of record | Snowflake / Databricks; see ADR-004: One catalog of record per table |
| Table format | Native / Iceberg (ADR-002: Apache Iceberg as the interchange table format) |
| Status | proposed / beta / GA / deprecated |
2. Purpose and consumers
| Consumer | Use | Needs (freshness, grain) |
|---|---|---|
The question this product answers, in one sentence:
3. Sources and lineage
| Source system | Object | Load method (batch/CDC) | Legacy equivalent being replaced |
|---|---|---|---|
4. Contract (summary; the full contract lives in YAML)
| Element | Value |
|---|---|
| Grain | one row per ... |
| Primary key | |
| Schema | link to the dbt model contract / ODCS file |
| Freshness SLA | e.g. by 06:00 AEST each business day |
| Availability SLA | |
| Breaking-change policy | e.g. versioned; 90 days notice |
| Support channel |
Minimal Open Data Contract Standard skeleton:
apiVersion: v3.2.0
kind: DataContract
id: licensing-active-licences
name: Active licences
version: 1.0.0
status: active
domain: licensing
team:
name: licensing-data
members:
- username: [email protected]
role: Owner
schema:
- name: active_licences
physicalName: gold.licensing.active_licences
properties:
- name: licence_id
logicalType: string
primaryKey: true
required: true
- name: licence_class
logicalType: string
required: true
- name: holder_postcode
logicalType: string
classification: SENSITIVE
quality:
- type: sql
description: No licence expired before today
query: select count(*) from active_licences where expiry_date < current_date
mustBe: 0
slaProperties:
- property: latency
value: 1
unit: d
5. Quality
| Check | Type (schema/freshness/volume/rule) | Threshold | Action on failure |
|---|---|---|---|
6. Security and access
| Field | Value |
|---|---|
| Highest classification (mandated scheme) | OFFICIAL / SENSITIVE / PROTECTED |
| Contains personal information? | Y/N; which columns |
| Masking and row policies | tag-driven; list tags |
| Who may access (roles/attributes) | |
| Retention and disposal (records schedule) | |
| Shared outside the organisation? | with whom, under what agreement |
7. Semantics
| Metric / dimension | Definition | Synonyms | Defined in |
|---|---|---|---|
| Active licences | count of licences with status = current and expiry >= today | current licences, valid licences | dbt Semantic Layer |
Example questions this product should answer (these become the text-to-SQL evaluation set):
1. 2. 3.
8. AI use
| Field | Value |
|---|---|
| Approved for AI use? | Y/N; link to the AI use case intake and risk triage record |
| Allowed models / routes | per ADR-005: Governed model access through an AI gateway |
| Columns excluded from AI context | |
| Indexed for search / embeddings? |
9. Cost
| Field | Value |
|---|---|
| Cost centre / tag | |
| Expected monthly compute | |
| Budget alert |