Dev Logs: Introducing...the MAT v2.0! (Part 1)
Yearning for the better days of football games and how FIFA Manager 07 gave me the idea of rebuilding the MAT with modern football data.
A random day in the middle of February saw me reminiscing about the good old days of football games. The days when football games weren’t mostly seen as cash grabs for big game studios through loot boxes and various strange online multiplayer modes. The days when there were more efforts being put into making football games actually felt like a somewhat similar reflection of the football world.
It is hard to find a good football games in current times, there is hardly any entertainment value from EAFC and eFootball anymore other than both games being mostly a race to the top for how much money can one spend to get the best/most overpowered (OP) player cards in the game from loot boxes. And why those player cards aren’t classified as NFTs is a question that I don’t have an answer to. The latest installment of Football Manager is average at best. The Unity-based match engine definitely gives FM26 a fresh feeling, but just like any tech products that are developed back from the ground up, it’s full of bugs, both inconvenient bugs and game-breaking bugs. Besides those three, there aren’t any decent football games out there that I can sink hours into without being tricked into buying something else other than the game itself.
Naturally, I wanted to find something to fill in the Football Manager-sized hole in me, and FIFA Manager came up on my list of nostalgia games that I wanted to revisit. With FIFA Manager 07 being available to download, I had to check it out and, after some tweaks and changes made so that Wine on Linux can actually run the game, it was surprisingly decent for a game of 2006 standard. My favourite part of the game so far is listening to the curated, well-known classical tracks that came with the game while trying to guide St. Pauli out of the Regionalliga Nord (3rd division in Germany at the time).
Like other nerds who play football management games, I wanted to utilise the tools available to me to understand why my St. Pauli team weren’t performing very well even after signing this wunderkid. That was when the game’s MAT section started to reveal itself.
What in the world is MAT?
MAT v1.0
As the name from the title image suggested, MAT is not a fancy acronym by any means. It is simply just a Match Analysis Tool that most Football Manager enthusiasts would know as the Chalkboard before it was removed from FM26. This is in 2006 standard, and while a few very early works of football analytics were already emerging through Prozone (which came up quite recently in Sky Sports’ documentary about Sam Allardyce’s Bolton Wanderers side [timestamp: 1:15:17 - 1:19:02], you can find the footage of it below and I highly recommend checking it out!), the MAT in game is nowhere near the standard of where football analytics is currently at today. Although, it is still good to acknowledge where things started to know how far we’ve come.
The in-game MAT is actually not too far off from what Prozone looked like in the documentary above. As a player, you can view fairly detailed stats from a match like player movements, actions, shots, etc., along with a seasonal summary for the whole team, which included average stats that were calculated using what I thought was per 90s or something similar to the current per 90s that we know (but it wasn’t implicitly said). The best part about the MAT is you can rewatch the entire match in 2D, which is what gave me the idea to remake the MAT using modern tools and metrics that most football analytics enthusiasts already know.
Honestly, for a post-match analysis tool from 2006, it was surprisingly very detailed for how much information it provided and offered a good glimpse into what was available about 20 years ago.
MAT v2.0
Knowing what I have learned so far about football analytics and data, I wasn’t really satisfied with what I got from the game’s MAT. But I also knew I was asking a whole lot from a tool that is only 4 years younger than me and a tool that was made for a wider audience to use within a football game. So I set out to build my own MAT using modern tools, like most data nerds who also know a decent lot about programming. The original intention for the tool was to extract the 2D match from the game because it is the foundation to collect tracking data for more advanced metrics without having to train any model to scan the 3D live matches for on-ball actions and player positioning.
But then, I realised tinkering with the game’s binary files will probably take quite a long time to implement even with the help of an AI assistant. The fact that FIFA Manager 07 was probably coded in Lua didn’t help very much either because Lua is quite low on the list of programming languages that I want to learn. My next idea was to use OBS to record the 2D matches and have a backend model to detect the players, but I quickly realised that it was also not worth the time for a game that I might probably play a few times this year since I’m slowly transitioning out of sports games and have found some non-sports games that I want to sink my free time into.
Finally, I diverted the idea to retain the theme of the tool and make something that is similar using modern football data, visualisations, metrics, and tools. That is where the current state of the MAT at the moment, a personal data dashboard that will constantly improve over time to serve the need of…one person, which is me. For me, the MAT 2.0 is and will always be a work in progress because I know I will constantly have ideas that I want to try out and I see myself as a perfectionist of my own work, so I don’t easily feel satisfied with my own creations. My own version of the MAT is a personal tool, but it is also a sandbox for me to try out new ideas and constantly tweaking things to learn how to make things.
MAT v2.0’s features
At the time of writing, the MAT 2.0 is still only a very early first draft of what I want the tool to be. Definitely feels like the current version that I have is somewhat of a proof of concept. But as I develop the tool more and more, I also felt more and more confident of the concept that I have, which is why I decided to write this article now even though the tool is nowhere near where I want it to be.
With the Match Analysis page, I treat it as a mini match report where I can quickly view metrics and stats that can give me a decent picture of the match, which opens the floor for more in-depth analysis of both teams or any of the players on the Detailed Analysis page if I want to do so. This is me applying my past experiences as an analyst and putting myself in that same position again, thinking ‘what do I want to know when the match is finished from a data point of view’.




