DEV Community

Aleksander Sekowski
Aleksander Sekowski

Posted on

10 RMT Mapping Mistakes That Mislabel Video Inventory and Kill Fill

On October 28, 2026, Wurl reported that most programmatic CTV bid requests still lack usable program names and that thousands of distinct genre strings showed up in a two-hour sample, often out of step with what was actually on screen (Business Wire). That is not a reporting cosmetic. IAB Redefining Media Types (RMT) plans to read lean-back versus personal-screen viewing and eight binary impression attributes from the same OpenRTB object buyers already receive. When two source paths tell different stories, RMT does not pause and ask. It emits one label, and DSPs price against it as if the impression were homogeneous.

Jamie Finstein at IAB made the agent angle plain on October 11: if humans cannot agree what CTV means, autonomous buyers will automate the confusion (Beet.TV). The fix is not a prettier deck slide. It is bid requests where the fields that feed the classifier agree before the taxonomy runs. These ten patterns pass JSON validation and still mislabel inventory badly enough to kill fill.

  1. video.plcmt and deprecated video.placement copied as the same integer. OpenRTB 2.6 moved format semantics into AdCOM plcmt. Legacy placement used a different enum table. Adapters that copy one number into both fields ship in-stream and out-stream claims on one impression. RMT’s ad-format bit trusts plcmt; buyers still scanning placement bid the wrong product. We walked the field history in placement versus plcmt.

  2. playbackmethod arrays that include both sound-on and sound-off codes. RMT sound state is derived from playbackmethod values 1 and 5 (sound on) versus 2 and 6 (sound off). A request like [1, 2] validates. Your reducer must pick one answer. Pick wrong and every buyer filtering for muted autoplay either overpays or never bids.

  3. skipmin and skipafter without video.skip = 1. Skip contract fields are only defined when the impression is skippable. Offsets on a non-skippable slot validate as JSON. RMT cannot honestly derive skip-enabled versus completion-required from that shape, yet downstream reporting will still bucket the impression.

  4. device.devicetype says connected TV while the request is a mobile web site. Macro buckets (lean back versus personal screen) lean heavily on devicetype 3 versus 4. A living-room stream sent as site with mobile: 1 and no app object contradicts the device block. Agentic buyers encoding Finstein’s shared language will classify the inventory as phone feed inventory and apply the wrong bid multipliers.

  5. video.pos = 7 (full screen) while creative width and height undercut the device. Full-screen presentation is one of RMT’s weak-proxy attributes. Declaring full screen without video.w, video.h, device.w, and device.h lining up produces a lean-back label on a partial player chrome. CTV buyers notice when the creative letterboxes and drop bids.

  6. content.cat and content.genre describe different programming than content.title or series metadata. Wurl’s gap analysis is this mistake at scale. Contextual and agentic paths read taxonomy IDs and genre strings as ground truth. Empty title, missing series, and a genre label that does not match the scene classify the break incorrectly before anyone watches the stream.

  7. video.linearity = 2 (non-linear) while plcmt still marks in-stream pod. Pause, overlay, and squeezeback formats need portfolio signaling aligned with linearity. Programmatic pause launches (for example TF1 AdPause opening to DSP demand this week) only scale when the bid request says non-linear in the same breath as the CTV portfolio subtype. Mixed signals send linear VAST buyers at inventory that needs a different creative contract.

  8. Video imp sized from banner geometry. An imp with video object but truth taken from banner.w and banner.h validates when mtype is wrong or dual typed. RMT device and format reducers read conflicting dimensions. Duration and pod fields such as rqddurs may describe audio or video pods the player never schedules; see the rqddurs rule doc for pod shape mismatches.

  9. device.lmt, regs.gdpr, and user.ext consent extensions telling opposite addressability stories. RMT addressability is inferred from ID presence and limit flags, not from a dedicated boolean yet. A request with IFA present, lmt: 1, and consent strings denying personalization still validates. Buyers treating addressability as binary will mis-segment and waste bids on unaddressable impressions.

  10. mtype and the populated object disagree (video versus native versus banner). OpenRTB 2.6 tightened mtype so exchanges know which sub-object is authoritative. Legacy pipelines populate multiple objects. RMT’s ad-format reducer reads video enums while the auction clears a native asset. The impression clears validation; the buyer’s creative checker rejects the response and fill drops to zero.

How you catch it

RMT is not a parallel schema file. It is a reducer over live OpenRTB 2.6 and AdCOM fields documented in Redefining Media Types: eight new claims, and the bidstream fields they land on. An LLM implementing AdCP, ARTF, or AAMP can patch or negotiate a buy and still emit a bid request where plcmt, devicetype, and content disagree. The RPC returns OK. The wire object is what the exchange runs.

RTBlint is the deterministic check on that object: cargo install rtblint or npm install rtblint-core, validate against the dated OpenRTB snapshot your exchange runs, and fix cross-field contradictions before RMT labels attach. It is independent of IAB Tech Lab and of AAO; the public specs do not require it, but someone has to catch illegal combinations the taxonomy assumes away.

When the auction wins but the served creative does not match the classified format, run the live tag URL through the VAST tag tester and walk wrapper hops in the VAST inspector. Bid-request labels and tag payloads fail on different clocks; you need both checks before you trust fill.

Where to go next

Fix the disagreements first. RMT will not do that for you. It will only make the wrong answer easier to scale.

Top comments (0)