Module 4 - Reveal as OTS

Supplying an advanced modeler with deterministic OTS data

The structure of an OTS export is relatively flexible. The most important things to keep in mind are the aggregation and privacy limits that are imposed by the system. Below are a few proposed structures

OTS Outputs

Role Required: MODULE_4_MODELER

The below outputs are what is made available to Module 4 modelers only; these are not publicly accesible datasets and thus are not subject to client-grade aggregation thresholds.

Outputs relating to the OTS metrics layer are split into two classes of proposal: sketch-based vs. device based.

Sketch Based Outputs

Modelers will need to be able to perform set cardinality operates against the OTS layer. Modelers will need to know how many unique devices were observed in any particular "bin" (e.g. a single frame on a single day in a single hour), but also be able to combine these bins with others and scaffold up aggregated unique counts.

We prefer to leverage probabilistic datasketches as a way to provide building blocks needed to compute aggregated reach on arbitrary dimensions. Using a datasketch helps preserve privacy (MAIDs are hashed and inserted into a binary datastructure, cannot be pulled out) and reduce computational complexity (dataset size is bounded at the expense of approximations, but the error can be tuned).

We use either HLL or Theta sketches used for count distinct operations. HLL is popular and supported natively in many environments (e.g. Snowflake). Theta is useful if intersections are required (i.e. number of unique people exposed to both asset A and asset B).


Daily Asset Level OTS output - Sketch Based

  • asset_id- AMS ID for a particular asset/structure
  • frame_id - AMS ID for a frame / face
  • date - report date
  • ots_impressions - number of device-level OTS impressions
  • device_sketch - HLL or Theta sketch used for count distinct operations

28-Day Hour of Week OTS Output - Sketch Based

Using a 4-week observation window (standard buying cycle in OOH), aggregate by hour of week and sum impressions and union reach over all 4 occurances.

  • asset_id
  • frame_id
  • start_date - start date of analysis period, e.g. 2025-02-01
  • end_date - end date of analysis period, e.g. 2025-02-28
  • hour_of_week - int (0-167)
  • ots_impressions - number of device-level OTS impressions, summed over all occurances
  • device_sketch - unioned over all occurances

Device-Based OTS Outputs

If the modelers are planning to create frequency curves (distinct from average frequency), datasketches can present some challenges. While it is possible to leverage a Tuple Sketch to model frequency curves, modelers may find it too cumbersome. In this case, we can export device-level exports, to allow modelers to directly compute reach and frequency for whatever aggregation scope they'd like. The devices are hashed using a one-way hash function with a seed / private key that would be kept unknown to them, to avoid re-matching.


Day Asset Level OTS Output - Device Based

  • asset_id- AMS ID for a particular asset/structure
  • frame_id - AMS ID for a frame / face
  • date - report date
  • device_id - hashed device ID
  • ots_impressions - number of device-level OTS impressions

28-Day Hour of Week OTS Output - Device Based

Using a 4-week observation window (standard buying cycle in OOH), aggregate by hour of week and sum impressions and union reach over all 4 occurances.

  • asset_id
  • frame_id
  • start_date - start date of analysis period, e.g. 2025-02-01
  • end_date - end date of analysis period, e.g. 2025-02-28
  • hour_of_week - int (0-167)
  • device_id - hashed device ID
  • ots_impressions - number of device-level OTS impressions, summed over all occurances

LTS Context

Reveal also provides aggregated datasets with mobility-derived features for the purposes of modeling LTS. These datasets do not purport to establish LTS metrics, but rather may be used by Module 4 Modelers to help inform their LTS and Audience models.

28-Day Hour of Week LTS Context

Bins can be customized, but should be fixed

  • asset_id
  • frame_id
  • start_date - start date of analysis period
  • end_date - end date of analysis period
  • hour_of_week - int hour of week (0-167)
  • dwell_hist - array[int] - histogram of dwell with fixed bins
    • 6 bins - [0, 1), [1, 2), [2, 5), [5, 10), [10, 20), [20, ∞)
  • angle_hist - array[int] - histogram of angles with fixed bins
    • 6 bins - [0, 10), [10, 20), [20, 30), [30, 45), [45, 60), [60, ∞)
  • distance_hist - array[int] - histogram of distance in meters with fixed bins
    • 7 bins - [0, 10), [10, 25), [25, 50), [50, 100), [100, 200), [200, 400), [400, ∞)