# 20cuts — the first body

20cuts is a video studio that sells short product videos, and it is the first business that runs on busibody. A customer describes their product at a form on 20cuts.com, the studio produces a set of twenty short videos, four for each of the five sections of a finished video, and the customer picks one video from each section and the studio edits the picks together into the finished video. An agent operates the studio, a human owns it, and everything consequential the studio does either waits for the owner's approval or leaves a typed event in its log, and usually both.

## 01 · The limbs it runs on

The standard body has eight parts. 20cuts runs on five of them today: the site with its intake form, the database, mail, the approval queue, and the outbound machine, which is the part of the body that finds prospects and writes to them. The remaining parts attach as the work needs them.

| limb | work inside 20cuts today |
|---|---|
| site + intake | 20cuts.com takes the orders. A visitor fills in the intake form with their product's address, their audience, and their goal, and the submission becomes a lead in the database and an event in the log. |
| database | The database holds the leads, the jobs, and the event log itself. The tables are views computed from the events, so the state of the business can be rebuilt from the log alone. |
| mail | The studio sends and receives email at its own domain. A new lead is mailed a confirmation link, and cold outbound runs on a separate domain, so a deliverability problem cannot touch the primary one. |
| approval queue | Nothing is sent in the owner's name without the owner approving the exact text. An outbound message parks in the queue, and the send happens only after a human answers. |
| outbound machine | The studio researches prospects, produces a personalized teaser from each prospect's own public material, and stages the send for approval. Every teaser carries a unique signed token, so opens, views, and watch percentages attach to the exact recipient. |

## 02 · The events it records

Everything above leaves a typed event in an append-only log, and the schema of those events is the schema documented at [/docs/events.md](https://busibody.ai/docs/events.md): the reference there is copied from the code 20cuts runs. Types in funnel order:

- `site.lead.captured` — A visitor submitted the intake form.
- `site.lead.confirmed` — The lead clicked the confirmation link.
- `board.generated` — A board of candidate cuts was produced, with its size, cost, and wall-clock time.
- `candidate.watched` — The lead watched one candidate, with the percentage watched.
- `candidate.picked` — The lead picked a cut.
- `order.paid` — A payment arrived, with the tier and the amount.
- `outbound.send.queued` — A draft outbound message was staged for approval.
- `outbound.send.approved` — The owner approved the exact text. The actor on this event is always human.
- `outbound.sent` — The approved message went out.
- `outbound.viewed` — The recipient viewed the teaser, attributed by its token.
- `outbound.replied` — The recipient replied, with the sentiment recorded.

## 03 · One order, walked through

A founder submits the intake form on 20cuts.com: the product's address, who the video is for, and what it should achieve. The submission is recorded as `site.lead.captured`, and the studio mails the founder a confirmation link. When the founder clicks the link, `site.lead.confirmed` is recorded, and the studio generates the board: twenty candidate cuts of the same product, recorded as `board.generated` with the size, the cost, and the wall-clock time of the batch.

The founder watches the board, and each play is recorded as `candidate.watched` with how much of the candidate they watched. When they pick a cut, `candidate.picked` is recorded, and when a payment lands, `order.paid` records the tier and the amount. A candidate the founder never watched is information too, because the log shows the exact stage where each person stopped.

While this happens, the outbound machine produces teasers for prospects the studio found on its own, and every one of those messages stops at the approval queue. `outbound.send.queued` is recorded when a draft is staged, and the send happens only after the owner approves the exact text, which is recorded as `outbound.send.approved` with human as the actor.

## 04 · Where to see it

20cuts is live at [20cuts.com](https://20cuts.com). The platform described in these pages is extracted from bodies that already run, and 20cuts is the body it is being extracted from.
