Data-rich "match intro" overlay for tournament livestreams

Here’s something we’ve been playing with in our event livestreams over the last few weeks – a display to show some additional info before each match starts:

The original goal was just to show the name and location of each team before the match started, as TM will show this info on the non-overlay match intro but won’t show it if you’re using the overlay display. But after a few weeks’ worth of feature creep, it now does some additional stuff:

  • Optionally show some season-long team stats, which are pulled from the RobotEvents API and updated every few minutes.
  • Optionally hide the country from each team’s location (to save space, since at most events all teams are from the same country)
  • For VRC events only, optionally show the predicted match outcome as forecast by

VIQC, VEX U, and RADC events are also supported, here are some screenshots of what those look like:

More screenshots

The display itself is just a web page, loaded as a “browser source” in OBS. There is a small companion app which interfaces with TM and tells the display when a match is started or queued. The display will hide itself when a match is started and reappear when the next match is queued, so the whole thing works pretty seamlessly.

More info and download here:

Thanks also to @Mentor_355v for making the match predictions easy to get programmatically, and offering some useful feedback on earlier prototypes.


What an incredibly elegant add on! I hosted my last event yesterday, but will use this in the future and I’ll start playing with it now.

Will I need my own RE api key?

Does it show the next stats right away or does it wait for TM to que the next match?


EPs should not be perceived as projecting outcomes for matches.


and to clear, I do believe having a simple way of introducing teams is a good thing. Including awards from organization from previous seasons by organization … world appearances etc.

good to have this option while teams get set up both for live audience and streams


if it showed stats for the teams at the event for the event only, that’d be pretty cool. showing stats from all competitions and having a prediction bar is where it could get confusing to spectators that don’t know much about vex competitions (ie. a team with poor season stats has done a redesign that works well, and is doing well at the competition but because of their season stats they have a low prediction percentage).


concept is sick, i just dont think its showing the right stats


Thanks! I spent a lot of time tweaking the appearance of the display to make it look nice next to the rest of the TM-generated displays. Pulling a couple of font files from the TM .app bundle (turns out they’re OFL-lisensed) was the finishing touch.

No, the software makes a request to one of my servers, which makes some requests to the RE API behind the scenes (using one of my keys), compiles the relevant stats, and sends them back (please don’t DDoS me :P).

Once a match ends, the display does not reappear until the next match is queued.

Yeah, this is definitely a concern I have had as well. Showing the match predictions on stream was something I wasn’t sure about the first week we tried it, but it got a pretty positive response from several teams (we also show the stream on a big projection screen in the venue) and so we’ve kept it around for now. Additionally:

  1. I think the prediction being tagged as “powered by” makes it at least somewhat clear that the prediction is coming from that website rather than the EP.
  2. Anecdotally, teams “beat the odds” all the time, including the red alliance in that screenshot above.

So all in all, I don’t think this is creating a perception that we have a preference over who wins each match.

(and also, the predictions are optional and off by default)


Gonna be straight up here, this is very cool and all but I’m not sure I like the idea of predicting winners and losers at a children’s robotics tournament.


Might be worth adjusting it to cover up TM’s team info, since it’s redundant data assuming you modified it to show the team’s/alliance’s ranking.

Of course, determining ranking is kind of tricky, especially during elims, so that might not be worth it.


I like it. I think I like the prediction field, but it’s cool that it can be turned on / off. This is the second upgrade to the standard TM displays. I think that’s cool that there is some really advanced displays out there.


Wish there was some way to make the TM function work on mac my entire campus has Apple TV’s all over campus to air play too so I could put it on to multiple displays where we host our events. But because it only works on windows I’m stuck running a long cord to one display if it’s not gonna be stepped on

I’m on a WV team, so this overlay has been present at (I think) every tournament I’ve been to this year. I see the possible downsides, but I’ve never heard anyone complain about the prediction. These competitions are for students, yes, but they are still competitions. There will be losers and winners, and seeing where you stand solely based off of previous match statistics is nice, even if it’s not really accurate.


I’ve issued an updated release of this display:

vextm-obs-intro-screen v2.0.0

Changes in this release:

  • Intro display now takes up the full width of the screen.
  • Intro display now shows current qualification rankings for each team (during qualification matches) and seeds for each alliance (during elimination matches).
    • Exception: Alliance seeds are not shown for VIQC finals matches.
  • Team scouting data is now based only on the current event, rather than season-long data as before. Scouting data is fetched locally from the TM server and updated every time a match is queued.
  • When a match is started, the intro display now slides smoothly off the bottom of the screen rather than just disappearing. Likewise, the display reappears by sliding in from the bottom when the next match is queued.

The updated version can be downloaded from GitHub: