Behavioral ad systems compute relevance from a user profile they have built over time. Trust-safe relevance does the opposite: it computes relevance from public signals visible at the moment of the request — the conversation's own context, the sponsor's verifiable declaration of what they are offering, and the provenance headers attached to the content. The user is not modeled. The match is.
Relevance is the answer to: of all ads that could be shown right now, which is most appropriate for this moment? Behavioral systems answer it by ranking ads against a stored profile of the viewer. Trust-safe relevance answers it without that profile.
Three public inputs replace the profile:
A relevance function operating on these three inputs is auditable when the implementation publishes the scoring logic or a reference verifier — given the same public inputs, an independent reader can re-run the function and check the answer. A behavioral relevance function is not auditable in that sense, because the profile is private and time-dependent.
Three technical components, each with public academic grounding (see Technical foundations below), make this work:
None of these components require a user identifier. None require cross-site tracking. None build a profile that persists between requests.
The relevance is built from the request, not from the requester.
For a given moment with context hints C, against a set of sponsor
declarations S each with their own eligibility constraints, the
relevance score for a candidate ad s ∈ S is:
relevance(s, C, provenance) = match(s.intent_descriptor, C)
× eligibility(s, provenance)
× guardrail_weight(s)
match(...) — the sparse-vocabulary overlap between the sponsor's declared intent descriptor and the context hints of the moment.eligibility(...) — binary; does the sponsor's declaration permit placement against content of this provenance?guardrail_weight(...) — the bias-correction factor.None of these terms takes a user identifier as input. The function is closed over public, auditable signals.
| Behavioral | Trust-safe |
|---|---|
| Inputs include a stored user profile | Inputs are limited to the moment + public declarations + provenance |
| Relevance depends on history | Relevance depends on the current request |
| Score is opaque (dense embedding) | Score is interpretable (sparse vocabulary) |
| Audit requires accessing the profile | Audit requires only the public inputs |
| Privacy risk: the profile | Privacy risk: none in the same kind |
The trade-off: trust-safe relevance can lose information that behavioral systems retain (purchase history, prior conversions). What it gains: the relevance function is portable, auditable, and not bound to a single advertiser's data moat.
OpenAI Ads computes placement against conversation intent using context hints, landing-page content, and ad copy — the same family of public signals trust-safe relevance describes. The product implements one operational version of the broader trust-safe relevance idea on its own platform.
Trust-safe relevance is the protocol-layer description of how that works in general — not a competing product, but the framework that lets other agent runtimes implement the same approach without rebuilding the trust math from scratch.
OpenAI Ads can operate without the contextual-ads.ai protocol. Agent runtimes that want a portable, auditable relevance function benefit from it being defined.
The relevance function outputs a ranked candidate set. The verification step (on the sister page) is what runs against each candidate before the ad is rendered. The split:
The first is computed from context. The second is computed from the verifiable manifest at /.well-known/agent-ad.json. Together they make placement decidable without user tracking.
Cited as protocol foundations, not endorsements.