Skip to content

Commit e28bf46

Browse files
authored
Update _strategy.md
Signed-off-by: Jarkko Moilanen <jarkko@vimo.fi>
1 parent 3fbe1bd commit e28bf46

1 file changed

Lines changed: 74 additions & 24 deletions

File tree

source/includes/_strategy.md

Lines changed: 74 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
# Data Product Strategy
22

3+
The `productStrategy` object captures the business intent behind a data product and **links it to a single higher‑level business KPI** it contributes to. It defines the objectives, the primary KPI at the business level, and the **product‑level KPIs** that indicate contribution. This makes value traceable, performance measurable, and governance lightweight.
34

4-
The `productStrategy` object captures the business intent behind a data product, enabling alignment between product specifications and organizational goals. It defines the objectives, success metrics (`KPIs`), and strategic alignment relevant to the product. This metadata can be used to trace value creation, measure performance, and communicate the product’s purpose to internal stakeholders, external consumers, and AI agents.
5+
By embedding business logic directly into the product specification, `productStrategy` ensures data products are not only technically sound but also strategically impactful.
56

6-
By embedding business logic directly into the product specification, `productStrategy` helps ensure that data products are not only technically sound but also strategically impactful.
7-
8-
9-
## Optional attributes and elements
10-
> Example of product strategy and KPIs usage:
7+
## Example
118

129
```yml
1310
schema: https://opendataproducts.org/dev/schema/odps.yaml
@@ -16,34 +13,87 @@ product:
1613
productStrategy:
1714
objectives:
1815
- en: Reduce emergency response time
19-
kpis:
20-
coverage:
16+
17+
contributesToKPI:
18+
id: bizkpi-city-response-time
19+
name: City Emergency Response Time
20+
description: Average minutes from incident to first responder arrival
21+
unit: minutes
22+
target: 5
23+
direction: at_most
24+
timeframe: "by Q4"
25+
26+
productKPIs:
27+
- id: kpi-detection-coverage
2128
name: Event Detection Coverage
22-
description: Percentage of city-reported events captured in real time
23-
objective: 95%
29+
definition: % of reported incidents captured in real time
2430
unit: percentage
31+
target: 95
32+
direction: at_least
33+
frequency: hourly
34+
calculation: detected_events / reported_events
2535

26-
time-to-insight:
36+
- id: kpi-time-to-insight
2737
name: Average Time to Insight
28-
description: Median time between event occurrence and product update
29-
objective: < 60 seconds
38+
definition: Median time from event occurrence to product update
3039
unit: seconds
40+
target: 60
41+
direction: at_most
42+
calculation: p50(update_ts - event_ts)
43+
44+
relatedKPIs:
45+
- id: bizkpi-traffic-congestion
46+
name: Traffic Congestion Index
47+
unit: percentage
48+
target: -10
49+
direction: decrease
50+
3151
strategicAlignment:
3252
- en: Smart City Vision 2030
3353
```
3454
55+
## Attributes
56+
57+
| Element | Type | Options | Description |
58+
|---|---|---|---|
59+
| **productStrategy** | object | – | Top‑level block that connects the data product to business goals and KPIs. |
60+
| **objectives** | array of objects | language‑tagged strings | Business objectives the product supports, written in natural language. |
61+
| **contributesToKPI** | object | required | **Single higher‑level business KPI** (from SMART objectives) that this product is accountable for. |
62+
| **id** | string | optional | Identifier of the business KPI (use shared IDs for roll‑ups). |
63+
| **name** | string | required | KPI name. |
64+
| **description** | string | optional | Human‑readable description. |
65+
| **unit** | string | e.g., `percentage`, `minutes`, `s` | Unit of measurement. |
66+
| **target** | number/string | – | Target value for the KPI. |
67+
| **direction** | enum | `increase`, `decrease`, `at_least`, `at_most`, `equals` | Desired direction of movement. |
68+
| **timeframe** | string | optional | When the target should be met. |
69+
| **productKPIs** | array | optional | KPIs measured **at product level** that influence `contributesToKPI`. Useful for contribution analysis and governance checks. |
70+
| **relatedKPIs** | array | optional | Secondary/cross‑unit KPIs to monitor side‑effects and additional value (informational; not for prioritization). |
71+
| **strategicAlignment** | array | language‑tagged strings | Strategic initiatives, policies, or visions the product aligns with. |
72+
73+
### KPI object (for `productKPIs` / `relatedKPIs`)
74+
| Field | Type | Description |
75+
|---|---|---|
76+
| `id` | string | Identifier (recommended for cross‑product roll‑ups). |
77+
| `name` | string | KPI name. |
78+
| `definition` | string | What exactly is measured. |
79+
| `unit` | string | Unit of measurement. |
80+
| `target` | number/string | Target value. |
81+
| `direction` | enum | `increase`, `decrease`, `at_least`, `at_most`, `equals`. |
82+
| `timeframe` | string | Optional deadline for the target. |
83+
| `frequency` | string | Measurement cadence (e.g., hourly, daily, monthly). |
84+
| `owner` | string | Responsible role/team (optional). |
85+
| `dataSource` | string | Where the KPI is computed (optional). |
86+
| `calculation` | string | Human‑readable formula (optional). |
87+
88+
89+
90+
## Governance‑by‑Design checks (Minimum Lovable Gates)
3591

36-
| <div style="width:180px">Element name</div> | Type | Options | Description |
37-
|--------------------------------------------|------------------|--------------------------|-----------------------------------------------------------------------------|
38-
| **productStrategy** | object | - | Top-level block that connects the data product to business goals and KPIs |
39-
| **objectives** | array of objects | language-tagged strings | Business objectives the product supports, written in natural language |
40-
| **kpis** | array | `$ref` or inline object | Key performance indicators that define success for this product |
41-
| **name** | string | - | Name of the KPI |
42-
| **description** | string | - | Human-readable description of the KPI |
43-
| **unit** | string | e.g., `percentage`, `s` | Unit of measurement for the KPI |
44-
| **objective** | string/number | - | Target value to be achieved |
45-
| **strategicAlignment** | array | language-tagged strings | Strategic initiatives, policies, or visions the product aligns with |
46-
92+
- **Required:** `contributesToKPI.name` present.
93+
- **Recommended:** ≥1 `productKPIs` with `unit`, `target`, and `calculation`.
94+
- **Optional:** `relatedKPIs` for secondary/side effects.
95+
- **Traceability:** use shared KPI `id`s to enable cross‑product roll‑ups against the same business KPI.
4796

97+
---
4898

4999
Bring your ideas, questions, and use cases — [join the ODPS Discord](https://discord.gg/7KfnFxAc) and get involved!

0 commit comments

Comments
 (0)