{
 "rules": "Reconcile the two independent scoring passes into final capability scores.\n\nInputs : evidence/profiles/V1-V3.json (first scorer), evidence/verify/RESCORE.json (second,\n         blind scorer), plus explicit fact-check overrides listed in OVERRIDES below.\nOutputs: data/scores_final.json, data/tables/score_reconciliation.csv,\n         evidence/verify/RESCORE_SOURCES.json (URLs cited only by the second scorer,\n         registered as sources RS-S##), and summary agreement statistics.\n\nRules (published in chapter 9 and applied mechanically):\n R1 Same value from both scorers -> keep it.\n R2 Both numeric and different -> take the lower (conservative) unless the higher is\n    backed by grade-A evidence and the lower is not, in which case take the higher.\n R3 One numeric, one n/e -> take the numeric if its evidence grade is A or B; if C, n/e.\n R4 0 versus n/e -> 0 only if the 0 rests on grade-A documentation of absence; else n/e.\n R5 n/a versus a value -> take the value (the dimension was judged to apply).\n R6 Fact-check overrides (OVERRIDES) are applied last and logged.\n",
 "stats": {
  "cells": 176,
  "exact": 94,
  "within1": 93,
  "both_numeric": 97,
  "ne_disagree": 50,
  "changed_from_first": 66,
  "exact_pct": 53.4,
  "within1_pct_of_both_numeric": 95.9
 },
 "products": [
  {
   "vendor_id": "applovin",
   "scores": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting API exposes ROAS/ad_roas and retention (1-28d) metrics plus bidding_and_billing_method; Campaign Management API supports automated bidding to a cost/ROAS target.",
     "source_ids": [
      "V1-S05",
      "V1-S06"
     ]
    },
    "D2": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No official Axon Ads Manager documentation describing a retargeting/re-engagement campaign product or mechanism was found or independently opened this session.",
     "source_ids": []
    },
    "D3": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Only SKAN evidence for advertisers: AppsFlyer setup toggle 'Share SKAN transaction ID'. No SKAN 4, conversion-value, AdAttributionKit or SKAN reporting documentation; the SKAN page is for MAX demand partners.",
     "source_ids": [
      "RS-S02",
      "V1-S02"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Official guidance documents iterative testing across video/playable/static/DPA formats and a playable-ad spec; no disclosed randomized or allocation-based testing methodology found.",
     "source_ids": [
      "V1-S03",
      "V1-S07"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Advertiser report exposes hashed source-app ID ('site ID'), source application name, placement_type and encrypted placement ID; {APP_ID} macro to MMP. No documented advertiser block/allow-list control found.",
     "source_ids": [
      "V1-S05",
      "RS-S06"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Billing documents prepay daily charges and bidding strategies (target goal with CPI billing; auto-bidding with CPM billing). Cost is a single advertiser-spend figure; no media-cost vs fee separation or bid-level cost data.",
     "source_ids": [
      "RS-S07",
      "RS-S01"
     ]
    },
    "D7": {
     "score": 2,
     "availability": "managed",
     "evidence_grade": "B",
     "rationale": "AppLovin's own blog describes running geo-holdout incrementality experiments for clients with a stated method (>=90% power, 20-50% holdout) -- available on request/managed, not a self-serve standardized product.",
     "source_ids": [
      "V1-S04"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting API returns aggregated JSON/CSV data across campaign/creative/platform/country/device/placement dimensions; no impression-level export documented.",
     "source_ids": [
      "V1-S05"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Axon Campaign Management API documents POST endpoints to create/update campaigns and creative sets and to set global or country-level budgets.",
     "source_ids": [
      "V1-S06"
     ]
    },
    "D10": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Wurl/AppDiscovery CTV inventory is bought on a CPI basis with MMP attribution to installs; no stated causal/incrementality measurement method specific to CTV was documented.",
     "source_ids": [
      "V1-S08",
      "V1-S09"
     ]
    },
    "D11": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "FY2025 10-K states e-commerce/web-advertiser expansion as a stated objective; named non-gaming case studies include Safe Sleeve, Sweet Flexx and Kikoff (fintech); no filing-level quantification of non-gaming revenue share was found.",
     "source_ids": [
      "V1-S01",
      "V1-S03",
      "V1-S09"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Campaign Management API goal types CPI, CPE, CPP, AD_ROAS, CHK_ROAS (IAP ROAS) and BLD_ROAS with DAY7/DAY28 targets; help center recommends IAA/IAP/Blended ROAS campaigns (IAA/Blended require MAX mediation).",
     "source_ids": [
      "RS-S01",
      "V1-S07"
     ]
    },
    "D2": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "No re-engagement/retargeting campaign type, audience upload or suppression control found in the app-advertiser help center, API docs or MMP setup pages opened.",
     "source_ids": [
      "V1-S10",
      "RS-S02"
     ]
    },
    "D3": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Only SKAN evidence for advertisers: AppsFlyer setup toggle 'Share SKAN transaction ID'. No SKAN 4, conversion-value, AdAttributionKit or SKAN reporting documentation; the SKAN page is for MAX demand partners.",
     "source_ids": [
      "RS-S02",
      "V1-S02"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Creative sets (video/HTML playable/image), creative-first flow, HTML playable analytics events and asset-level reporting API documented. No randomized/split creative test design documented; 'import a unique copy' to split-test is informal.",
     "source_ids": [
      "RS-S03",
      "RS-S04",
      "RS-S05"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Advertiser report exposes hashed source-app ID ('site ID'), source application name, placement_type and encrypted placement ID; {APP_ID} macro to MMP. No documented advertiser block/allow-list control found.",
     "source_ids": [
      "V1-S05",
      "RS-S06"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Billing documents prepay daily charges and bidding strategies (target goal with CPI billing; auto-bidding with CPM billing). Cost is a single advertiser-spend figure; no media-cost vs fee separation or bid-level cost data.",
     "source_ids": [
      "RS-S07",
      "RS-S01"
     ]
    },
    "D7": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "B",
     "rationale": "Geo-holdout incrementality tests (20-50% holdouts, 90% power, AppLovin design review) described only for web/e-commerce brands; no incrementality option documented for app campaigns.",
     "source_ids": [
      "V1-S04"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting API and Asset Reporting API return aggregated JSON/CSV with cohort ROAS/retention columns and 45-day request window; no impression- or log-level export documented.",
     "source_ids": [
      "V1-S05",
      "RS-S05"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Campaign Management API for app advertisers: list/create/update campaigns, budgets (global or per country), goals/bids, targeting, creative sets and asset uploads, plus operation log; self-serve Ads Manager UI.",
     "source_ids": [
      "RS-S01"
     ]
    },
    "D10": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Advertiser reporting lists CTV placement type and tvOS platform; AdExchanger (2023) reports Wurl CTV supply bought on CPI in AppDiscovery with MMP attribution. No stated identity method or causal CTV test.",
     "source_ids": [
      "V1-S05",
      "V1-S09"
     ]
    },
    "D11": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Named non-gaming advertisers (Safe Sleeve, Sweet Flexx; homepage consumer brands) are mostly web e-commerce; 10-K reports expansion to web e-commerce but states concentration 'specifically mobile gaming', no quantified non-gaming revenue.",
     "source_ids": [
      "RS-S08",
      "V1-S03",
      "V1-S01"
     ]
    }
   },
   "notes": {
    "D1": "R1 agree",
    "D2": "R1 agree",
    "D3": "R2 conservative: lower score",
    "D4": "R1 agree",
    "D5": "R3 evidence found by one scorer",
    "D6": "R2 conservative: lower score",
    "D7": "R3 evidence found by one scorer",
    "D8": "R1 agree",
    "D9": "R1 agree",
    "D10": "R1 agree",
    "D11": "R1 agree"
   }
  },
  {
   "vendor_id": "moloco",
   "scores": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Developer API documents reading/writing SKAN conversion-value configuration and campaign goals spanning install/event/ROAS; case studies report ROAS-based outcomes across verticals.",
     "source_ids": [
      "V1-S17",
      "V1-S11"
     ]
    },
    "D2": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "APP_REENGAGEMENT campaign type; CustomerSet IDFA/ADID lists and app/event audiences can be included or excluded; RE page states incrementality testing is offered for re-engagement (method not detailed there).",
     "source_ids": [
      "RS-S09",
      "RS-S11",
      "RS-S12",
      "V1-S14"
     ]
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Developer API documents reading and updating SKAdNetwork conversion-value configuration and SKAN analytics; no AdAttributionKit mention was found.",
     "source_ids": [
      "V1-S17"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Developer API documents CreativeGroups supporting an A/B-test structure (a disclosed-allocation design); playable/interactive format coverage was referenced in secondary (help-center) sources not independently opened this session, so format-coverage is not counted toward a score of 3.",
     "source_ids": [
      "V1-S17"
     ]
    },
    "D5": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Brand Safety Policy documents a global block list plus customer-configurable inclusion/exclusion lists, and states advertisers receive 'transparent impression level reporting by publisher and exchange'.",
     "source_ids": [
      "V1-S12"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "oCPM is the only pricing model; 'non-variable DSP margin' asserted without published rate. Log fields for media cost and fee_percent exist but are marked Deprecated, so no current fee separation is documented.",
     "source_ids": [
      "RS-S18",
      "RS-S19"
     ]
    },
    "D7": {
     "score": 2,
     "availability": "limited",
     "evidence_grade": "B",
     "rationale": "Ghost-bidding RCT (even test/control split, bids without serving) designed and analysed with Moloco data science; described for CTV and offered for RE. No self-serve incrementality product or results UI documented.",
     "source_ids": [
      "RS-S20",
      "V1-S13"
     ]
    },
    "D8": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Report API provides aggregated dimensional data; Log API exports impression/click/conversion event-level records.",
     "source_ids": [
      "V1-S15",
      "V1-S16"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Developer API documents full campaign CRUD and AdGroup create/update/list operations, not only reporting.",
     "source_ids": [
      "V1-S17"
     ]
    },
    "D10": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Performance CTV documents a stated household/IP-matching identity method plus a built-in ghost-bidding causal measurement option, with attribution running through the advertiser's own MMP.",
     "source_ids": [
      "V1-S13"
     ]
    },
    "D11": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Case-studies page names >=8 non-gaming advertisers (Wayfair, Bevmo, Costco, Benjamin, Musinsa, Experian, FreeNow, ManoMano); Moloco is private and does not file, so no filing-level revenue quantification exists.",
     "source_ids": [
      "V1-S11"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Campaign API goal enum includes OPTIMIZE_CPA_FOR_APP_UA, OPTIMIZE_ROAS_FOR_APP_UA, OPTIMIZE_RETENTION_FOR_APP_UA and RE-campaign ROAS/CPA goals; help center documents goal selection.",
     "source_ids": [
      "RS-S09",
      "RS-S10"
     ]
    },
    "D2": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "APP_REENGAGEMENT campaign type; CustomerSet IDFA/ADID lists and app/event audiences can be included or excluded; RE page states incrementality testing is offered for re-engagement (method not detailed there).",
     "source_ids": [
      "RS-S09",
      "RS-S11",
      "RS-S12",
      "V1-S14"
     ]
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "SKAN 4.0 documented (coarse values, three postbacks, source identifiers); API manages conversion-value config with postback_sequence_index and serves SKAN analytics. No AdAttributionKit support found in help center or API.",
     "source_ids": [
      "RS-S13",
      "RS-S14",
      "RS-S15"
     ]
    },
    "D4": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Self-serve A/B tests of creative groups with randomized target split, even budget split, significance-based winner; Creative Lab tests video, interactive end-card and playable creatives. iOS results only on MMP, not SKAN, data.",
     "source_ids": [
      "RS-S16",
      "RS-S17"
     ]
    },
    "D5": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Report API dimensions APP_OR_SITE, SUB_PUBLISHER, EXCHANGE; log spec includes bundle and tagid; targeting supports allowed/blocked app bundles, placements and IAB categories.",
     "source_ids": [
      "V1-S15",
      "RS-S09",
      "RS-S12"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "oCPM is the only pricing model; 'non-variable DSP margin' asserted without published rate. Log fields for media cost and fee_percent exist but are marked Deprecated, so no current fee separation is documented.",
     "source_ids": [
      "RS-S18",
      "RS-S19"
     ]
    },
    "D7": {
     "score": 2,
     "availability": "limited",
     "evidence_grade": "B",
     "rationale": "Ghost-bidding RCT (even test/control split, bids without serving) designed and analysed with Moloco data science; described for CTV and offered for RE. No self-serve incrementality product or results UI documented.",
     "source_ids": [
      "RS-S20",
      "V1-S13"
     ]
    },
    "D8": {
     "score": 3,
     "availability": "limited",
     "evidence_grade": "A",
     "rationale": "Log API and S3 transfer deliver impression, click and conversion logs (CSV/Avro) with bundle, exchange, device fields; disabled by default, enabled on request; 90-day access. Report API also exists.",
     "source_ids": [
      "V1-S16",
      "RS-S21",
      "RS-S22"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Campaign Management API creates/updates/deletes campaigns, ad groups, creatives, audiences, tracking links, budgets and goals; self-serve Ads Manager UI.",
     "source_ids": [
      "RS-S23",
      "RS-S09"
     ]
    },
    "D10": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "CTV_APP_USER_ACQUISITION campaign type; MMP cross-platform view-through attribution setup documented; household (IP)-level bidding stated; ghost-bidding incrementality test offered. CTV limited to UA campaigns.",
     "source_ids": [
      "RS-S24",
      "V1-S13",
      "RS-S09"
     ]
    },
    "D11": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Named non-gaming app case studies: FREENOW (transportation), Benjamin (cashback rewards), ReelShort (video streaming); MyPurina quote. Private company; no filing or third-party evidence of non-gaming revenue share opened (IPO article returned 403).",
     "source_ids": [
      "RS-S25",
      "RS-S26",
      "RS-S27",
      "RS-S28"
     ]
    }
   },
   "notes": {
    "D1": "R1 agree",
    "D2": "R2 higher score has grade-A evidence",
    "D3": "R1 agree",
    "D4": "R2 conservative: lower score",
    "D5": "R1 agree",
    "D6": "R3 evidence found by one scorer",
    "D7": "R2 conservative: lower score",
    "D8": "R1 agree",
    "D9": "R1 agree",
    "D10": "R1 agree",
    "D11": "R1 agree"
   }
  },
  {
   "vendor_id": "liftoff",
   "scores": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Official Accelerate page states the Cortex-powered product suite lets advertisers 'directly optimize for any type of KPI (CPC, CPI, CPA, ROAS, pLTV)'.",
     "source_ids": [
      "V1-S22"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Official re-engagement page documents a data-driven approach intended to avoid cannibalizing organic conversions, with claimed lift/cost figures; no suppression/exclusion mechanism or holdout/incrementality methodology is documented on the page itself.",
     "source_ids": [
      "V1-S25"
     ]
    },
    "D3": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "SKAdNetwork is named as a supported use case and 'SKAdNetwork Cortex models' were announced for late 2024, but no conversion-value/postback mechanics or AdAttributionKit support were documented in pages opened this session.",
     "source_ids": [
      "V1-S22",
      "V1-S27"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Creative Lab upload/QA for playable and interactive HTML, LXA and triple-page formats; creative services and 'testing technologies' marketed. No randomized or disclosed-allocation creative test design documented.",
     "source_ids": [
      "RS-S33",
      "RS-S34",
      "V1-S22"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting API returns publisher_app_store_id, publisher_name and ad_format; dashboard breaks down by source app. No advertiser block/allow-list control found in docs.",
     "source_ids": [
      "RS-S31",
      "RS-S35"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "10-Q: price per advertising unit (installs, impressions), revenue reported net as agent. Reporting shows only 'spend'; no media-cost versus fee breakdown or published fee for advertisers.",
     "source_ids": [
      "V1-S21",
      "RS-S31"
     ]
    },
    "D7": {
     "score": 1,
     "availability": "limited",
     "evidence_grade": "B",
     "rationale": "Delivery Hero case reports Liftoff-run incrementality tests with uplift figures but no stated design; PEPr is an internal/managed experimentation programme without a documented holdout method.",
     "source_ids": [
      "RS-S36",
      "RS-S37"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting API (aggregated, cohort windows, CSV/JSON) and dashboard CSV export. No impression- or log-level export documented.",
     "source_ids": [
      "RS-S31",
      "RS-S35"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "beta",
     "evidence_grade": "A",
     "rationale": "Campaign Management API (closed beta, select customers): create UA campaigns, set/schedule daily spend, goals, country targeting, assets and creatives. Only UA expansion campaigns; spend changes limited to 3x/day within +/-50%.",
     "source_ids": [
      "RS-S29"
     ]
    },
    "D10": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No CTV product is mentioned on Liftoff Monetize's own page; absence from a marketing page is not the same as documented absence of any CTV product, so this is scored n/e rather than 0.",
     "source_ids": [
      "V1-S24"
     ]
    },
    "D11": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Named non-gaming Accelerate cases: Delivery Hero/PedidosYa, Acorns, Casumo, ReelShort. 10-Q cites 'scaled leadership in non-gaming verticals' and diversified end markets; qualitative only, no vertical revenue split.",
     "source_ids": [
      "V1-S21",
      "RS-S36",
      "RS-S39",
      "V1-S22"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "optimizationGoal values CPI, CPA, ROAS_D7 and ROAS_D28 (iOS) documented in campaign API; Accelerate page lists CPC, CPI, CPA, ROAS and pLTV optimization. API goalValue is informational only.",
     "source_ids": [
      "RS-S29",
      "V1-S22"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Re-engagement campaigns marketed; audience-ingestion API for partners; campaign API accepts included/excluded audience IDs (UA only). No documented holdout or incrementality option specific to re-engagement.",
     "source_ids": [
      "V1-S25",
      "RS-S30",
      "RS-S29"
     ]
    },
    "D3": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting API exposes SKAN installs with/without conversion value; Accelerate 'supports SKAdNetwork' use cases. No Liftoff-specific SKAN 4 postback/coarse-value or AdAttributionKit support documented; SKAN 4 content is general education.",
     "source_ids": [
      "RS-S31",
      "RS-S32"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Creative Lab upload/QA for playable and interactive HTML, LXA and triple-page formats; creative services and 'testing technologies' marketed. No randomized or disclosed-allocation creative test design documented.",
     "source_ids": [
      "RS-S33",
      "RS-S34",
      "V1-S22"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting API returns publisher_app_store_id, publisher_name and ad_format; dashboard breaks down by source app. No advertiser block/allow-list control found in docs.",
     "source_ids": [
      "RS-S31",
      "RS-S35"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "10-Q: price per advertising unit (installs, impressions), revenue reported net as agent. Reporting shows only 'spend'; no media-cost versus fee breakdown or published fee for advertisers.",
     "source_ids": [
      "V1-S21",
      "RS-S31"
     ]
    },
    "D7": {
     "score": 1,
     "availability": "limited",
     "evidence_grade": "B",
     "rationale": "Delivery Hero case reports Liftoff-run incrementality tests with uplift figures but no stated design; PEPr is an internal/managed experimentation programme without a documented holdout method.",
     "source_ids": [
      "RS-S36",
      "RS-S37"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting API (aggregated, cohort windows, CSV/JSON) and dashboard CSV export. No impression- or log-level export documented.",
     "source_ids": [
      "RS-S31",
      "RS-S35"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "beta",
     "evidence_grade": "A",
     "rationale": "Campaign Management API (closed beta, select customers): create UA campaigns, set/schedule daily spend, goals, country targeting, assets and creatives. Only UA expansion campaigns; spend changes limited to 3x/day within +/-50%.",
     "source_ids": [
      "RS-S29"
     ]
    },
    "D10": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "No CTV inventory or CTV-to-app product found in Accelerate/Direct pages, docs or the Q2 2026 10-Q.",
     "source_ids": [
      "RS-S38",
      "V1-S21"
     ]
    },
    "D11": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Named non-gaming Accelerate cases: Delivery Hero/PedidosYa, Acorns, Casumo, ReelShort. 10-Q cites 'scaled leadership in non-gaming verticals' and diversified end markets; qualitative only, no vertical revenue split.",
     "source_ids": [
      "V1-S21",
      "RS-S36",
      "RS-S39",
      "V1-S22"
     ]
    }
   },
   "notes": {
    "D1": "R1 agree",
    "D2": "R1 agree",
    "D3": "R1 agree",
    "D4": "R3 evidence found by one scorer",
    "D5": "R3 evidence found by one scorer",
    "D6": "R3 evidence found by one scorer",
    "D7": "R2 conservative: lower score",
    "D8": "R3 evidence found by one scorer",
    "D9": "R3 evidence found by one scorer",
    "D10": "R1 agree",
    "D11": "R2 higher score has grade-A evidence"
   }
  },
  {
   "vendor_id": "unity",
   "scores": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Official documentation defines and lets advertisers configure Install (CPI) bids, Retention bids, and ROAS targets.",
     "source_ids": [
      "V1-S33"
     ]
    },
    "D2": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No documentation of a retargeting/re-engagement campaign product for Unity Ads advertisers was found or independently opened this session.",
     "source_ids": []
    },
    "D3": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Privacy-compliance documentation confirms SKAdNetwork coverage (conversion values, ad-slot limits, dashboard support, postback integration) at an overview level, but no specific SKAN version (4 vs earlier) or AdAttributionKit mention was found in the pages retrieved.",
     "source_ids": [
      "V1-S35"
     ]
    },
    "D4": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Creative Testing campaign goal distributes impressions equally across creative packs (disclosed allocation, CPM billed) with per-pack reporting; video, playable and end-card formats documented.",
     "source_ids": [
      "RS-S45",
      "RS-S46"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting by Source App ID and source app category, with allow/blocklists and source bidding by ID; but IDs are abstracted and Unity states it 'cannot give out source IDs for specific apps'. No placement dimension.",
     "source_ids": [
      "RS-S47",
      "RS-S48"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Billing model documented (CPI for install/event/ROAS goals; CPM for creative testing, iOS and zero-install fallback). No media-cost versus fee separation or published fee.",
     "source_ids": [
      "RS-S46",
      "RS-S44"
     ]
    },
    "D7": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No incrementality/holdout documentation for Unity Ads UA was found this session.",
     "source_ids": []
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting/analytics documentation lists a dashboard, History and Performance tool, CSV export, and REST APIs; no confirmation of log-level (vs aggregated) granularity was found.",
     "source_ids": [
      "V1-S34"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Documentation links to a distinct Advertising Management API (services.docs.unity.com/advertise/v1/) alongside the Statistics API, indicating a documented campaign-management API rather than reporting-only access.",
     "source_ids": [
      "V1-S34"
     ]
    },
    "D10": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No CTV product documented for Unity Ads/Grow was found this session.",
     "source_ids": []
    },
    "D11": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "10-K frames capturing ad spend 'outside of our core gaming audience' as an aspiration and risk; UA docs and product page are game-focused. No named non-gaming UA case studies found.",
     "source_ids": [
      "V1-S29",
      "V1-S32"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Install (CPI), Event optimization (level complete, payer, retention) and ROAS campaigns (IAP, ad revenue, hybrid) with a ROAS target documented; optimized goals require MMP or S2S post-install data.",
     "source_ids": [
      "RS-S40",
      "RS-S41"
     ]
    },
    "D2": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "Unity Ads UA documentation lists install, event, ROAS and creative-testing goals only; no re-engagement campaign, audience upload or suppression control found.",
     "source_ids": [
      "RS-S42",
      "RS-S40"
     ]
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "SKAN postback forwarding to MMPs includes SKAN 4.0 source-identifier, coarse-conversion-value and postback-sequence-index; dashboard and Stats API report SKAN installs, CPI and CV. No AdAttributionKit support documented.",
     "source_ids": [
      "RS-S43",
      "RS-S44"
     ]
    },
    "D4": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Creative Testing campaign goal distributes impressions equally across creative packs (disclosed allocation, CPM billed) with per-pack reporting; video, playable and end-card formats documented.",
     "source_ids": [
      "RS-S45",
      "RS-S46"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting by Source App ID and source app category, with allow/blocklists and source bidding by ID; but IDs are abstracted and Unity states it 'cannot give out source IDs for specific apps'. No placement dimension.",
     "source_ids": [
      "RS-S47",
      "RS-S48"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Billing model documented (CPI for install/event/ROAS goals; CPM for creative testing, iOS and zero-install fallback). No media-cost versus fee separation or published fee.",
     "source_ids": [
      "RS-S46",
      "RS-S44"
     ]
    },
    "D7": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "No incrementality, holdout or lift-test offering found in Unity Ads UA documentation or the FY2025 10-K.",
     "source_ids": [
      "V1-S31",
      "V1-S29"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Advertising Statistics API returns aggregated acquisition statistics in CSV; dashboard CSV reports. No impression- or log-level export documented.",
     "source_ids": [
      "RS-S49",
      "RS-S50"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Advertising Management API: create/update campaigns, budgets, targeting, CPI/source/ROAS/retention bids, creatives and creative packs; self-serve UA dashboard and bulk-management spreadsheets.",
     "source_ids": [
      "RS-S51",
      "RS-S52"
     ]
    },
    "D10": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "10-K mentions expansion into programmatic and CTV offerings as uncertain, not tied to Unity Ads UA; no CTV inventory or CTV-to-app measurement in UA docs.",
     "source_ids": [
      "V1-S29"
     ]
    },
    "D11": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "10-K frames capturing ad spend 'outside of our core gaming audience' as an aspiration and risk; UA docs and product page are game-focused. No named non-gaming UA case studies found.",
     "source_ids": [
      "V1-S29",
      "V1-S32"
     ]
    }
   },
   "notes": {
    "D1": "R1 agree",
    "D2": "R1 agree",
    "D3": "R2 conservative: lower score",
    "D4": "R2 higher score has grade-A evidence",
    "D5": "R3 evidence found by one scorer",
    "D6": "R3 evidence found by one scorer",
    "D7": "R1 agree",
    "D8": "R1 agree",
    "D9": "R1 agree",
    "D10": "R1 agree",
    "D11": "R3 evidence found by one scorer"
   }
  },
  {
   "vendor_id": "mintegral-mobvista",
   "scores": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "H1 2026 interim report (filing) states smart-bidding products (IAA ROAS since May 2023, Target CPE since Jul 2024, Hybrid ROAS since Apr 2025, IAP ROAS since Jul 2025) account for >90% of Mintegral revenue; official AppGrowth page documents Target ROAS and Target CPE as selectable models.",
     "source_ids": [
      "V1-S37",
      "V1-S39"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Official Retargeting page documents postback-based re-engagement of active/dormant/lapsed users; no suppression/exclusion control or holdout/incrementality option is documented.",
     "source_ids": [
      "V1-S40"
     ]
    },
    "D3": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No SKAdNetwork documentation was found on the official marketing pages accessible this session; the developer wiki (dev.mintegral.com) exists but its SKAN-specific pages could not be located within this session's fetch budget.",
     "source_ids": []
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Mindworks (in-house creative studio) and Playturbo (playable-ad automation) are documented; no disclosed randomized/allocation testing methodology was found.",
     "source_ids": [
      "V1-S38",
      "V1-S42"
     ]
    },
    "D5": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Report API segments by Sub (mtgid publisher ID), Package (sub package name), AdType and AdOutputType; API and guide support whitelist/blacklist by mtgid (API access gated by AM).",
     "source_ids": [
      "RS-S60",
      "RS-S61",
      "RS-S62"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Billing types CPI, CPM, CPE and oCPI documented; interim report describes performance-based ad fees. No media-cost versus platform-fee breakdown for advertisers.",
     "source_ids": [
      "RS-S53",
      "V1-S37"
     ]
    },
    "D7": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No incrementality/holdout documentation was found this session.",
     "source_ids": []
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Advanced Performance Reporting API returns aggregated TSV by offer, creative, sub-publisher, package, geo (daily/hourly, 7-day span). No log-level export documented.",
     "source_ids": [
      "RS-S60"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Mintegral's Open API creates campaigns and offers with geo, bid type and goal, bid rate, daily cap and budget, creatives and audiences, and updates budget, bid and status; some bid types need permission.",
     "source_ids": [
      "RS-S63",
      "RS-S53",
      "RS-S64"
     ]
    },
    "D10": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No CTV product for Mintegral was found this session.",
     "source_ids": []
    },
    "D11": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "H1 2026 interim report (filing) discloses non-gaming revenue at 24.4% of Mintegral revenue (+15.5% YoY) versus gaming at 75.6% (+27.5% YoY) -- filing-level quantification of material non-gaming revenue -- plus a named non-gaming case study (Winedrops, e-commerce).",
     "source_ids": [
      "V1-S37",
      "V1-S41"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Offer API bid_goal supports Target-ROAS (ad revenue/IAP/hybrid) and Target-CPE with D0/D7 windows under oCPI, plus CPI and CPM; AppGrowth page describes IAA, IAP and hybrid ROAS.",
     "source_ids": [
      "RS-S53",
      "RS-S54",
      "V1-S39"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Retargeting product (self-serve via postbacks); audience API uploads IDFA/GAID lists; offers take include_ta_id and exclude_ta_id. No holdout or incrementality option for re-engagement documented.",
     "source_ids": [
      "V1-S40",
      "RS-S55",
      "RS-S56"
     ]
    },
    "D3": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "No SKAdNetwork, SKAN 4 or AdAttributionKit documentation found in the Mintegral advertiser docs (about 60 English pages) or the 2026 interim report.",
     "source_ids": [
      "RS-S57",
      "V1-S37"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Mindworks in-house creative studio and Playturbo automation produce playable and video ads; playable guide documented. No split or randomized creative test design documented.",
     "source_ids": [
      "RS-S58",
      "RS-S59"
     ]
    },
    "D5": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Report API segments by Sub (mtgid publisher ID), Package (sub package name), AdType and AdOutputType; API and guide support whitelist/blacklist by mtgid (API access gated by AM).",
     "source_ids": [
      "RS-S60",
      "RS-S61",
      "RS-S62"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Billing types CPI, CPM, CPE and oCPI documented; interim report describes performance-based ad fees. No media-cost versus platform-fee breakdown for advertisers.",
     "source_ids": [
      "RS-S53",
      "V1-S37"
     ]
    },
    "D7": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "No incrementality, holdout or lift-test offering found in advertiser docs, product pages or the interim report.",
     "source_ids": [
      "RS-S57",
      "V1-S39"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Advanced Performance Reporting API returns aggregated TSV by offer, creative, sub-publisher, package, geo (daily/hourly, 7-day span). No log-level export documented.",
     "source_ids": [
      "RS-S60"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Open API creates campaigns and offers with geo, bid type/goal, bid rate, daily cap and budget, creative sets and audiences; update endpoints for budget, bid, status. Some bid types permission-gated.",
     "source_ids": [
      "RS-S63",
      "RS-S53",
      "RS-S64"
     ]
    },
    "D10": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "No CTV inventory or CTV-to-app product found on AppGrowth pages or in the 2026 interim report.",
     "source_ids": [
      "V1-S39",
      "V1-S37"
     ]
    },
    "D11": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Interim report: non-gaming 24.4% (US$272.0m) of H1 2026 programmatic revenue. Named non-gaming cases include Netstory (tagged Non Gaming), Holywater and Music Pads.",
     "source_ids": [
      "V1-S37",
      "RS-S65"
     ]
    }
   },
   "notes": {
    "D1": "R1 agree",
    "D2": "R1 agree",
    "D3": "R1 agree",
    "D4": "R1 agree",
    "D5": "R3 evidence found by one scorer",
    "D6": "R3 evidence found by one scorer",
    "D7": "R1 agree",
    "D8": "R3 evidence found by one scorer",
    "D9": "R6 fact-check override: Round-2 review follow-up: rule R2 kept the lower first-pass score although the second scorer's grade-A documentation meets the anchor for 3.",
    "D10": "R1 agree",
    "D11": "R1 agree"
   }
  },
  {
   "vendor_id": "digital-turbine",
   "scores": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Documentation defines ROAS (Advertiser IAP Revenue / Advertiser Spend, D3/D7/D30) and documents CPI/CPE/CPA billing models for advertiser campaigns.",
     "source_ids": [
      "V1-S46"
     ]
    },
    "D2": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Magazine Luiza case mentions 'push notifications for retargeting' after on-device installs; no documented re-engagement campaign using advertiser/MMP audiences or suppression controls.",
     "source_ids": [
      "RS-S68"
     ]
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Bid-request documentation confirms SKAdNetwork version support 'including 4.0' with the sourceidentifier field for SKAN 4.0+, but conversion-value/fine-vs-coarse/crowd-anonymity mechanics and AdAttributionKit are not documented in the pages found this session.",
     "source_ids": [
      "V1-S46"
     ]
    },
    "D4": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No creative-testing documentation with a disclosed method was found this session; case studies reference 'creative innovation' without method.",
     "source_ids": []
    },
    "D5": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Documentation describes a Blocked Apps Tool (block apps at advertiser/product/campaign level) and DT Offer Suppression (excludes existing installers), combined with a Buyer's Report exposing average bid price.",
     "source_ids": [
      "V1-S46"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting shows 'gross advertiser spend' only; 10-K describes CPM/CPC/CPI-type pricing and revenue-share supply costs. No advertiser-facing fee or media-cost breakdown.",
     "source_ids": [
      "RS-S71",
      "V1-S43"
     ]
    },
    "D7": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Documentation describes 'Experimenting with Placements' using a control-group benchmark, but explicitly states no dedicated holdout/incrementality documentation exists for re-engagement/retargeting specifically.",
     "source_ids": [
      "V1-S46"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting API returns async, aggregated report files; impression-level pricing data is exposed via SDK callbacks (ImpressionData) to publishers, not documented as a buyer-side log-level export product.",
     "source_ids": [
      "V1-S46"
     ]
    },
    "D9": {
     "score": 2,
     "availability": "limited",
     "evidence_grade": "A",
     "rationale": "Self-serve Micro Bidding adjusts bids by country and source app; an Advertiser Management API covers Offer Wall campaigns only (bids, daily budgets, activation). The main DSP and on-device products show no campaign API, so the anchor for 3 is not met for the product as a whole.",
     "source_ids": [
      "V1-S46",
      "RS-S77",
      "RS-S67"
     ]
    },
    "D10": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No CTV product was found in Digital Turbine documentation reviewed this session.",
     "source_ids": []
    },
    "D11": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Case studies name non-gaming advertisers/publishers including Magazine Luiza, Kenvue (Stayfree), Co-operative Group, Moovit, 365Scores, OneFootball; FY2026 filing discloses AGP segment revenue ($185.7M) but does not break out gaming vs non-gaming within it.",
     "source_ids": [
      "V1-S45"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Funvent case credits a DT/Xiaomi 'ROAS Bidding Model' against D7 ROAS targets; Offer Wall supports CPE (per-event) campaigns with attribution windows. No help-center page documents ROAS goal setup for unified campaigns.",
     "source_ids": [
      "RS-S66",
      "RS-S67"
     ]
    },
    "D2": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Magazine Luiza case mentions 'push notifications for retargeting' after on-device installs; no documented re-engagement campaign using advertiser/MMP audiences or suppression controls.",
     "source_ids": [
      "RS-S68"
     ]
    },
    "D3": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "Advertiser measurement docs cover MMP setup and reporting only; SKAN pages found relate to DSP testing on DT Exchange and FairBid SDK, not advertiser campaigns.",
     "source_ids": [
      "RS-S69",
      "RS-S70"
     ]
    },
    "D4": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "10-K cites a creative studio for brand campaigns only; no documented creative testing or creative services for app-install advertisers found.",
     "source_ids": [
      "V1-S43"
     ]
    },
    "D5": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Unified-campaign Reporting API exposes Supply Source ID/Name (publisher bundle) and Placement Type; Blocked Apps Tool and per-app micro-bidding exist, but documented for Offer Wall campaigns only.",
     "source_ids": [
      "RS-S71",
      "RS-S72",
      "RS-S73"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting shows 'gross advertiser spend' only; 10-K describes CPM/CPC/CPI-type pricing and revenue-share supply costs. No advertiser-facing fee or media-cost breakdown.",
     "source_ids": [
      "RS-S71",
      "V1-S43"
     ]
    },
    "D7": {
     "score": 1,
     "availability": "limited",
     "evidence_grade": "B",
     "rationale": "Playrix case reports an incrementality study finding 97% of dynamic installs incremental, but no design, control or method is described.",
     "source_ids": [
      "RS-S74"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting APIs for unified campaigns and Offer Wall return aggregated metrics by date, country, supply source and placement. No log-level export for advertisers found.",
     "source_ids": [
      "RS-S75",
      "RS-S76"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "limited",
     "evidence_grade": "A",
     "rationale": "Offer Wall only: GraphQL Advertiser Management API updates per-app/country bids, daily budgets and activation; ACP Edge self-serve campaign setup. Unified DSP/on-device campaigns show no self-serve or API control.",
     "source_ids": [
      "RS-S77",
      "RS-S67"
     ]
    },
    "D10": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "No CTV inventory or CTV-to-app product found in the FY2026 10-K or advertiser docs.",
     "source_ids": [
      "V1-S43"
     ]
    },
    "D11": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Named non-gaming UA cases: Magazine Luiza (retail) and The Co-operative Group (retail/membership). 10-K gives no vertical revenue split.",
     "source_ids": [
      "RS-S68",
      "RS-S78"
     ]
    }
   },
   "notes": {
    "D1": "R1 agree",
    "D2": "R3 evidence found by one scorer",
    "D3": "R3 evidence found by one scorer",
    "D4": "R1 agree",
    "D5": "R1 agree",
    "D6": "R2 conservative: lower score",
    "D7": "R1 agree",
    "D8": "R1 agree",
    "D9": "R6 fact-check override: Round-2 review follow-up: rationale now reflects both scorers' evidence.",
    "D10": "R1 agree",
    "D11": "R1 agree"
   }
  },
  {
   "vendor_id": "kayzen",
   "scores": {
    "D1": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Product page documents post-install/'conversion event' optimization; ROAS language exists in seed-carried 'kAI Suite' claims but no technical doc confirming live ROAS/LTV bidding was opened this session.",
     "source_ids": [
      "V2-S02"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Retargeting via MMP-streamed audiences and Audience API; audiences whitelisted/blacklisted as suppression lists. Incrementality for retargeting only mentioned in passing, no holdout method documented.",
     "source_ids": [
      "RS-S81",
      "RS-S82",
      "V2-S04"
     ]
    },
    "D3": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "References to 'SKAN campaigns' and enabling 'Share SKAN transaction id' in AppsFlyer; no SKAN 4, conversion-value handling or AdAttributionKit documentation found.",
     "source_ids": [
      "V2-S05",
      "RS-S83"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Documents a proprietary 'Video+' interactive/fullscreen-video creative format and 'all major creative formats'; no disclosed testing design (split/randomized) or playable-specific format confirmed.",
     "source_ids": [
      "V2-S02"
     ]
    },
    "D5": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reports support placement-level performance analysis; app-bundle whitelists/blacklists via UI and App Lists API; per-app bid multipliers.",
     "source_ids": [
      "RS-S86",
      "V2-S04",
      "V2-S02"
     ]
    },
    "D6": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Published SaaS model: fixed platform fee plus 2.5% billing fee and overage, billed separately from media cost with no bid markup; platform reports media costs and CPMs.",
     "source_ids": [
      "RS-S87",
      "V2-S02"
     ]
    },
    "D7": {
     "score": 1,
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "Events API article says non-attributed events can be used 'to measure incrementality in your retargeting campaigns'; no holdout design or experiment product documented.",
     "source_ids": [
      "V2-S04"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Help-centre API documentation explicitly describes a read-only Reporting API for programmatic access to campaign performance data (aggregated); no log-level/impression-level export confirmed.",
     "source_ids": [
      "V2-S04"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Help-centre API documentation directly describes campaign-management endpoints: edit target bid, daily/total budget, bid multipliers, and pause/resume campaign or creative status.",
     "source_ids": [
      "V2-S04"
     ]
    },
    "D10": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "CTV campaigns attributed through AppsFlyer cross-platform view-through (probabilistic CTV-to-mobile matching); guide dated September 2026. No causal CTV measurement option found.",
     "source_ids": [
      "RS-S88"
     ]
    },
    "D11": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Only one named non-gaming case study found (Greggs, UK food retail) — below the two-case threshold for score 2.",
     "source_ids": [
      "V2-S03"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Bidding algorithms CPM, CPC, CPI, CPA (post-install events) and CPA-Retargeting documented. No ROAS/value or LTV optimization found.",
     "source_ids": [
      "RS-S79",
      "RS-S80"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Retargeting via MMP-streamed audiences and Audience API; audiences whitelisted/blacklisted as suppression lists. Incrementality for retargeting only mentioned in passing, no holdout method documented.",
     "source_ids": [
      "RS-S81",
      "RS-S82",
      "V2-S04"
     ]
    },
    "D3": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "References to 'SKAN campaigns' and enabling 'Share SKAN transaction id' in AppsFlyer; no SKAN 4, conversion-value handling or AdAttributionKit documentation found.",
     "source_ids": [
      "V2-S05",
      "RS-S83"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Creative A/B testing guide with significance calculator; allocation left to Creative Optimization ('redirect enough traffic'), not a disclosed split. HTML/playable and Video+ formats supported.",
     "source_ids": [
      "RS-S84",
      "RS-S85"
     ]
    },
    "D5": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reports support placement-level performance analysis; app-bundle whitelists/blacklists via UI and App Lists API; per-app bid multipliers.",
     "source_ids": [
      "RS-S86",
      "V2-S04",
      "V2-S02"
     ]
    },
    "D6": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Published SaaS model: fixed platform fee plus 2.5% billing fee and overage, billed separately from media cost with no bid markup; platform reports media costs and CPMs.",
     "source_ids": [
      "RS-S87",
      "V2-S02"
     ]
    },
    "D7": {
     "score": 1,
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "Events API article says non-attributed events can be used 'to measure incrementality in your retargeting campaigns'; no holdout design or experiment product documented.",
     "source_ids": [
      "V2-S04"
     ]
    },
    "D8": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Reporting API documented (A); product page states access to 'log-level data' alongside media costs and placements (B). No log-level field specification found.",
     "source_ids": [
      "V2-S02",
      "V2-S04"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Developer Hub documents Create/Update/Pause Campaign, Orders, Creatives, App Lists, Bid Multipliers and Audiences endpoints (optimization types cpm/cpc/cpi/cpa/cpa_rt); self-serve UI.",
     "source_ids": [
      "RS-S80",
      "V2-S04"
     ]
    },
    "D10": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "CTV campaigns attributed through AppsFlyer cross-platform view-through (probabilistic CTV-to-mobile matching); guide dated September 2026. No causal CTV measurement option found.",
     "source_ids": [
      "RS-S88"
     ]
    },
    "D11": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Named non-gaming cases: Greggs app installs (with Dentsu), Albertsons, Co-op, Maniko Nails, plus betting apps. Private (Ioniq Group); no filing-level vertical revenue evidence.",
     "source_ids": [
      "RS-S89",
      "V2-S03"
     ]
    }
   },
   "notes": {
    "D1": "R1 agree",
    "D2": "R2 higher score has grade-A evidence",
    "D3": "R3 evidence found by one scorer",
    "D4": "R1 agree",
    "D5": "R2 higher score has grade-A evidence",
    "D6": "R3 evidence found by one scorer",
    "D7": "R3 evidence found by one scorer",
    "D8": "R2 conservative: lower score",
    "D9": "R1 agree",
    "D10": "R5 value over n/a",
    "D11": "R2 conservative: lower score"
   }
  },
  {
   "vendor_id": "smadex",
   "scores": {
    "D1": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Filing describes proprietary AI calculating 'the precise value of a specific ad placement for a specific advertiser' and performance-based, action-based pricing — documents post-install/event-level optimization; filing text reviewed does not use explicit 'ROAS' or 'LTV' terminology, so not scored 3.",
     "source_ids": [
      "V2-S08"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Filing explicitly names retargeting ('re-engaging users who have previously installed an app but have since stopped using it') as a core Smadex capability; no suppression/exclusion or holdout-for-re-engagement detail found.",
     "source_ids": [
      "V2-S08"
     ]
    },
    "D3": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "The 10-K text reviewed does not address SKAN or AdAttributionKit; Smadex's own technical pages could not be read via WebFetch this session (JS-rendered).",
     "source_ids": []
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "In-house Creative Studio produces UGC, video and playable ads; 'Creative Selector Algorithm' shifts spend to winners; new concepts piloted 'in a controlled environment' without disclosed design.",
     "source_ids": [
      "RS-S93",
      "V2-S08"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "10-K: clients receive granular data on exactly where ads ran; brand-safety policy documents client whitelists and publisher blacklists. Placement/format-level reporting not explicitly documented.",
     "source_ids": [
      "V2-S08",
      "RS-S94"
     ]
    },
    "D6": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "10-K: clients pay for outcomes (install, IAP) and teams share the clearing price of media and budget allocation; Cabify story cites a 'transparent dCPM' model. No published fee schedule.",
     "source_ids": [
      "V2-S08",
      "RS-S95"
     ]
    },
    "D7": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "Not addressed in the filing text reviewed.",
     "source_ids": []
    },
    "D8": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "Not addressed in the filing text reviewed; managed-service framing makes a buyer-facing export product plausible but unconfirmed.",
     "source_ids": []
    },
    "D9": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Direct filing quote: Smadex teams 'act as an extension of our client's marketing team. Our teams configure bidding parameters, manage fraud prevention protocols' — buyer does not directly change campaigns.",
     "source_ids": [
      "V2-S08"
     ]
    },
    "D10": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Filing confirms CTV inventory buying is a real, named capability ('transforms television from a broad branding tool into a precise performance channel') but does not state an identity method (deterministic/probabilistic/household) or MMP-based app-outcome reporting mechanism — scored as announced/claimed rather than 2 or 3.",
     "source_ids": [
      "V2-S08"
     ]
    },
    "D11": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Filing names fintech and entertainment-services customers alongside mobile games — establishes non-gaming focus as a claim, but does not name ≥2 specific non-gaming advertisers/case studies as the anchor for score 2 requires.",
     "source_ids": [
      "V2-S08"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "10-K: models predict install probability and long-term value from post-install events; clients pay per install or in-app purchase. Site: custom algorithms bid to maximize ROAS, LTV or ARPU; multi-event optimization.",
     "source_ids": [
      "V2-S08",
      "RS-S90"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Retargeting product re-engages lapsed installers using advertiser first-party data with match-rate analysis and custom-event algorithms. No documented suppression controls or holdout option for re-engagement.",
     "source_ids": [
      "RS-S91",
      "V2-S08"
     ]
    },
    "D3": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "No SKAdNetwork, SKAN 4 or AdAttributionKit documentation found in the 10-K or Smadex product pages; no public help center located.",
     "source_ids": [
      "V2-S08",
      "RS-S92"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "In-house Creative Studio produces UGC, video and playable ads; 'Creative Selector Algorithm' shifts spend to winners; new concepts piloted 'in a controlled environment' without disclosed design.",
     "source_ids": [
      "RS-S93",
      "V2-S08"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "10-K: clients receive granular data on exactly where ads ran; brand-safety policy documents client whitelists and publisher blacklists. Placement/format-level reporting not explicitly documented.",
     "source_ids": [
      "V2-S08",
      "RS-S94"
     ]
    },
    "D6": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "10-K: clients pay for outcomes (install, IAP) and teams share the clearing price of media and budget allocation; Cabify story cites a 'transparent dCPM' model. No published fee schedule.",
     "source_ids": [
      "V2-S08",
      "RS-S95"
     ]
    },
    "D7": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "No incrementality, holdout or lift-test offering found in the 10-K or product pages.",
     "source_ids": [
      "V2-S08",
      "RS-S92"
     ]
    },
    "D8": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "10-K says clients receive granular transaction data and clearing prices, but no reporting API, scheduled export or log-file specification is documented.",
     "source_ids": [
      "V2-S08"
     ]
    },
    "D9": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "10-K: Smadex is run as a managed service 'rather than a standardized self service solution'; Smadex teams configure bids. An older brand-safety policy still references self-service logins.",
     "source_ids": [
      "V2-S08",
      "RS-S94"
     ]
    },
    "D10": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "CTV product drives app installs by matching the TV ad view to a mobile device in the same household (10-K); performance CTV page adds QR pause ads. No causal CTV measurement option documented.",
     "source_ids": [
      "V2-S08",
      "RS-S96"
     ]
    },
    "D11": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "10-K names customers as primarily games, fintech and entertainment app developers; named non-gaming stories include Foodpanda, Talabat, Cabify, Babbel, Exness. Qualitative filing mix, no vertical revenue split.",
     "source_ids": [
      "V2-S08",
      "RS-S97",
      "RS-S98"
     ]
    }
   },
   "notes": {
    "D1": "R2 conservative: lower score",
    "D2": "R1 agree",
    "D3": "R1 agree",
    "D4": "R3 evidence found by one scorer",
    "D5": "R3 evidence found by one scorer",
    "D6": "R3 evidence found by one scorer",
    "D7": "R1 agree",
    "D8": "R1 agree",
    "D9": "R1 agree",
    "D10": "R2 conservative: lower score",
    "D11": "R2 conservative: lower score"
   }
  },
  {
   "vendor_id": "remerge",
   "scores": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Glossary defines ROAS and CPA 'achievement' against a Target ROAS/Target CPA for campaigns; onboarding asks for the in-app conversion event to optimize. CPM is the only pricing model.",
     "source_ids": [
      "RS-S99",
      "RS-S100"
     ]
    },
    "D2": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Retargeting core product built on MMP event forwarding and MMP audience segments; exclusion/blocklist user lists documented, and holdout groups supported via separate holdout lists.",
     "source_ids": [
      "RS-S101",
      "RS-S102",
      "RS-S103"
     ]
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "States compatibility with SKAdNetwork 2.0-4.0; forwards install-validation postbacks with conversion value and source app ID to the MMP. No AdAttributionKit support found; SKAN not used for retargeting.",
     "source_ids": [
      "RS-S104"
     ]
    },
    "D4": {
     "score": 3,
     "availability": "limited",
     "evidence_grade": "A",
     "rationale": "In-house design team offers curated A/B testing incl. no-ID incrementality tests; reports carry a 'Creative AB Test Group' (test vs control) dimension; rich media and Luna playables supported. Allocation details not published.",
     "source_ids": [
      "RS-S105",
      "RS-S99",
      "RS-S106"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Tracking links pass a {publisher} macro to the MMP, enabling publisher breakdowns there; Remerge's own Reporting API has no publisher dimension. No advertiser block/allow-list control documented.",
     "source_ids": [
      "RS-S107",
      "RS-S108"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "'Remerge exclusively offers a CPM pricing model'; reported cost is the campaign fee paid by the client. No media-cost versus margin breakdown.",
     "source_ids": [
      "RS-S100",
      "RS-S99"
     ]
    },
    "D7": {
     "score": 2,
     "availability": "limited",
     "evidence_grade": "B",
     "rationale": "Own blog names and defines three specific holdout/incrementality designs (Ghost Bids, PSA, intent-to-treat) — meets the anchor's 'documented holdout/lift method' bar, but the framing reads as educational/criteria-setting rather than an explicit statement that all three are offered as a standardized, self-serve product with results reporting to every client, so not scored 3.",
     "source_ids": [
      "V2-S07"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting API returns aggregated JSON (hour/day) by audience, country, campaign, ad; six-month retention. No log-level export documented.",
     "source_ids": [
      "RS-S108"
     ]
    },
    "D9": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Remerge's own May 2025 announcement states it offers 'fully managed service capabilities alongside programmatic advertising' — managed model emphasized; no self-serve UI or campaign-management API documentation found to support a higher score.",
     "source_ids": [
      "V2-S06"
     ]
    },
    "D10": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No CTV product or claim found for Remerge this session (unlike Jampp, YouAppi, Adikteev, and Verve Dataseat, all of which document CTV-to-app products).",
     "source_ids": []
    },
    "D11": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "AppsFlyer-cited ranking references e-commerce, delivery, and finance verticals alongside gaming — establishes a non-gaming claim, but no named non-gaming advertiser case studies (the anchor for score 2) were found this session.",
     "source_ids": [
      "V2-S06"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Glossary defines ROAS and CPA 'achievement' against a Target ROAS/Target CPA for campaigns; onboarding asks for the in-app conversion event to optimize. CPM is the only pricing model.",
     "source_ids": [
      "RS-S99",
      "RS-S100"
     ]
    },
    "D2": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Retargeting core product built on MMP event forwarding and MMP audience segments; exclusion/blocklist user lists documented, and holdout groups supported via separate holdout lists.",
     "source_ids": [
      "RS-S101",
      "RS-S102",
      "RS-S103"
     ]
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "States compatibility with SKAdNetwork 2.0-4.0; forwards install-validation postbacks with conversion value and source app ID to the MMP. No AdAttributionKit support found; SKAN not used for retargeting.",
     "source_ids": [
      "RS-S104"
     ]
    },
    "D4": {
     "score": 3,
     "availability": "limited",
     "evidence_grade": "A",
     "rationale": "In-house design team offers curated A/B testing incl. no-ID incrementality tests; reports carry a 'Creative AB Test Group' (test vs control) dimension; rich media and Luna playables supported. Allocation details not published.",
     "source_ids": [
      "RS-S105",
      "RS-S99",
      "RS-S106"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Tracking links pass a {publisher} macro to the MMP, enabling publisher breakdowns there; Remerge's own Reporting API has no publisher dimension. No advertiser block/allow-list control documented.",
     "source_ids": [
      "RS-S107",
      "RS-S108"
     ]
    },
    "D6": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "'Remerge exclusively offers a CPM pricing model'; reported cost is the campaign fee paid by the client. No media-cost versus margin breakdown.",
     "source_ids": [
      "RS-S100",
      "RS-S99"
     ]
    },
    "D7": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Standardized Uplift Test defined as a randomized controlled trial with an Uplift Report (incremental revenue, group sizes, conversions); holdout lists and no-ID Incremental Impact data procedure documented. Run by Remerge, not self-serve.",
     "source_ids": [
      "RS-S109",
      "RS-S110",
      "RS-S102"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Reporting API returns aggregated JSON (hour/day) by audience, country, campaign, ad; six-month retention. No log-level export documented.",
     "source_ids": [
      "RS-S108"
     ]
    },
    "D9": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Managed: Remerge experts build campaigns per segment after IO and onboarding via account manager; clients get reports dashboard and Reporting API only.",
     "source_ids": [
      "RS-S101",
      "RS-S111"
     ]
    },
    "D10": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "No CTV inventory or CTV-to-app offering found in the help center (search for CTV returned nothing) or site.",
     "source_ids": [
      "RS-S112",
      "RS-S113"
     ]
    },
    "D11": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Named non-gaming cases: Delivery Hero, Gojek, Swiggy Instamart, AliExpress, Trendyol, Zooplus, Omio. Independent private company; no filing-level revenue evidence.",
     "source_ids": [
      "RS-S114",
      "RS-S109",
      "RS-S115"
     ]
    }
   },
   "notes": {
    "D1": "R3 evidence found by one scorer",
    "D2": "R2 higher score has grade-A evidence",
    "D3": "R3 evidence found by one scorer",
    "D4": "R3 evidence found by one scorer",
    "D5": "R3 evidence found by one scorer",
    "D6": "R3 evidence found by one scorer",
    "D7": "R2 conservative: lower score",
    "D8": "R3 evidence found by one scorer",
    "D9": "R1 agree",
    "D10": "R1 agree",
    "D11": "R2 conservative: lower score"
   }
  },
  {
   "vendor_id": "jampp",
   "scores": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Product page explicitly documents live ROAS-goal optimization ('ensure you are ROAS positive on your campaigns') as a standing, advertiser-facing feature.",
     "source_ids": [
      "V2-S22"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Retargeting is a named, documented use case across the user journey; no explicit suppression/exclusion-list feature found to support score 3 (the documented Ghost Bids incrementality product is scored separately under D7, not treated here as re-engagement-specific suppression).",
     "source_ids": [
      "V2-S22"
     ]
    },
    "D3": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Claims SKAN campaign-level reporting plus statistical modelling and conversion-value-to-ROAS modelling; no SKAN 4 or AdAttributionKit specifics documented.",
     "source_ids": [
      "V2-S22"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Documents Dynamic Creative Optimization, feed-based creative, and HTML5 interactive formats with a stated 'Build & Test, Measure, Iterate' process; no explicit randomized/disclosed-allocation testing design or named playable format confirmed, so not scored 3.",
     "source_ids": [
      "V2-S22"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Documents real-time dashboards (spend, conversions, ROAS) plus log-level data access; no explicit block/allow-list control feature found to support score 3.",
     "source_ids": [
      "V2-S22"
     ]
    },
    "D6": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No explicit media-cost-vs-platform-fee breakdown or published fee schedule found on the page reviewed.",
     "source_ids": []
    },
    "D7": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Jampp advertises always-on lift measurement with ghost bids for acquisition and retargeting at no extra cost, but does not document the method, so the anchor for 3 (stated method) is not met.",
     "source_ids": [
      "V2-S22"
     ]
    },
    "D8": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Explicitly documents a 'reporting API' plus 'log-level data' provided to data-science teams — matches the anchor for log-level/impression-level export.",
     "source_ids": [
      "V2-S22"
     ]
    },
    "D9": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Documents a dashboard for direct campaign management (self-serve); a documented reporting API exists, but no explicit campaign-management API (create/edit campaigns via API, not just reporting) was found to support score 3.",
     "source_ids": [
      "V2-S22"
     ]
    },
    "D10": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Jampp CTV documents tracking app downloads/re-engagements tied to CTV campaigns via MMP integration for real-time cost-per-action optimization; no stated identity method (deterministic/probabilistic/household) or CTV-specific causal/incrementality option found, so not scored 3.",
     "source_ids": [
      "V2-S21"
     ]
    },
    "D11": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Named non-gaming cases: Wallapop, Instacart, Centauro, CashNow, Fetch; Rakuten and Bigo cited in help center. No Jampp-level filing split in sources opened.",
     "source_ids": [
      "RS-S121",
      "RS-S122"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Product page: set ROAS goals and algorithms forecast user value at 1/7/30 days by monetization type; conversion-value modelling to predict LTV. No help-center goal documentation found.",
     "source_ids": [
      "V2-S22"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Retargeting built on MMP event postbacks and audiences, editable user lists and a probabilistic (non-IDFA) audience option; lift measurement covers retargeting. No documented suppression/exclusion control.",
     "source_ids": [
      "RS-S116",
      "RS-S117",
      "V2-S22"
     ]
    },
    "D3": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Claims SKAN campaign-level reporting plus statistical modelling and conversion-value-to-ROAS modelling; no SKAN 4 or AdAttributionKit specifics documented.",
     "source_ids": [
      "V2-S22"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Creative Labs, in-house design, DCO, feed-based and HTML5 interactive ads, and 'strategic A/B testing' with significance; no explicit allocation or randomization design documented.",
     "source_ids": [
      "V2-S22"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Bundle and IP lists in the Silver platform (A) and log-level data access (B) imply app-level visibility; no documented publisher/placement report or advertiser-facing blocklist workflow.",
     "source_ids": [
      "RS-S118",
      "V2-S22"
     ]
    },
    "D6": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "B",
     "rationale": "No Jampp pricing or fee disclosure found; Affle release ties Jampp to the parent's CPCU (cost per converted user) model, which does not establish Jampp's advertiser pricing.",
     "source_ids": [
      "V2-S22",
      "V2-S23"
     ]
    },
    "D7": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Always-on Lift Measurement for UA and retargeting using ghost bids, 'available from day 1 at no additional cost' with real-time results. Method stated; product documented only on marketing page.",
     "source_ids": [
      "V2-S22"
     ]
    },
    "D8": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Product page: dashboard, reporting API and 'give your data science team access to log-level data'. No API or log specification found publicly.",
     "source_ids": [
      "V2-S22"
     ]
    },
    "D9": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "Silver platform docs cover campaign budgets, spend caps and lists, but read as operator/mDSP tooling ('for internal use'); advertiser self-serve or campaign API access not established.",
     "source_ids": [
      "RS-S119",
      "RS-S120"
     ]
    },
    "D10": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Jampp CTV (2023, powered by Affle's mediasmart) buys CTV and attributes app installs/re-engagements via leading MMPs; Fetch CTV case listed. Identity method and causal CTV test not documented.",
     "source_ids": [
      "V2-S21",
      "V2-S22"
     ]
    },
    "D11": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Named non-gaming cases: Wallapop, Instacart, Centauro, CashNow, Fetch; Rakuten and Bigo cited in help center. No Jampp-level filing split in sources opened.",
     "source_ids": [
      "RS-S121",
      "RS-S122"
     ]
    }
   },
   "notes": {
    "D1": "R1 agree",
    "D2": "R1 agree",
    "D3": "R2 conservative: lower score",
    "D4": "R1 agree",
    "D5": "R1 agree",
    "D6": "R1 agree",
    "D7": "R6 fact-check override: Fact-check FX1 qualified V2-F05: the method is not documented and the 'modelled on Ghost Ads' wording is not on the page.",
    "D8": "R1 agree",
    "D9": "R3 evidence found by one scorer",
    "D10": "R1 agree",
    "D11": "R3 evidence found by one scorer"
   }
  },
  {
   "vendor_id": "verve-dataseat",
   "scores": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Own product page explicitly documents optimization toward 'installs, subscriptions, purchases, ROAS, or LTV' as live, advertiser-selectable goals — meets the anchor for value/ROAS/LTV optimization documented as live; graded B (vendor page) and not upgraded despite specificity, per the author's stricter-scrutiny instruction.",
     "source_ids": [
      "V2-S13"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Dataseat's own About page names Retargeting as one of three core solution areas (alongside User Acquisition and SKAN campaigns); no suppression/exclusion-control documentation found to support score 3.",
     "source_ids": [
      "V2-S09"
     ]
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Documents SKAN postback ingestion, conversion-value mapping, and 'value-based outcome modeling' in detail; no AdAttributionKit mention found in the pages opened, so not scored 3.",
     "source_ids": [
      "V2-S13"
     ]
    },
    "D4": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No creative-workflow or testing-design documentation found this session.",
     "source_ids": []
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "LinkedIn case cites optimizations 'based on publisher-level data'; inventory discovery lets buyers select SSPs and publishers; site promises data 'at any level'. No documented report schema or blocklist control.",
     "source_ids": [
      "RS-S126",
      "RS-S127",
      "RS-S125"
     ]
    },
    "D6": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "States 'a flat rate on your media spend, with no hidden costs', i.e. fee separated from media; the rate itself is not published.",
     "source_ids": [
      "RS-S125"
     ]
    },
    "D7": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Own page claims CTV spend is 'validated via controlled incrementality testing' but does not name a specific method (geo/PSA/ghost/ITT) or describe results reporting — meets only the anchor for 'claims incrementality without method.' Scored conservatively per the author's stricter-scrutiny instruction for Verve.",
     "source_ids": [
      "V2-S13"
     ]
    },
    "D8": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No reporting-export (API/log-level) documentation found this session.",
     "source_ids": []
    },
    "D9": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Dataseat can be used 'in self-service mode' or managed service covering setup and optimization; no campaign-management API documented.",
     "source_ids": [
      "RS-S127"
     ]
    },
    "D10": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Own page documents CTV inventory tied to 'mobile installs and post-install revenue' with 'spend optimized through outcome-driven decisioning' and a reference to 'controlled incrementality testing' — meets the anchor for documented CTV-to-app reporting, but no identity method (deterministic/probabilistic/household matching) is named, so withheld from score 3 under stricter scrutiny.",
     "source_ids": [
      "V2-S13"
     ]
    },
    "D11": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "One named non-gaming case study was found via a press-release headline (LinkedIn CPI/CPA reduction) during research but the underlying release itself was not opened this session (only its headline/summary was seen), so it is not cited as a scored source; pending that gap, only Verve's own general non-gaming framing supports a claim-level score of 1, below the two-named-case threshold for score 2.",
     "source_ids": []
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Verve page: bidding tunes to installs, subscriptions, purchases, ROAS or LTV using SKAN/MMP signals; OTTO case describes a ROAS-focused SKAN campaign with a rebuilt conversion schema. Marketing-grade only.",
     "source_ids": [
      "V2-S13",
      "RS-S123"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Retargeting on advertiser first-party data with custom segmentation and private ML models; no documented suppression/exclusion controls or holdout option for re-engagement.",
     "source_ids": [
      "RS-S124",
      "RS-S125"
     ]
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Claims 'full support of AdAttributionKit and SKAN', SKAN postback ingestion and CV mapping; LinkedIn/OTTO SKAN cases. No technical doc confirming AdAttributionKit handling or advertiser-facing postback reporting, so held at 2.",
     "source_ids": [
      "RS-S125",
      "V2-S13",
      "RS-S126"
     ]
    },
    "D4": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "B",
     "rationale": "'Creative optimization' listed as an offering and case studies mention creative insights, but no creative services, testing tool or format documentation found.",
     "source_ids": [
      "RS-S127"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "LinkedIn case cites optimizations 'based on publisher-level data'; inventory discovery lets buyers select SSPs and publishers; site promises data 'at any level'. No documented report schema or blocklist control.",
     "source_ids": [
      "RS-S126",
      "RS-S127",
      "RS-S125"
     ]
    },
    "D6": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "States 'a flat rate on your media spend, with no hidden costs', i.e. fee separated from media; the rate itself is not published.",
     "source_ids": [
      "RS-S125"
     ]
    },
    "D7": {
     "score": 1,
     "availability": "unconfirmed",
     "evidence_grade": "B",
     "rationale": "CTV spend 'validated via controlled incrementality testing'; no method, design or results reporting documented, and nothing for mobile UA or retargeting.",
     "source_ids": [
      "V2-S13"
     ]
    },
    "D8": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "B",
     "rationale": "Claims buyers can 'access all of your data, without limits, at any level - from bids to sales', but no reporting API, scheduled export or log specification is published.",
     "source_ids": [
      "RS-S125",
      "RS-S127"
     ]
    },
    "D9": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Dataseat can be used 'in self-service mode' or managed service covering setup and optimization; no campaign-management API documented.",
     "source_ids": [
      "RS-S127"
     ]
    },
    "D10": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "CTV offered for app UA, linking ad exposure to mobile installs and post-install revenue with controlled incrementality testing claimed; identity method not stated.",
     "source_ids": [
      "V2-S13"
     ]
    },
    "D11": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Named non-gaming Dataseat cases: LinkedIn (app activations) and OTTO (e-commerce ROAS); site lists non-gaming verticals. No Dataseat-level revenue split found in Verve sources opened.",
     "source_ids": [
      "RS-S126",
      "RS-S123"
     ]
    }
   },
   "notes": {
    "D1": "R1 agree",
    "D2": "R1 agree",
    "D3": "R1 agree",
    "D4": "R1 agree",
    "D5": "R3 evidence found by one scorer",
    "D6": "R3 evidence found by one scorer",
    "D7": "R1 agree",
    "D8": "R1 agree",
    "D9": "R3 evidence found by one scorer",
    "D10": "R1 agree",
    "D11": "R2 conservative: lower score"
   }
  },
  {
   "vendor_id": "V3-Meta-AAC",
   "scores": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "AAC API supports install or app-event optimization via promoted_object and bid strategies incl. LOWEST_COST_WITH_MIN_ROAS; since v25 AAC is created as APP_INSTALLS with advantage_state=advantage_plus_app.",
     "source_ids": [
      "RS-S128",
      "RS-S129"
     ]
    },
    "D2": {
     "score": 0,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "AAC automatically applies a 90-day exclusion window: people who installed or opened the app are not eligible, and custom audiences cannot be targeted. Re-engagement is outside this product (suppression exists).",
     "source_ids": [
      "V3-S05"
     ]
    },
    "D3": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "SKAN AAC campaigns (is_skadnetwork_attribution) and AEM documented; SKAN campaigns report reach, impressions, clicks, spend. SKAN 4 and AdAttributionKit specifics not found in docs retrieved.",
     "source_ids": [
      "RS-S128",
      "V3-S05",
      "RS-S130"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "C",
     "rationale": "Advantage+ creative auto-optimization ('creative enhancements pre-selected') is documented in secondary summaries of Meta's help center; explicit randomized-test design language and playable-ad coverage were not confirmed via a primary doc this session.",
     "source_ids": []
    },
    "D5": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Meta's help page lists placement as a reporting breakdown for Advantage+ app campaigns (surface level, e.g. Feed or Audience Network), not app or bundle level; placements are chosen automatically.",
     "source_ids": [
      "FX1-S23"
     ]
    },
    "D6": {
     "score": "n/a",
     "availability": "n/a",
     "evidence_grade": "C",
     "rationale": "Not scored for this benchmark channel per brief instructions (not established as meaningful this session).",
     "source_ids": []
    },
    "D7": {
     "score": 3,
     "availability": "limited",
     "evidence_grade": "A",
     "rationale": "Conversion Lift is a documented RCT product with an API and results reporting, covering mobile-app-event conversions; access is gated ('contact your Meta Representative'), not self-serve.",
     "source_ids": [
      "V3-S06"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Marketing API / Insights API provide aggregated, scheduled reporting and study-level API access; no impression/bid-level export documented for advertisers this session.",
     "source_ids": [
      "V3-S06"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Meta's Marketing API reference documents POST /act_{id}/campaigns, including app-promotion objectives.",
     "source_ids": [
      "OA1-S06"
     ]
    },
    "D10": {
     "score": "n/a",
     "availability": "n/a",
     "evidence_grade": "C",
     "rationale": "Not a CTV product.",
     "source_ids": []
    },
    "D11": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; vertical breadth not scored.",
     "source_ids": [
      "RS-S128"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "AAC API supports install or app-event optimization via promoted_object and bid strategies incl. LOWEST_COST_WITH_MIN_ROAS; since v25 AAC is created as APP_INSTALLS with advantage_state=advantage_plus_app.",
     "source_ids": [
      "RS-S128",
      "RS-S129"
     ]
    },
    "D2": {
     "score": 0,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "AAC automatically applies a 90-day exclusion window: people who installed or opened the app are not eligible, and custom audiences cannot be targeted. Re-engagement is outside this product (suppression exists).",
     "source_ids": [
      "V3-S05"
     ]
    },
    "D3": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "SKAN AAC campaigns (is_skadnetwork_attribution) and AEM documented; SKAN campaigns report reach, impressions, clicks, spend. SKAN 4 and AdAttributionKit specifics not found in docs retrieved.",
     "source_ids": [
      "RS-S128",
      "V3-S05",
      "RS-S130"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Up to 50 creative combinations per campaign, asset feed spec, placement and language asset customization; no AAC-specific randomized creative test or playable format documented in pages opened.",
     "source_ids": [
      "RS-S128"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Placement, platform and device breakdowns documented; AAC forces Advantage+ placements (help points to 'alternatives to excluding ad placements'), so no placement block control; no publisher-app reporting.",
     "source_ids": [
      "V3-S05"
     ]
    },
    "D6": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; fee/margin transparency not meaningful for an owned-and-operated auction (impression billing, spend reported).",
     "source_ids": [
      "V3-S05"
     ]
    },
    "D7": {
     "score": 3,
     "availability": "limited",
     "evidence_grade": "A",
     "rationale": "Ad Studies API: randomized test/control Conversion Lift with multi-cell designs and results via objectives edge; doc warns Conversion Lift is 'currently limited' (contact Meta rep).",
     "source_ids": [
      "RS-S131"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Ads Insights API returns aggregated performance at account/campaign/ad set/ad level with breakdowns; no impression-level export.",
     "source_ids": [
      "RS-S132"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Marketing API creates and updates AAC campaigns, ad sets (budgets, bid strategies, bid caps/ROAS floors) and ads; self-serve Ads Manager.",
     "source_ids": [
      "RS-S128",
      "RS-S129"
     ]
    },
    "D10": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; CTV-to-app not a meaningful dimension for AAC.",
     "source_ids": [
      "RS-S128"
     ]
    },
    "D11": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; vertical breadth not scored.",
     "source_ids": [
      "RS-S128"
     ]
    }
   },
   "notes": {
    "D1": "R2 higher score has grade-A evidence",
    "D2": "R2 conservative: lower score",
    "D3": "R3 evidence found by one scorer",
    "D4": "R1 agree",
    "D5": "R6 fact-check override: Fact-check FX1 contradicted the first-pass reading that Meta documents no placement reporting (V3-F01).",
    "D6": "R1 agree",
    "D7": "R1 agree",
    "D8": "R1 agree",
    "D9": "R6 fact-check override: Audit re-check OA1 attached primary API documentation (V3-F14).",
    "D10": "R1 agree",
    "D11": "R3 evidence found by one scorer"
   }
  },
  {
   "vendor_id": "V3-Google-AppCampaigns",
   "scores": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Official Google Ads Help page documents tCPI, tCPA, and tROAS (value/ROAS-based) bidding as live options for App campaigns.",
     "source_ids": [
      "V3-S03"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Google Ads API documentation names a distinct APP_CAMPAIGN_FOR_ENGAGEMENT subtype for re-engagement; documented suppression/holdout for re-engagement specifically was not confirmed this session.",
     "source_ids": [
      "V3-S11"
     ]
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Google's App Attribution Partner (AAP) program is documented to receive SKAdNetwork conversion data equivalent to App campaign conversions (per Google Ads Help summaries reviewed this session); direct primary-doc confirmation of AdAttributionKit ingestion specifically by Google Ads was not obtained this session.",
     "source_ids": []
    },
    "D4": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Directional experiments randomly select a test group per auction for even impression distribution (up to 20 videos head-to-head, Android only); App Uplift experiments; opt-in interactive high engagement formats.",
     "source_ids": [
      "RS-S137",
      "RS-S138",
      "RS-S139"
     ]
    },
    "D5": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Google's App campaigns placement report names apps and publishers, websites and videos, with impressions only; low-volume placements are grouped. Blocking app inventory for App campaigns is not documented, so the anchor for 3 is not met.",
     "source_ids": [
      "OA1-S01"
     ]
    },
    "D6": {
     "score": "n/a",
     "availability": "n/a",
     "evidence_grade": "C",
     "rationale": "Not scored for this benchmark channel per brief instructions.",
     "source_ids": []
    },
    "D7": {
     "score": 3,
     "availability": "limited",
     "evidence_grade": "A",
     "rationale": "Conversion Lift is documented with user-based and geo-based RCT designs and API-adjacent setup flows; access is gated ('contact your Google account representative'), not self-serve.",
     "source_ids": [
      "V3-S07"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Google Ads API supports scheduled/programmatic reporting at campaign level (aggregated); no impression/placement-level export documented for App campaigns.",
     "source_ids": [
      "V3-S11"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Google Ads API documents campaign creation, CampaignBudget objects, and bidding-strategy objects for App campaigns, i.e., a full campaign-management API (legacy installs-only subtype excluded from the API, UI-only).",
     "source_ids": [
      "V3-S11"
     ]
    },
    "D10": {
     "score": "n/a",
     "availability": "n/a",
     "evidence_grade": "C",
     "rationale": "Not a CTV product (YouTube inclusion in App campaigns is in-app-outcome buying on a video surface, not a distinct CTV-to-app bridge product).",
     "source_ids": []
    },
    "D11": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; vertical breadth not scored.",
     "source_ids": [
      "RS-S140"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Bid strategies: tCPI, tCPA (in-app actions), tCPpre, Maximize conversions, Maximize conversion value and Target ROAS for installs/engagement campaigns.",
     "source_ids": [
      "V3-S03",
      "RS-S133"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "App campaigns for engagement re-engage installed users via app-user audience segments (Firebase/Play/AAP) with inclusion and exclusion conditions. No holdout documented specifically for engagement campaigns.",
     "source_ids": [
      "RS-S134",
      "RS-S135"
     ]
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Dedicated SKAdNetwork report; API exposes sk_ad_network installs, fine conversion value and user type; help references SKAdNetwork version 4. AdAttributionKit not mentioned in pages opened.",
     "source_ids": [
      "RS-S136",
      "FX1-S24"
     ]
    },
    "D4": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Directional experiments randomly select a test group per auction for even impression distribution (up to 20 videos head-to-head, Android only); App Uplift experiments; opt-in interactive high engagement formats.",
     "source_ids": [
      "RS-S137",
      "RS-S138",
      "RS-S139"
     ]
    },
    "D5": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "Network distribution explained (Search, YouTube, Play, Discover, GDN, AdMob) but no App-campaign placement or publisher-app report, nor placement exclusion control, found in pages opened.",
     "source_ids": [
      "RS-S140",
      "FX1-S24"
     ]
    },
    "D6": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; fee/margin transparency not meaningful for an owned auction.",
     "source_ids": [
      "V3-S03"
     ]
    },
    "D7": {
     "score": 3,
     "availability": "limited",
     "evidence_grade": "A",
     "rationale": "Conversion Lift based on users or geography: randomized treatment/control, Bayesian methodology, reports incremental conversions, iCPA and iROAS in Google Ads; not available for all accounts (via rep).",
     "source_ids": [
      "V3-S07"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Google Ads API SearchStream/GAQL returns aggregated App-campaign metrics incl. SKAN segments and asset performance; no impression-level export.",
     "source_ids": [
      "FX1-S24"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Google Ads API creates App campaigns (installs, engagement, pre-registration) with budget, bidding strategy, targeting, ad groups and asset ads; App Campaign Legacy (installs) is UI-only.",
     "source_ids": [
      "V3-S11"
     ]
    },
    "D10": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; CTV-to-app not meaningful for App campaigns.",
     "source_ids": [
      "RS-S140"
     ]
    },
    "D11": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; vertical breadth not scored.",
     "source_ids": [
      "RS-S140"
     ]
    }
   },
   "notes": {
    "D1": "R1 agree",
    "D2": "R1 agree",
    "D3": "R1 agree",
    "D4": "R2 higher score has grade-A evidence",
    "D5": "R6 fact-check override: Audit re-check OA1 contradicted the reading that Google documents no placement reporting (V3-F02).",
    "D6": "R1 agree",
    "D7": "R1 agree",
    "D8": "R1 agree",
    "D9": "R1 agree",
    "D10": "R1 agree",
    "D11": "R3 evidence found by one scorer"
   }
  },
  {
   "vendor_id": "V3-TikTok-SmartPlus",
   "scores": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Official help center documents three optimization goals: install (MAI), in-app event (AEO), and value-based optimization (VBO).",
     "source_ids": [
      "V3-S01"
     ]
    },
    "D2": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "No re-engagement/suppression documentation for Smart+ App Campaigns was opened this session.",
     "source_ids": []
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Official help page (last updated Feb 2025) documents SKAN 4.0 support in full: fine/coarse conversion values, three postback windows, crowd anonymity tiers, and 4-digit source_id. AdAttributionKit is not mentioned on this page.",
     "source_ids": [
      "V3-S08"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Smart+ documents automated optimization of video/text/CTA creative and automated budget shifting toward top performers; Spark and non-Spark ads cannot be mixed in one campaign; no disclosed randomized-split design.",
     "source_ids": [
      "V3-S01"
     ]
    },
    "D5": {
     "score": 0,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Official documentation states manual placement selection 'is not supported by Smart+ Campaigns at this time, as it will default to automatic placement selection'; no placement-level reporting is documented.",
     "source_ids": [
      "V3-S01"
     ]
    },
    "D6": {
     "score": "n/a",
     "availability": "n/a",
     "evidence_grade": "C",
     "rationale": "Not scored for this benchmark channel per brief instructions.",
     "source_ids": []
    },
    "D7": {
     "score": 3,
     "availability": "limited",
     "evidence_grade": "A",
     "rationale": "Conversion Lift Study is documented as a standardized RCT product (test/control split) supporting app installs as an objective, with results reporting; explicitly run as an 'exclusive managed service.'",
     "source_ids": [
      "V3-S09"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "TikTok Marketing API's Reporting API supports synchronous/asynchronous aggregated reporting (per official API portal summaries reviewed this session); log-level export was not confirmed.",
     "source_ids": []
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "TikTok's API reference documents campaign/create with the APP_PROMOTION objective and budgets.",
     "source_ids": [
      "OA1-S12"
     ]
    },
    "D10": {
     "score": "n/a",
     "availability": "n/a",
     "evidence_grade": "C",
     "rationale": "Not a CTV product.",
     "source_ids": []
    },
    "D11": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; vertical breadth not scored.",
     "source_ids": [
      "RS-S141"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Smart+ App optimization goals: MAI (install), AEO (in-app event) and VBO (value, Android only); iOS real-time reporting enables Target ROAS bidding for eligible apps.",
     "source_ids": [
      "RS-S141",
      "RS-S142"
     ]
    },
    "D2": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "Smart+ App documentation covers app-install promotion only; no re-engagement, audience upload or suppression settings found in the Smart+ pages opened.",
     "source_ids": [
      "RS-S141"
     ]
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "SKAN 4.0 documented (coarse values, three windows, four-digit source_id used in TikTok modeling); SKAN data in Ads Manager and MMPs. AdAttributionKit not mentioned in pages opened.",
     "source_ids": [
      "V3-S08",
      "RS-S142"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Automated creative generation, fatigue detection, budget shifting to best creative, Interactive Add-ons, Recommended Ads and App2Carousel; no randomized creative test design documented for Smart+.",
     "source_ids": [
      "RS-S143",
      "RS-S141"
     ]
    },
    "D5": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "Smart+ App uses automatic placements (TikTok, Lemon8, Pangle on Android) with manual selection unsupported; no placement or Pangle publisher reporting/blocklist documented in pages opened.",
     "source_ids": [
      "RS-S141"
     ]
    },
    "D6": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; fee/margin transparency not meaningful for an owned auction.",
     "source_ids": [
      "RS-S141"
     ]
    },
    "D7": {
     "score": 3,
     "availability": "limited",
     "evidence_grade": "A",
     "rationale": "Conversion Lift Study: test vs control groups, reports incremental conversions, lift, CPIC, iROAS and confidence; app installs supported; run as an exclusive managed service for eligible spend.",
     "source_ids": [
      "V3-S09"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Official TikTok Business API SDK includes Reporting APIs; Ads Manager custom-column reporting documented. No impression-level export documented.",
     "source_ids": [
      "RS-S144",
      "RS-S142"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Official SDK documents Campaign Creation API (APP_PROMOTION objective, budget, ACO ads); self-serve Ads Manager for Smart+ App. Smart+-specific API parameters not verified.",
     "source_ids": [
      "RS-S144",
      "RS-S145"
     ]
    },
    "D10": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; CTV-to-app not meaningful.",
     "source_ids": [
      "RS-S141"
     ]
    },
    "D11": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; vertical breadth not scored.",
     "source_ids": [
      "RS-S141"
     ]
    }
   },
   "notes": {
    "D1": "R1 agree",
    "D2": "R1 agree",
    "D3": "R1 agree",
    "D4": "R1 agree",
    "D5": "R4 zero on grade-A absence",
    "D6": "R1 agree",
    "D7": "R1 agree",
    "D8": "R1 agree",
    "D9": "R6 fact-check override: Audit re-check OA1 attached primary API documentation (V3-F14).",
    "D10": "R1 agree",
    "D11": "R3 evidence found by one scorer"
   }
  },
  {
   "vendor_id": "V3-Apple-Ads",
   "scores": {
    "D1": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Bidding is max CPT or Maximize Conversions toward a target CPA per tap-through install, plus optional install CPA caps; no post-install event or value optimization documented.",
     "source_ids": [
      "RS-S146",
      "EF-S12"
     ]
    },
    "D2": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Customer types 'Returning users' (reacquire prior downloaders) and 'New users' (suppress existing) use Apple's own download history; no advertiser/MMP audience re-engagement, holdout or incrementality option.",
     "source_ids": [
      "RS-S147"
     ]
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Apple Ads registered with AdAttributionKit on 10 Apr 2025 'beginning with SKAdNetwork versions 1-3' and keeps the AdServices attribution API for campaign-level attribution; SKAN 4-style postbacks not documented.",
     "source_ids": [
      "V3-S02",
      "C-S22"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Ad variations built from up to 70 custom product pages (videos, screenshots, deep links) per keyword theme/audience; no split-test design or interactive formats documented.",
     "source_ids": [
      "RS-S148"
     ]
    },
    "D5": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Owned inventory with four named placements (Today tab, Search tab, search results, product pages) reported per campaign/ad, plus keyword and search-term reporting and negative-keyword exclusion controls.",
     "source_ids": [
      "RS-S149",
      "RS-S150",
      "RS-S146"
     ]
    },
    "D6": {
     "score": "n/a",
     "availability": "n/a",
     "evidence_grade": "C",
     "rationale": "Not scored for this benchmark channel per brief instructions.",
     "source_ids": []
    },
    "D7": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "Only grade-C evidence found by either scorer.",
     "source_ids": []
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Campaign Management API documentation confirms reporting endpoints exist ('pull reports programmatically'); the excerpt retrieved did not state whether granularity extends to placement/impression level.",
     "source_ids": [
      "V3-S12"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Campaign Management API documentation confirms OAuth2 REST API support for creating/managing campaigns, ad groups, and keywords programmatically.",
     "source_ids": [
      "V3-S12"
     ]
    },
    "D10": {
     "score": "n/a",
     "availability": "n/a",
     "evidence_grade": "C",
     "rationale": "Not a CTV product.",
     "source_ids": []
    },
    "D11": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; vertical breadth not scored.",
     "source_ids": [
      "RS-S149"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Bidding is max CPT or Maximize Conversions toward a target CPA per tap-through install, plus optional install CPA caps; no post-install event or value optimization documented.",
     "source_ids": [
      "RS-S146",
      "EF-S12"
     ]
    },
    "D2": {
     "score": 1,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Customer types 'Returning users' (reacquire prior downloaders) and 'New users' (suppress existing) use Apple's own download history; no advertiser/MMP audience re-engagement, holdout or incrementality option.",
     "source_ids": [
      "RS-S147"
     ]
    },
    "D3": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Apple Ads registered with AdAttributionKit on 10 Apr 2025 'beginning with SKAdNetwork versions 1-3' and keeps the AdServices attribution API for campaign-level attribution; SKAN 4-style postbacks not documented.",
     "source_ids": [
      "V3-S02",
      "C-S22"
     ]
    },
    "D4": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Ad variations built from up to 70 custom product pages (videos, screenshots, deep links) per keyword theme/audience; no split-test design or interactive formats documented.",
     "source_ids": [
      "RS-S148"
     ]
    },
    "D5": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Owned inventory with four named placements (Today tab, Search tab, search results, product pages) reported per campaign/ad, plus keyword and search-term reporting and negative-keyword exclusion controls.",
     "source_ids": [
      "RS-S149",
      "RS-S150",
      "RS-S146"
     ]
    },
    "D6": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; fee/margin transparency not meaningful for Apple's owned auction.",
     "source_ids": [
      "RS-S150"
     ]
    },
    "D7": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "No incrementality, lift or holdout experiment offering found in the Apple Ads help center pages listed in its sitemap.",
     "source_ids": [
      "RS-S151",
      "RS-S152"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Apple Ads Platform API lets advertisers and partners 'pull reports programmatically'; dashboards and Insights provide aggregated metrics. No impression-level export.",
     "source_ids": [
      "RS-S153",
      "RS-S150"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Apple Ads Platform API creates and manages campaigns, ad groups, keywords and bids (incl. Maximize Conversions campaigns) with OAuth roles; self-serve Advanced UI.",
     "source_ids": [
      "RS-S153"
     ]
    },
    "D10": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; CTV-to-app not applicable to App Store ads.",
     "source_ids": [
      "RS-S149"
     ]
    },
    "D11": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Benchmark channel; vertical breadth not scored.",
     "source_ids": [
      "RS-S149"
     ]
    }
   },
   "notes": {
    "D1": "R3 evidence found by one scorer",
    "D2": "R3 evidence found by one scorer",
    "D3": "R2 conservative: lower score",
    "D4": "R3 evidence found by one scorer",
    "D5": "R3 evidence found by one scorer",
    "D6": "R1 agree",
    "D7": "R3 n/e",
    "D8": "R1 agree",
    "D9": "R1 agree",
    "D10": "R1 agree",
    "D11": "R3 evidence found by one scorer"
   }
  },
  {
   "vendor_id": "V3-Amazon-DSP-App",
   "scores": {
    "D1": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Official Amazon Ads announcement documents optimization toward CPI, CPA, and ROAS as live capabilities of the DSP events manager for app campaigns.",
     "source_ids": [
      "V3-S10"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Documentation states advertisers can build audience segments from app install/in-app-event signals for targeting; documented suppression/holdout specifically for re-engagement was not confirmed.",
     "source_ids": [
      "V3-S10"
     ]
    },
    "D3": {
     "score": 0,
     "availability": "unconfirmed",
     "evidence_grade": "A",
     "rationale": "The events-manager announcement explicitly scopes this app-campaign feature to 'Android and Fire TV/tablet devices'; no iOS/SKAN/AdAttributionKit support is documented for this product in sources opened this session.",
     "source_ids": [
      "V3-S10"
     ]
    },
    "D4": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "App-specific creative-testing documentation was not opened this session; Amazon DSP's general 'Performance+' AI creative product was identified only via search snippet, not fetched.",
     "source_ids": []
    },
    "D5": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "Placement/app-bundle-level transparency for Amazon DSP was not confirmed via a primary doc opened this session.",
     "source_ids": []
    },
    "D6": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "Only grade-C evidence found by either scorer.",
     "source_ids": []
    },
    "D7": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "C",
     "rationale": "Only grade-C evidence found by either scorer.",
     "source_ids": []
    },
    "D8": {
     "score": 2,
     "availability": "limited",
     "evidence_grade": "A",
     "rationale": "Amazon Marketing Cloud lets advertisers query event-level fields inside a clean room, but outputs are aggregated and anonymous only, and access is by request; no log-level export to the buyer.",
     "source_ids": [
      "V3-S13"
     ]
    },
    "D9": {
     "score": 3,
     "availability": "live",
     "evidence_grade": "A",
     "rationale": "Amazon documents a DSP Campaign Management API that creates campaigns and changes bids and budgets.",
     "source_ids": [
      "OA1-S16"
     ]
    },
    "D10": {
     "score": 2,
     "availability": "beta",
     "evidence_grade": "B",
     "rationale": "Buys Streaming TV (Prime Video, Fire TV) and events manager reports MMP-attributed app installs incl. Fire TV devices; cross-device CTV-to-mobile identity method and causal test not documented.",
     "source_ids": [
      "V3-S04",
      "V3-S10"
     ]
    },
    "D11": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Benchmark channel; vertical breadth not scored.",
     "source_ids": [
      "V3-S04"
     ]
    }
   },
   "second": {
    "D1": {
     "score": 3,
     "availability": "beta",
     "evidence_grade": "B",
     "rationale": "Events manager (beta) passes MMP install and in-app event conversions with values, enabling optimization toward CPI, CPA and ROAS; US/CA/MX/BR, Android and Fire TV/tablet only (Feb 2024 announcement).",
     "source_ids": [
      "V3-S10"
     ]
    },
    "D2": {
     "score": 2,
     "availability": "beta",
     "evidence_grade": "B",
     "rationale": "App install/in-app event signals can build custom audience segments; AMC audience APIs create rule-based audiences. No suppression or re-engagement holdout documented for app campaigns.",
     "source_ids": [
      "V3-S10",
      "V3-S13"
     ]
    },
    "D3": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "B",
     "rationale": "App events manager is documented for Android and Fire devices only; no SKAdNetwork or AdAttributionKit support found in pages opened.",
     "source_ids": [
      "V3-S10"
     ]
    },
    "D4": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "B",
     "rationale": "DSP page covers auto-generated e-commerce creative and standard IAB sizes; no app-campaign creative testing or playable formats documented.",
     "source_ids": [
      "V3-S04"
     ]
    },
    "D5": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "B",
     "rationale": "Page cites 'transparent reporting', inventory hub and deals, but no site/app-level reporting or block/allow-list control documented in pages opened.",
     "source_ids": [
      "V3-S04"
     ]
    },
    "D6": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "B",
     "rationale": "Meaningful for a DSP buying third-party supply, but no fee schedule or media/fee split in pages opened; managed service typically requires US$50k minimum spend.",
     "source_ids": [
      "V3-S04"
     ]
    },
    "D7": {
     "score": "n/e",
     "availability": "unconfirmed",
     "evidence_grade": "B",
     "rationale": "Only third-party brand lift and offline sales lift studies mentioned; no app-install incrementality option documented.",
     "source_ids": [
      "V3-S04"
     ]
    },
    "D8": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "AMC reporting APIs run queries on demand or on schedule, but advertisers 'can only access aggregated, anonymous outputs'; no log-level export.",
     "source_ids": [
      "V3-S13"
     ]
    },
    "D9": {
     "score": 2,
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Self-service option gives advertisers 'full control of their campaigns'; managed service alternative. Campaign-management API not verified in pages opened.",
     "source_ids": [
      "V3-S04"
     ]
    },
    "D10": {
     "score": 2,
     "availability": "beta",
     "evidence_grade": "B",
     "rationale": "Buys Streaming TV (Prime Video, Fire TV) and events manager reports MMP-attributed app installs incl. Fire TV devices; cross-device CTV-to-mobile identity method and causal test not documented.",
     "source_ids": [
      "V3-S04",
      "V3-S10"
     ]
    },
    "D11": {
     "score": "n/a",
     "availability": "live",
     "evidence_grade": "B",
     "rationale": "Benchmark channel; vertical breadth not scored.",
     "source_ids": [
      "V3-S04"
     ]
    }
   },
   "notes": {
    "D1": "R1 agree",
    "D2": "R1 agree",
    "D3": "R4 zero on grade-A absence",
    "D4": "R1 agree",
    "D5": "R1 agree",
    "D6": "R3 n/e",
    "D7": "R3 n/e",
    "D8": "R6 fact-check override: Fact-check qualified V3-F06: AMC outputs are aggregated only, which does not meet the anchor for 3.",
    "D9": "R6 fact-check override: Audit re-check OA1 found primary API documentation (V3-F14).",
    "D10": "R3 evidence found by one scorer",
    "D11": "R3 evidence found by one scorer"
   }
  }
 ]
}