# Service product files

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

> A product file with $type Service declares the work a Startup sells and warrants, its intake, steps, supply and default Outcome Contract.

A product file with `$type: [Service]` declares a [Service](/business/nouns/service): what the buyer sends, the steps, who checks each, and the default [Outcome Contract](/business/nouns/outcome-contract).

```text
products/
└── catalog-audit.mdx      Catalogmend's catalog audit
offers/
└── catalog-audit.mdx      $99 for up to 1,000 listings
```

## 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` |
| [`work`](/products/service/lifecycle) | Noun name | The work Noun it holds from intake until the Customer accepts | Yes | `planned` |
| [`intake`](/products/service/intake-forms) | list of `{ name, type, measure, required }` | What the buyer sends before work starts | Yes | `beta` |
| [`coverage`](/products/service/anatomy) | list of sentences | What it delivers, for which inputs, stated before any charge | Yes | `beta` |
| [`cadence`](/products/service/anatomy) | `once`, `recurring` or `standing` | Once per Order, on a period, or continuous and judged by rate terms | Yes | `beta` |
| [`steps`](/products/service/anatomy) | list of steps | Each a Verb with its Function, doer, checker, assurance and legal floor | Yes | `beta` |
| [`supply`](/products/service/supply) | list of `{ role, source }` | Who does the work, each owned, wrapped or recruited | No | `beta` |
| [`contract`](/products/service/outcome-contracts) | Outcome Contract terms | The default promise; an Offer may tighten it, never loosen it | Yes | `beta` |
| [`ofRecord`](/products/service/human-functions) | string | The partner of record when a step needs a licensed practice | No | `beta` |

## Examples
### Minimal
```mdx title="products/catalog-audit.mdx"
---
$type: [Service]
intake: [{ name: listings, type: integer }]
coverage: [Online catalogs up to 50,000 listings]
cadence: once
steps: [{ id: fix, verb: Order.deliver, function: agentic, doer: delivery-manager, checker: 'evaluator:listing-fix', provides: graded }]
contract: { done: Order.delivered, accept: customer, window: P5D, remedy: [{ kind: redo }], earns: Order.confirmed }
---
```

### Catalogmend
```mdx title="products/catalog-audit.mdx"
---
$type: [Service]
intake:
  - { name: storeUrl, type: url }
  - { name: listings, type: integer, measure: Listings in the catalog }
  - { name: sizeChart, type: file, required: false }
coverage: [Online catalogs up to 50,000 listings]
cadence: once
steps:
  - { id: import, verb: Order.start, function: code, doer: integration-engineer, checker: 'evaluator:catalog-schema', provides: measured }
  - { id: fix, verb: Order.deliver, function: agentic, doer: delivery-manager, checker: 'evaluator:listing-fix', provides: graded, after: [import] }
contract:
  done: Order.delivered
  statement: Every listing error fixed or explained.
  accept: customer
  window: P5D
  deadline: PT48H
  remedy: [{ kind: redo, within: P2D }, { kind: refund }]
  earns: Order.confirmed
---
Every listing error fixed or explained within 48 hours.
```

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

- the order form from `intake`, in the [Portal](/business/nouns/portal) and as the inputs a buyer's agent sends
- each step as an [Action](/business/nouns/action) run by its doer and graded by its checker, never the doer
- the publish check: [`Offer.publish`](/business/nouns/offer/publish) refuses an [Offer](/business/nouns/offer) whose remedy or basis the steps cannot back
- the Portal, the supplier app for recruited `supply`, and the review queue for `human` steps

## Good to know
- The book is [Service](/products/service); [its reference](/products/service/reference) lists every [Verb](/business/nouns/verb).
- `work`, a work [Noun](/business/nouns/noun) of its own, has status `planned`; the work states live on the [Order](/business/nouns/order).