Skip to content

Allow More Expressive Scoring and Sorting: Two (or N) Tiered Scoring by Score Ad #1073

Open
@thegreatfatzby

Description

Given the current structure of the scoring process, in which each bid is evaluated independently by user space code, and then the Chromium code sorts and returns the highest scoring bid based on the doubles returned byi scoreAd (i.e. if we don't shift to something like this), it would be very helpful if we could score and sort in a more expressive way. Ideas include a) return multiple doubles, i.e. a tuple (x,y) where the Chromium space code would rank first on x and then on y or even b) allow any return value and then a sort function (although I think that basically gets us to #773 ).

This would be helpful for supporting cases where ranking can occur within priority groups or private marketplaces. An example from our sell side tech is that a seller will set priorities on various demand sources, and if an otherwise higher scoring ad from a group with a lower priority is submitted, the higher priority one still wins (see here).

Today we can accomplish this by doing some tricks with multiplying the "more important" value, x in the tuple above and priority from the example, by some large number (say 1,000,000) and then adding the "less important" value in without a multiple. However, the dimensional reduction comes at more than just a philosophical cost: a) this requires constraining the rest of your scoring to accommodate that multiple and b) can lead to an escalating series of tricks to try to express a priority in a given situation (i.e. you can't just say "make this one win by scoring it to 10,000, b/c now 10,000 may not be a large number".

Absent scoreAds, a user space sort function would be ideal...but since I think that will be seen as the same privacy model violation as scoreAds, I'll go with the Double Tuple for this issue. Ideally the number of dimensions expressed would be more than 2, although I don't think it needs to be unlimited, could probably cap at 5 and give a lot of flexibility for expressing priority, "win now", etc.

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions