Back to Articles

Price Tracker and Competitive Data

SantiUpdated January 24, 2026

So it turns out this is not just a blog.

I'm a software engineer. Whenever there's something I want to exist inside a computer that doesn't exist already, I make it exist.

I've wanted an interesting data project, partially to teach myself Postgres, partially because SQL has always been my weakest point as a developer. Before I started building websites (such as the one you're currently reading! I built this myself, there's no Wordpress behind it, no nothing, just Next.js and Postgres), I was a mobile developer and you don't write a lot of SQL when you write Android apps.

Then, I decided to build a Value Vintage price tracker so I could keep track of the price of certain cards, weekly movements, etc. Just a way to stay on top of what's happening price-wise in the format.

After I was done with that, something magical happened: I met Rain, the developer for TOB(y), the Tournament Organizer Bot we use for Value Vintage tournaments, and they provided me with a way to extract the tournament data for every VV tournament ever hosted with TOB(y).

Which means I have the players, the decks they played, their results, the tournaments and the results of each round.

What can you even build with that?

A competitive data analysis tool. You can now check the winrates of cards, archetypes and decks against other cards, archetypes or decks. And you can see a leaderboard of the cards, archetypes and players who are doing the best in the format. Tangentially, this means playing in online tournaments and doing well rewards you with being on top of the leaderboard. We were already playing mostly for glory, but now glory is quantifiable.

And obviously, the more data we have, the more reliable our data set becomes. This is a pretty small data set so far (with a bit over 500 matches reported), so the more people playing online tournaments and the more online tournaments being played using TOB(y), the better our data (and our collective understanding of the format!) becomes.

Could this work for other formats?

As long as they're using TOB(y) for tournament hosting, yes, in theory I could make it work. If you're using TOB(y) for your unsanctioned format and want a data project done on it, let me know about it. If you're not using TOB(y), you should be using it.

What are some peculiarities when it comes to the data?

I'm using the Moxfield username of the player who built the deck reported by a player as their username. This means if you register with a deck someone else built without cloning it, your result will be assigned to a player with their Moxfield username and your Discord id. Just clone the deck beforehand.

What is coming next?

My next idea is to make data filterable by date, and to add a "Tournament view" that allows players to see the results of tournaments, the full bracket with results (including amount of wins and losses), decklists for each player, etc.