| Property | Description |
|---|---|
id | Unique identifier of the deliverable. |
jobId | The job this deliverable belongs to. |
typeId | The deliverable type this is an instance of — where its pricing and autonomy come from. |
taskId | The task whose execution produced it. The task’s conversation is where the operator talks to the agent about it. |
title | What this deliverable is, in one line — “COGS report — July 2026”. |
summary | Markdown. What was done, written for the customer — this is the text that ships with the result. |
reviewNote | Markdown. The agent’s note to the operator: what to check, what it was unsure about, with links to the underlying artifacts. Shown during review; never delivered. |
status | pending, review, approved, shipped, or voided — see the lifecycle. |
lineItems | The resolved price lines; the deliverable’s price is their sum. See line items. |
links | Standard element links to the work products behind the result — a canvas with the draft, a data table with the records, a connector. |
createdAt | When the record was created. |
approvedAt | When the operator approved it. Absent for pre-approved work that never went through review. |
shippedAt | When the agent marked it delivered. |
billedAt | When the monthly statement containing it was billed. Absent while the deliverable sits on the current open statement. |
Line items
Each entry oflineItems is one priced line:
| Property | Description |
|---|---|
label | What the line is for — “Build new connector”, “Customer request handled”. |
amountCents | The line total, in cents. 0 for included (free) work. |
quantity | Optional unit count for per-unit pricing; the label renders with it (”× 40”). |
menuKey | For menu-priced types — the key of the menu entry this line came from. |
Deliverable types
A deliverable type is a price-list entry on the job: one kind of result the job produces, agreed at setup.| Property | Description |
|---|---|
id | Unique identifier of the type. |
jobId | The job the type is configured on. |
name | What the job ships — “Monthly COGS report”, “Customer request handled”. |
description | What’s included, in a sentence. |
pricing | How deliverables of this type are priced. See pricing. |
autonomy | needs-approval — the operator approves each deliverable before it ships; pre-approved — agreed at setup, ships when done. |
Pricing
pricing is a discriminated union on kind:
| Kind | Shape | Meaning |
|---|---|---|
fixed | { kind, amountCents } | Every deliverable of this type bills the same amount — a monthly close at $900. |
per-unit | { kind, unitAmountCents, unitNoun } | Priced per unit within a deliverable: the line item’s quantity multiplies unitAmountCents. Use when one deliverable covers a countable batch (per record imported, per document processed). A type where every deliverable is exactly one unit behaves like fixed — prefer fixed there. |
menu | { kind, menu: [{ key, label, amountCents }] } | Every price agreed up front as a menu of named entries; each deliverable picks the entries the work turned out to require, as line items carrying the menuKey. |
free | { kind } | Included with the job — shipped and recorded, never billed. |
Task grants
Which deliverable types a task can produce is declared on its routine:| Property | Description |
|---|---|
typeId | The deliverable type the task may produce. |
automatic | The deliverable is created by Membrane when the task starts, and the task works against that record — e.g. one per incoming customer request. |