With the Team and Player Analysis pages, I want it to be on a more granular level where I can use data from any amount of matches that is more than 2 to find trends, patterns, details that I wouldn’t have noticed when I watch a team/player live on TV or at the stadium. That will include more detailed and more specific visualisations to assist me with detecting those hidden details that I can’t spot.
Last but definitely not least, the MAT will also serve as a vizzes creator for whenever I want to write articles on this blog or just casually posting stuff on various social media platforms. I’m okay with opening my working notebooks to create the vizzes that I need to use because I know where things are and how I organise things. But, sometimes, that can get tedious too when I just need to quickly generate 1 or 2 vizzes and I have to scroll through lines and lines of codes just to get to the vizzes and save them. Because I can slap a UI on top of those codes, I thought ‘why not?’
Why do I need to (re)make the MAT?
I have had to think about the ‘why’ part of this project for quite a bit because (I might or might not have mentioned this in my Update 3.0) I want to work on projects that I actually enjoy doing moving forward, projects that I feel eager and excited to work on, and projects that can sneak up in my mind whenever I’m not working on it. So far, I have managed to boil the ‘why’ down to three reasons.
Firstly, I have a genuine problem that I want to solve, and just like every engineers or welders who can make their own stuff to solve their own problems, I can also make my own tool to solve my problem through my programming knowledge. I think I lost that spirit somewhere on my football analytics journey because a lot of articles that I wrote or dashboards that I made, while I’m still proud of them, weren’t exactly for me and were geared towards seeking external validations. This project is just a good opportunity for me to find that spirit once more and also learning new things along the way.
Secondly, I’ve started treating my own creativity as an art. While I’m definitely not creating an art piece like a drawing or a music track, I still think creating things is an art and I choose to express that creativity via coding and creating digital things, sometimes via graphic designing too (I (re)made the app’s logos and background too!). This definitely has a good and a bad side to it, because I can be very self-critical of my own work and I always want to improve the next thing that I make. Sometimes that can challenge me to learn new things, but sometimes that has also driven me past my own limits without knowing when to feel satisfy about my own work. I still enjoy the creating process nonetheless and the MAT 2.0 being my personal sandbox is the perfect place for me to try new things and break them along the way.


Enshittification and monopolies
Lastly, I’m starting to get sick of the monopoly specifically with football data and the enshittification of technology in general.
The recent removal of Opta data from FBRef has and will do nothing good for football analytics, and maybe for football in general. A lot of innovations in football analytics have come from public work and, subsequently, a lot of talented people have been hired by clubs through blog posts, social media posts and contents. Taking that away means there will be less and less ideas being worked on over time. Fotmob is doing a decent job as a replacement, but they also have an app/company to run and a contract with Stats Perform to uphold, which makes sense for why they do not want anyone to scrape their data.
The worst part is the cost of getting access to the raw data from Opta or Wyscout is in the range of thousands of dollars. For a club that uses that data every day or every week, it is a necessary expense and they can cover that cost through other means. But for an individual who might only access that data a few times a month, those prices are absurd considering rising inflation in recent years. Given how precious those data are and the fact that clubs are willing to pay whatever the cost to get that data, I don’t think those prices are coming down anytime soon, which makes the entry barrier a lot higher for any aspiring analysts or enthusiasts.
Another problem is the lack of women’s football data is now exaggerated by the removal of Opta data from FBRef. As much as some football fans don’t like it, it’s hard to argue that women’s football is on a drastic rise, that means more attention is placed on the game and the need for more information rises. I recommend reading Catalina Bush’s article to know more about the situation, but long story short, FBRef was by far the best place to find data on the top women’s leagues in the world. Heck, I might even be one of the few rare users of the advanced A-League Women data on FBRef to write one article and make one Streamlit dashboard for it (shameless plugs, I know). Now, whoops, those data are now no more.
Zooming out a bit from the coverage problem and similar things can also be said for any coverage that are not about the top leagues in the world. It’s an argument that I know most people won’t agree with me, but football isn’t only played by the top clubs in the top leagues. Europe always gets the most coverage, while there are a lot of good people doing great things to bring the MLS into the spotlight (including the American Soccer Analytics team and John Muller’s futi). Besides from that, most fans barely know anything about football outside of Europe and the MLS. Having access to data to those leagues are good ways to learn about them, like Asian football or some of the Conmebol leagues, but it’s hard to find the data for those leagues anywhere.
I also want to quickly touch on the topic of enshittification a bit because even though it hasn’t really affected football-focused apps and platforms yet, I can definitely see it going that direction. Fotmob and Sofascore are doing good jobs to bring more detailed vizzes to the general audience, which I won’t discredit that at all. I know my use case has changed a lot compared to the general audience, and I understand those platforms’ purpose is to appeal to a very wide audience. But I’m also not entirely satisfied with some of the platforms made to serve the audience who wants/needs more in-depth info, having used some of those platforms in the past (I don’t want to name names here).
So, to serve my own use case and to save myself a bit of money that I can actually use it on something more enjoyable (like a vacay), I decided to make the MAT 2.0 just because I can and I have the knowhow to actually work on it.
A little bit of further thoughts
I think a few people (probably my own inner thoughts) might see this and ask ‘oh, why don’t you try to make money out of this?’ in a capitalism-driven world, which is becoming more and more of the norm. There might also be the thought of ‘why don’t you make this public?’, which might also only come from my own inner thoughts.
Honestly, my answer to both of those questions is I just don’t want to. In a world with so many public, football-focused Streamlit dashboards being shared on Twitter/X every other week and month, I want to have something to call my own. There are also so many similar dashboards out there already that people can use, like Ben Griffis’ Best 11 Scouting app is a prominent example. I don’t think the football community needs another Streamlit dashboard from me in general, so please support others who are making cool things instead.
I’ve already mentioned earlier, but I also see the MAT 2.0 as a learning opportunity and a place where I can try out new ideas. I currently have plans to deploy the first fully-working version of the app on a Docker image sitting somewhere on the cloud (maybe AWS or Google Cloud) and tie that to my own domain instead of deploying it on Streamlit Cloud. I’m also only using Streamlit to build the first version as a proof of concept, then will move most things over to a traditional web app using either React or Svelte because I’m already doing a lot of HTML and CSS code in the app. If I tie the app to making money, I don’t think I would have the freedom or the enjoyment to work on these ideas in my own free time.
I won’t keep the app completely secret because I’ll obviously share a live demo to people that I know/trust and have a video demo put up on my portfolio when I’m confident enough about the app. I might also use bits and pieces of this app in future Streamlit projects as well. But when it comes to the MAT v2.0’s production version and codebase, maybe I’ll just keep that to myself.
Thank you for sitting through most of my rambling about something that is most likely not going to be publicly shared anytime soon. It was a tough decision to keep the app just to myself and probably not a very common decision, but I think it will be a good decision for me moving forward. You, dear readers, will still see the end products of the app on this blog via the articles that I will be writing about in the near future, so you’re technically not missing out on everything.
I originally intended to include another section to discuss the technical nitty gritty about how I am making the app. But given that this article is already quite long and I’m still working on it as of writing this, it is probably best to leave that for Part 2 when I’ve worked on more of the app and have more to share about the technical side of things. But, for now, thank you for getting to this point of the article!




