> ## Documentation Index
> Fetch the complete documentation index at: https://docs.semicola.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Object model

> Every buyer and seller object, what owns it, and where it is documented.

Semicola keeps two families of objects that meet at the AdCP wire. Buyers plan and run media;
sellers expose inventory and answer briefs. Both live on one platform with one sign-in, but an agent
works inside the family that matches its account.

<Note>
  Media buys and packages are never created directly. Staging creates draft media buys on a
  campaign, and launching turns them into AdCP transactions. You read and tune them; you do not POST
  them from scratch.
</Note>

## Buyer side

```text theme={null}
Organization
  └── Buyer account
        └── Advertiser                (brand card, currency, sandbox flag)
              ├── Creative            (assets in a format's slots, copy, click URL)
              └── Campaign            (brief, flight, budget, targeting, autonomy)
                    ├── Execution     (one fan-out of the brief; per-seller results)
                    │     └── Proposal  (a seller's priced answer)
                    └── Media buy     (one per seller and currency)
                          └── Package (one product; budget, pacing, creatives)
                                └── Delivery (impressions, spend, clicks, …)
```

| Object         | What it is                                                      | Id prefix | Guide                                                |
| -------------- | --------------------------------------------------------------- | --------- | ---------------------------------------------------- |
| **Advertiser** | The brand you buy for. Currency locks after its first campaign. | integer   | [Advertiser](/buy/advertiser)                        |
| **Campaign**   | The plan: brief, flight, budget, targeting and buys.            | `cmp_`    | [Campaign](/buy/campaign)                            |
| **Execution**  | One run of `request_proposals`.                                 | `exe_`    | [Product discovery](/buy/product-discovery)          |
| **Proposal**   | A seller's products, allocations and reasoning for one brief.   | `sfp1:`   | [Product discovery](/buy/product-discovery)          |
| **Media buy**  | One AdCP transaction with one seller.                           | `mb_`     | [Media buy lifecycle](/concepts/media-buy-lifecycle) |
| **Package**    | One product inside a media buy.                                 | `pkg_`    | [Campaign](/buy/campaign#media-buys-and-packages)    |
| **Creative**   | A finished ad built from library assets.                        | `cr_`     | [Creatives](/buy/creatives)                          |

## Seller side

```text theme={null}
Organization
  └── Seller account
        └── Storefront                 (listing, gates, plan)
              ├── Inventory source     (sales agent or ad server)
              │     └── Product        (channels, formats, priced options)
              ├── Playbook             (versioned instructions + pricing facts)
              ├── AI Business Rules    (versioned acceptance policy + gates)
              ├── Library              (materials and extracted selling points)
              ├── RFP                  (one brief received)
              │     └── Turn           (one immutable request and response)
              └── Approval             (a buy or creative waiting for a decision)
```

| Object                | What it is                                          | Id prefix       | Guide                                        |
| --------------------- | --------------------------------------------------- | --------------- | -------------------------------------------- |
| **Storefront**        | Your presence on Semicola.                          | slug            | [Sell media](/sell/overview)                 |
| **Inventory source**  | Where your inventory really lives.                  | —               | [Inventory sources](/sell/inventory-sources) |
| **Product**           | Something you sell, with priced options and floors. | —               | [Products](/sell/products)                   |
| **Playbook**          | How your agent pitches and prices.                  | version         | [Playbook](/sell/playbook)                   |
| **AI Business Rules** | What you accept and when a person reviews.          | version         | [AI Business Rules](/sell/ai-business-rules) |
| **RFP** and **turn**  | A brief and each response to it.                    | `rfp_`, `turn_` | [Demand inbox](/sell/demand-inbox)           |
| **Approval**          | A buy or creative held for a decision.              | `appr_`         | [Approvals & reviews](/sell/approvals)       |

## Where the two meet

A buyer's `request_proposals` becomes an AdCP `get_products` call on each storefront, which becomes
an RFP and a turn on the seller side. The turn's proposal comes back as a buyer-side proposal. When
the buyer launches, each media buy becomes an AdCP `create_media_buy` on the storefront, which may
become an approval before it forwards to the inventory source.
