Skip to content

How it works

Agents negotiate. Only the human consents to their face being used.

  1. 1

    Sign in with World ID

    One World ID is one account, with both a creator profile and a brand workspace. Our backend runs the whole OpenID Connect exchange and validates the token; the browser only carries our session cookie.

  2. 2

    Creators set rules

    A consented photo, a price per ad, the longest licence they allow, and the categories they refuse. Political, adult, minors, impersonation and deception are refused for everyone. There is no creator agent.

  3. 3

    The brand's agent shortlists

    From a brief, usage, duration, maximum price and budget, the agent shortlists every listed creator with one line of why for each pick and skip.

  4. 4

    It makes the ad, unreleased

    A request that fits the creator's rules is generated straight away (with a face check against the creator's photo), and kept private. Nothing is paid or released yet.

  5. 5

    The creator approves the finished ad

    With a fresh World ID check (a new authentication for exactly their World ID, not their session), the creator sees the actual ad and approves, rejects (one new version) or denies. The approval is bound to the file's sha256, the brand, usage, duration and price.

  6. 6

    Big spends need the brand's human

    Above the workspace's limit per request, the agent pauses until the brand's own human approves that exact amount with a fresh World ID check. Below it, the agent spends on its own within the daily budget.

  7. 7

    Paid, then released

    Only an approved ad is paid for and released, once: one licence, one receipt. Deny, cancel or let it expire, and nothing is released or charged.

  8. 8

    Anyone can verify

    Verify takes any file (hashed in your browser) and answers Licensed, Revoked, Expired or Unknown, with the creator's fresh World ID approval, what made the file and the payment.

Where each check runs

Every check runs in our backend: the World ID token (signature, issuer, audience, nonce, auth_time, amr), the request it is bound to, the approval binding at release, the budget and the spend limit. Nothing the browser says is treated as proof.