# Matchmaking

URL: /systems/matching · Id: `system:matching`

> Matchmaking pairs buyers with Suppliers’ Offers, records the merchant of record on each Order, and takes the Startup’s fee through Stripe.

Matchmaking pairs buyers with [Suppliers](/business/nouns/supplier)’ [Offers](/business/nouns/offer), records the merchant of record on each [Order](/business/nouns/order), and takes the [Startup](/business/nouns/startup)’s fee through Stripe. Buyers and Suppliers deal with each other; the Startup settles the money between them.

## Summary
| Part | This System |
| --- | --- |
| Group | Commerce and fulfillment |
| Status | Beta: it works, and its Verbs may still change |
| Shelf | Reference: documented, never offered first |

You can ask:

- “Match this buyer with a supplier”
- “Take a 15% cut of every sale”
- “Settle this dispute between a buyer and a supplier”

## What you get
| Part | This System |
| --- | --- |
| Starts | Opt-in: it wakes with the Product Templates that need it ([Marketplace](/products/templates/marketplace), [Licensed-human marketplace](/products/templates/licensed-marketplace)). |
| Built from | [Payment rails](/systems/finance/payments), [Search](/code/platform/search), [Workflows](/code/platform/workflows) |

## Nouns it owns
| Noun | Definition |
| --- | --- |
| [Offer](/business/nouns/offer) | An Offer is a Product, under a Brand, at a price, on terms, made by a Startup. |
| [Order](/business/nouns/order) | An Order is a Customer’s commitment to buy one or more Offers once, moving from placed to paid, fulfilled, and closed. |
| [Supplier](/business/nouns/supplier) | A Supplier is a Person or Company that delivers work through a Startup’s human supply: recruited, credentialed, and paid out. |

## Verbs
| Verb | Object | Approval | Event |
| --- | --- | --- | --- |
| [Order.place](/business/nouns/order/place) | [Order](/business/nouns/order) | None | [`Order.placed`](/business/events/Order.placed) |
| [Dispute.decide](/business/nouns/dispute/decide) | [Dispute](/business/nouns/dispute) | Asks first; waits 1 business hour | [`Dispute.decided`](/business/events/Dispute.decided) |

## Events
| Direction | Event | How |
| --- | --- | --- |
| Emits | [`Order.placed`](/business/events/Order.placed) | By [Order.place](/business/nouns/order/place) |
| Emits | [`Dispute.decided`](/business/events/Dispute.decided) | By [Dispute.decide](/business/nouns/dispute/decide) |

## States
The lifecycle of an [Offer](/business/nouns/offer):

| State | Meaning | Moves to |
| --- | --- | --- |
| `draft` (first) | The Offer is being written: no party can see or accept it. | `published` by [Offer.publish](/business/nouns/offer/publish) |
| `published` | Parties can see the Offer, accept it and subscribe to it. | `withdrawn` by [Offer.withdraw](/business/nouns/offer/withdraw) |
| `withdrawn` | The Offer takes no new Customers; every Order and Subscription it made stays in force. | None: it ends here. |

Its other Nouns with a lifecycle: [Order](/business/nouns/order).

## Who operates it
| Part | This System |
| --- | --- |
| Accountable | [Delivery Manager](/agents/operations/delivery-manager) |
| Team | [Operations Team](/agents/operations) |
| Seat | A role agent holds it until a Human is seated. |
| Autonomy | `supervised` |

## Approvals and limits
| Verb | Rule | Detail |
| --- | --- | --- |
| [Dispute.decide](/business/nouns/dispute/decide) | A person says yes first | Waits 1 business hour |

## Processes that use it
| Process | How it uses it |
| --- | --- |
| [Pricing](/workflows/processes/pricing) | A Workflow writes [Offer](/business/nouns/offer) |
| [Delivery](/workflows/processes/delivery) | A Workflow writes [Order](/business/nouns/order) |
| [Supply](/workflows/processes/supply) | A Workflow writes [Supplier](/business/nouns/supplier) |
| [Screening](/workflows/processes/screening) | A Workflow writes [Offer](/business/nouns/offer) |
| [Launches](/workflows/processes/launches) | A Workflow writes [Offer](/business/nouns/offer) |

## Rail underneath
Stripe’s products (Stripe’s names): **Connect**, **Payments**.

| Noun | Stripe object | Source of truth |
| --- | --- | --- |
| [Offer](/business/nouns/offer) | **Product** (`product`) | The source of truth is db.sb, and Stripe holds a copy written from it. |

## Views and dashboards
| View | Shows | Metrics |
| --- | --- | --- |
| The [Delivery Manager](/agents/operations/delivery-manager)’s view | The Metrics its accountable Role answers for. | [Accepted outcomes](/agents/operations#accepted-outcomes) |

## Access
What each Access level may call here.

| Access level | May call |
| --- | --- |
| `owner` | Every Verb (16) |
| `admin` | All but 1 of 16: `Dispute.decide` |
| `member` | All but 1 of 16: `Dispute.decide` |
| `viewer` | Read only (6 of 16) |

## Import and export
None.

## Fees and pricing
Each sale is a Stripe destination charge settled on the Supplier; the application fee carries the Startup’s take and the platform fee, and the take reaches the Startup the same day.

## Availability and limits
| Part | This System |
| --- | --- |
| Status | Beta: it works, and its Verbs may still change |

## Compliance notes
The Supplier is the merchant of record on each Order, and the platform covers Stripe Connect losses; the take rate stays the founder’s.

Controls it carries:

- [Action completion](/systems/trust-and-governance/controls/action-completion)

## Related Systems
- [Earnings](/systems/payouts)
- [Supplier onboarding](/systems/supplier-onboarding)
- [Dispatch](/systems/dispatch)
- [Billing](/systems/billing): also holds [Order](/business/nouns/order)
- [Commerce](/systems/commerce): also holds [Order](/business/nouns/order)

## Example
A [Marketplace](/products/templates/marketplace) for voice actors matches a podcast network’s request with five actors by sample fit, rate and turnaround. The buyer books one. Matchmaking records the actor as merchant of record, collects payment, and keeps a 12% fee once the recording is accepted.