Technical Communications · Solutions Architect Interview

Two Weeks to Kickoff

A fake soccer ball, a live broadcast to millions, and why we built a controller instead of retraining the model

Yariv Barsheshat · September 10, 2026
Case: real-time computer vision for virtual ad replacement — mtl.ai, Montréal · UEFA Euro 2024

yariv@barsheshat.com1 / 5
The business problem

A billboard ad started fooling our model,
14 days before Euro 2024

The situation

  • Virtual ad replacement: camera feed → our models find the billboards and everything in front of them → the ad is swapped digitally → to air, live
  • A new stadium ad featuring a fake soccer ball appeared. The production model detected it as a real ball — a visible artifact on air every time the ad rotated in
  • Stakes: millions of viewers, sponsors paying for clean replacement, no retake in live sport
  • Constraints: 14 days, no downtime, and the fix could not degrade the 99% of frames that were already right

Business needs

  • Zero visible artifacts on air, from match one
  • No regression anywhere else in the broadcast
  • Operators at the stadium can act without an engineer on call
  • Ready inside two weeks, with a way to verify it

Technical needs

  • Detections by class (ball vs players) instead of one merged class
  • Thresholds that vary by region of the frame and by time
  • A control surface operators already understand
  • Validation that doesn't require a full retrain cycle
Two Weeks to Kickoff2 / 5
Options and tradeoffs

Three options, honestly weighed

OptionTime to safeWhat you gainWhat it costsVerdict
Retrain the model with the new ad in the data Weeks: collect footage, train, full validation pass Fixes the root cause inside the model No guarantee performance stays consistent elsewhere; a new model to re-prove; nothing to roll back to if it regresses on air Not in 14 days
Raise the ball threshold globally Hours Trivial to ship Real balls missed across the whole pitch — the one object the system must track Wrong trade
Regional, class-aware threshold controller Days; the model itself is unchanged in weights Surgical: only that class, only that region, only while the ad shows. Reversible in one control. Testable in isolation Manual: relies on operator attention and a priori knowledge of where the ad appears. A fix around the model, not in it Chosen

The tradeoff in one line: an operational fix over a model fix — certainty by kickoff, paid for with a human in the loop.

Two Weeks to Kickoff3 / 5
The architecture

Two changes: one output layer, one controller — no retrain

Broadcast camera feedlive frames from the stadium
→
Detection modelchanged: output layer now reports per class (ball · players · …) instead of one merged class. Weights untouched
→
Threshold controllernew: threshold = f(class, region of frame). Predefined regions · live adjustment · applied before detections reach compositing
→
Broadcast systemcompositing + ad replacement → to air
The model's weights never changed. Everything that already worked kept working; only the ball class, in chosen regions, got stricter on demand.
Operator control surfaceMPC-style pad controller the operators already use at the stadium
T − 60 mindefine regions where the problem ad is known to appear
T − 2 minad rotates in → raise ball threshold in that region with one control; lower it when it rotates out
Two Weeks to Kickoff4 / 5
Impact, limits, lessons

Zero false positives across the tournament

0
false positives triggered by the ad, across every Euro 2024 match
< 14 days
from discovery to running live at kickoff — [actual build days]
Unchanged
detection performance everywhere else — model weights never touched

What made it work

  • Talked to the operators first. Learned their controls and their reality — a 2-minute lead time — and designed to it
  • Chose the reversible option under a hard deadline
  • Separated the model's knowledge from the broadcast's policy

Limitations, and what's next

  • Manual, and relies on knowing where the ad will show
  • A fix around the model, not in it
  • Next: auto-propose regions from the ad schedule; log operator tunings as labels for the next retrain; keep per-class output for good
Two Weeks to Kickoff · Yariv Barsheshat5 / 5
← → navigate · N notes · F fullscreen
1 / 5