Bringing Transparency to Targeted Political Advertising: PoliDashboard Goes Open Source

We are excited to announce that PoliDashboard is now available as an open-source piece of software on Github. Anyone can now review and modify the code to make improvements and add new features as they see fit.

PoliDashboard is a data visualization dashboard that is accessible to the public and is designed to help voters, journalists, researchers and others keep track of political spending on Meta’s products. It provides visual representations of trends related to political and social issue ads on Facebook, Instagram, and other products from Meta. Currently, PoliDashboard tracks and analyses ads from seven different countries, including Canada, the United States, the United Kingdom, Australia, Brazil, Germany, and Denmark. The data is automatically updated every eight hours through Meta’s Ads API. More countries will be added in the future depending on available resources. (Please contact us at [email protected] if you have any questions or if you are interested in collaborating with us on a dashboard for your country.)

Figure 1: PoliDashboard Front-end and Source Code

Front-end interface 
Source Code on GitHub

How you can help to bring more transparency to targeted political advertising across Meta’s products

By releasing PoliDashboard as an open-source code on GitHub, we aim to encourage other researchers and developers to build upon our initial efforts. For instance, one promising avenue is to add additional metadata elements available via Meta’s Ads API, such as the ad’s creative caption, title, and description (see Table 1 below). By utilizing techniques from natural language processing or visual analytics to analyze these fields, the application could provide further context regarding the types of topics and issues being addressed by different political advertisers.

Table 1: Meta Ad Library API data points

Fields used by PolidashboadNew fields to be added
ad_creation_timead_creative_link_captions
ad_creative_bodiesad_creative_link_descriptions
ad_delivery_start_timead_creative_link_titles
ad_delivery_stop_timead_snapshot_url
bylines
currency
delivery_by_region
demographic_distribution
estimated_audience_size
impressions
languages
page_id
page_name
publisher_platforms
spend

The release of the code for PoliDashboard as an open-source project is a major step forward for transparency in political advertising. We look forward to seeing how others build on our work to create even more powerful tools for understanding political advertising on social media.



More About the Current Version of PoliDashboard

One of the main features of PoliDashboard is its ability to filter ads by country and advertiser, which allows users to quickly discover ads that are of interest to them and view the overall ad spending and impression stats of each advertiser.

For instance, users can:

  • Filter ads based on political party or candidate to estimate the amount of money an advertiser is spending on their online campaigns and who they are targeting based on the total number of impressions garnered by their ads.
  • Track ad spending over time for political advertisers to observe spending patterns in near real-time throughout an election period.

Making the Invisible Visible

To demonstrate the usefulness of PoliDashboard for transparency purposes, let’s consider the following example of a Facebook ad by Biden that was paid for by the Democratic National Committee in Figure 2. If you are only interested in knowing about the reach of just this one ad, the two charts as provided by Facebook are useful. But it is not very helpful if you are trying to understand the overall ads targeting and communication strategy of an advertiser over time. 

Figure 2: Meta’s Ads Library: Charts in relation to a Sample Ad by Biden

Box Plots to the Rescue

To provide voters with an overview of how individual advertisers, such as political parties, are spending their ad budget on Meta’s various platforms as a whole and whom they are targeting with their various ads, PoliDashboard automatically aggregates different data points such as age and gender (Figure 3) and by location (Figure 5) for all ads purchased by an individual advertiser using box plots charts.

Figure 3: PolidaDashboard Summary Charts

For instance, in the week leading up to the 2022 mid-term election, the DNC ran nearly 600 ads. The chart on the left in Figure 3 displays the number of active ads for each day, categorized based on the price range paid by the advertisers. From this chart, we can observe that Biden’s page mostly purchased cheaper ads, costing less than $100 (as indicated by the yellow arrow). Additionally, PoliDashboard aggregates and visualizes gender and age breakdowns using box plots, as shown in the chart on the right in Figure 3. Here, we can see that ads from Biden’s page have a higher reach among older women (particularly those aged 65 and above) compared to other age groups or genders (indicated by the red arrow).

Why Use Box Plots?

A box plot is a convenient way to summarize a series of data points (a dataset). The beginning and end of the line indicate the min and max value respectively, excluding outliers (Figure 4). Data points displayed before or after the min and max values are considered to be statistical outliers. In our case, outliers are one-off ads that tend to target a particular demographic group more or less than usual. 

The “box” in a box plot represents where 50% of all data points reside. The vertical line inside the box represents the median value, often defined as the “middle” value because it divides the lower half from the higher half of values in the dataset. In our context, the median value can be considered as a “typical” percentage of that demographic group targeted by the advertiser during on a given time period. 

Figure 4: How to read and interpret a Box Plot Chart

Each dot in the sample box plot (Figure 5) represents a single ad. Hover over any dot on the chart to see what state or province were shown that particular political ad on Meta’s platforms (labeled as A in Figure 5).

If all other dots that appear on the chart (other than the dot you hovered over) is at or close to the 0% mark on the x-axis (labeled as B), it suggests that that particular ad was only (or mostly) targeted at that specific location (or demographic group) and no other.

Users can also click on the dot to see the actual ad and all of its stats as provided by Meta’s Ads Library in a new window.

Figure 5: Sample Box Plot Chart