Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi Tag: Creative Competitive Exclusions and Page Caps #773

Open
thegreatfatzby opened this issue Aug 29, 2023 · 1 comment
Open

Multi Tag: Creative Competitive Exclusions and Page Caps #773

thegreatfatzby opened this issue Aug 29, 2023 · 1 comment

Comments

@thegreatfatzby
Copy link
Contributor

thegreatfatzby commented Aug 29, 2023

Background

Xandr SSP currently supports various ad quality controls:

  1. An SSP can set ad quality controls so that no individual creative of a certain category (alcohol, porn, guns) can appear on their site.
  2. They can set competitive exclusion controls so that, within all of the creatives showing on a page at the same time, there can be category exclusions where something like "coke ad next to pepsi ad" or "NRA ad next to Planned Parenthood Ad" can't occur.
  3. They can also ensure that per-page-caps are enforced, which can ensure that multiple ads from the same campaign, advertiser, or brand, are not served for the same page view. Xandr refers to these as buy and sell side page caps.

The first one is explcitly called out in the SSP KV flow, however I'm not sure how we'd do (2) or (3) in the current API, as the page has no insight into the other auctions running on the page.

How This Currently Works

Basically, a multi-tag request results in multiple auctions, each with its own auction ID, requests to DSPs, etc. However, the scoring of each auction and bid is not done in isolation. As the auctions are ranked, already determined winners can be taken into account to filter out bids that would violate the exclusions or caps.

Basically, the ranking of a multi-tag auction is able to maintain state about the entire request and ranking done so far, and use that as it continues to rank.

As discussed on the Aug 30, 2023 PATCG call, there are cases where this does not work perfectly when multiple SSPs are involved. However, there are many cases (we can work on numbers) where the first party ad server is able to support this.

The Problem

Given the lack of multi-tag support, the single bid nature of the auction, and lack of ability to share state between invocations of scoreAd (I'm fairly sure), we won't be able to support this at all, on device or BA.

Clients care about this quite a lot, based on my internal conversations and some conversations with publishers.

Question
How can we do this? Allowing some additional opaque processing to occur across all of the winners, with the ability to fall back to a default or other winner (having multiple bids would really help here) would help.

Proposal Seed

I've been noodling on better support for multi-tag auctions, both for on device and BA and can't say I have it yet. I think if we start to allow the bidding functions to return multiple bids based on multiple tags signaled in auctionSignals (I'd think using OpenRTB syntax), they could return bids per auction (based on ID), and we could then modify the ranking design to be scoreAds that takes a list of bids (as opposed to scoreAd taking one bid) but still deny scoreAds any interesting access (disk, future auctions, reporting) and require that the output of scoreAds is a map of the auctionID to the winning bid.

@thegreatfatzby thegreatfatzby changed the title Creative Competitive Exclusion Within All Auctions on Page Multi Tag: Creative Competitive Exclusion Within All Auctions on Page Sep 3, 2023
@thegreatfatzby thegreatfatzby changed the title Multi Tag: Creative Competitive Exclusion Within All Auctions on Page Multi Tag: Creative Competitive Exclusions and Page Caps Sep 3, 2023
@michaelkleber
Copy link
Collaborator

Discussed this a bunch in the live call on 2023-08-30, notes at https://github.com/WICG/turtledove/blob/main/meetings/2023-08-30-FLEDGE-call-minutes.md#notes

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants