Skip to content

scumunna/spo-auditor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SPO Auditor

An open-source supply-path transparency auditor. It checks who actually sold each impression, against ads.txt, sellers.json, and the OpenRTB SupplyChain Object (schain), and flags unauthorized sellers, hidden hops, and fee-leaking resold paths.

The gap this fills

Supply-path transparency is a 2026 flashpoint: buyers cannot see what curators and exchanges actually do, or what fees they take. The primitives to check it already exist, ads.txt (who a publisher authorizes to sell its inventory), sellers.json (who an exchange's seller IDs really are), and the schain object (the disclosed chain of intermediaries). What is missing is an open tool that ties them together. This is that tool.

How it works

Feed it a bid log (impressions, each carrying a supply chain), the publisher's ads.txt, and the exchange's sellers.json. For every impression it walks the chain and checks each hop:

  • Is the seller authorized in the publisher's ads.txt? (If not, someone is selling inventory they should not.)
  • Is the seller ID actually in sellers.json, and is it disclosed or confidential?
  • Is the chain complete, or are there hidden hops?
  • How many reseller hops sit between the buyer and the publisher (where fees leak)?

Then it scores each path 0..1 and summarizes the findings.

Quickstart (bundled sample data)

pip install -e .
spo-auditor audit --sample

The sample set includes a clean direct path, an unauthorized seller, a resold multi-hop path, an incomplete chain, and a seller missing from sellers.json, so you see every finding type at once.

Audit your own data:

spo-auditor audit bidlog.json --ads-txt publisher_ads.txt --sellers-json exchange_sellers.json

What it flags

Code Meaning Severity
unauthorized_seller Seller not declared in the publisher's ads.txt high
not_in_sellers_json Seller ID absent from the exchange's sellers.json high
incomplete_chain schain.complete is 0, hops are hidden high
excessive_hops More intermediaries than the configured limit medium
confidential_seller Seller is marked confidential in sellers.json medium
reseller_hop Authorized but resold, not a direct path low

Relationship to adcp-trader

AdCP products do not carry supply signals (reach, hops, authorization). This auditor produces exactly those signals, so it is the natural enrichment source for the adcp-trader supply-path rule.

License

MIT. See LICENSE.

About

An open-source supply-path transparency auditor for programmatic advertising (ads.txt, sellers.json, schain).

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages