# Dataset product files

URL: /code/file-conventions/products/dataset · Id: `page:code/file-conventions/products/dataset`

> A product file with $type Dataset declares one Noun's curated records, the Sources they come from, how often they refresh and what they cover.

A product file with `$type: [Dataset]` declares a [Dataset](/business/nouns/dataset): curated records of one [Noun](/business/nouns/noun) and the [Sources](/business/nouns/source) they come from.

```text
products/
└── rates.mdx      Ratebook's US sales-tax rates
nouns/
└── Rate.mdx       the one Noun it holds
```

## Reference
| Key | Type | Holds | Required | Status |
| --- | --- | --- | --- | --- |
| [`$type`](/code/file-conventions/products) | list | One or more of `App`, `API`, `Agent`, `Dataset`, `Service` | Yes | `live` |
| [`nouns`](/business/nouns/noun) | Noun names | The Nouns it exposes; a Dataset holds Things of exactly one | No | `live` |
| [`verbs`](/business/nouns/verb) | Verb ids | The Verbs a Customer may call | No | `live` |
| [`interfaces`](/business/nouns/interface) | list | The Interfaces it ships on; every kind by default | No | `live` |
| [`sources`](/products/data/sources-and-refresh) | Source ids | Where its records come from, each owned, wrapped or recruited | Yes | `beta` |
| [`refresh`](/products/data/sources-and-refresh) | `hourly`, `daily`, `weekly` or `monthly` | How often it re-reads every Source | No | `beta` |
| [`coverage`](/products/data/coverage) | list of sentences | The population and date range it answers for, never "complete" | Yes | `beta` |

## Examples
### Minimal
```mdx title="products/rates.mdx"
---
$type: [Dataset]
nouns: [Rate]
sources: [state-bulletins]
coverage: [Every US taxing jurisdiction]
---
```

### Ratebook
```mdx title="products/rates.mdx"
---
$type: [Dataset, API]
nouns: [Rate]
sources: [state-bulletins, county-ordinances]
refresh: daily
coverage: [Every US taxing jurisdiction, from 2024 on]
---
A rate for any US address in under 100 milliseconds.
```

## What it builds
The [SoftwareBuilder](/code/builders/software) compiles the file.

- the Dataset, its records as [Resources](/business/nouns/resource) at their Sources, each with its provenance
- for `API`: keyed lookups on the API and as MCP tools, with free misses and a free coverage check
- the Dataset's facts beside its price: record count, coverage, last refresh, Source and license

## Good to know
- The book is [a data product](/products/data); [its reference](/products/data/reference) lists every default and [Verb](/business/nouns/verb).
- `nouns` names exactly one Noun. A license is on the [Offer](/business/nouns/offer), never here.
- Add `API` to `$type` to sell lookups.