Skip to main content
Deliverables are the results a job produces: each is one record of shipped (or in-progress) work, priced from the job’s deliverable types and billed on the organization’s monthly statement. How a deliverable moves from creation to shipped is described in Deliverable Lifecycle. They have the following properties:
PropertyDescription
idUnique identifier of the deliverable.
jobIdThe job this deliverable belongs to.
typeIdThe deliverable type this is an instance of — where its pricing and autonomy come from.
taskIdThe task whose execution produced it. The task’s conversation is where the operator talks to the agent about it.
titleWhat this deliverable is, in one line — “COGS report — July 2026”.
summaryMarkdown. What was done, written for the customer — this is the text that ships with the result.
reviewNoteMarkdown. 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.
statuspending, review, approved, shipped, or voided — see the lifecycle.
lineItemsThe resolved price lines; the deliverable’s price is their sum. See line items.
linksStandard element links to the work products behind the result — a canvas with the draft, a data table with the records, a connector.
createdAtWhen the record was created.
approvedAtWhen the operator approved it. Absent for pre-approved work that never went through review.
shippedAtWhen the agent marked it delivered.
billedAtWhen the monthly statement containing it was billed. Absent while the deliverable sits on the current open statement.

Line items

Each entry of lineItems is one priced line:
PropertyDescription
labelWhat the line is for — “Build new connector”, “Customer request handled”.
amountCentsThe line total, in cents. 0 for included (free) work.
quantityOptional unit count for per-unit pricing; the label renders with it (”× 40”).
menuKeyFor 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.
PropertyDescription
idUnique identifier of the type.
jobIdThe job the type is configured on.
nameWhat the job ships — “Monthly COGS report”, “Customer request handled”.
descriptionWhat’s included, in a sentence.
pricingHow deliverables of this type are priced. See pricing.
autonomyneeds-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:
KindShapeMeaning
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:
PropertyDescription
typeIdThe deliverable type the task may produce.
automaticThe deliverable is created by Membrane when the task starts, and the task works against that record — e.g. one per incoming customer request.