Spectral Wrapped 2023

Lea Spectral
18 min readJan 14, 2024


What a year, huh?

It was an interesting ride, to say the least. I don’t want to talk about the plans I set up for myself a year ago. It doesn’t mean, however, that there was no work done: the main issue was related to my work with Tundra throughout 2023, which led to a massive shift in priorities, and a change of plans as a result. Most of the stuff I planned to work on got some improvements, but the development speed was much lower.

Though while it might seem a bit late to wrap the previous year, it’s actually a special date in of itself: 8 years ago (well, minus two days, since it takes some time for me to finish this blog post) I published the first post in my Dota Blog (which was called Faerie Fire at the time), and that’s basically how we got here, today.

My major goal for 2024 is to get back to making content, reflect on my experience in esports, work on some more personal projects and goals and start hosting community events.

In this blog post I want to look back at 2023 and tell you about

  • what I did throughout the year and tell you about some of the more exciting stuff
  • some fun analytical insights about what got the most attention throughout the year
  • my plans for 2024 and what I’m currently working on

Without further a-do…

Russian version

What’s been done

First of all, for almost the whole year I was working for Tundra Esports Dota team as an analyst. Being a part of this roster was a fun experience, though it wasn’t what I expected. But what’s more important is it gave me an opportunity to show off all the cool data and tools I have.

Another highlight of the year was working at The International 2023. It didn’t go as well though as my work with Tundra led to a conflict of interests. I don’t think it’s something that would be usually discussed publicly. However the reason why it happened to me in the first place was lack of any information on other precedents of similar nature. And as the Dota analysts scene is growing, I wanted to make my story into a warning for others: this is not allowed and you can only choose one (either being a part of a team or a talent).

However I still ended up getting to Seattle (which was a miracle already!) and still ended up leaving my footprint in the fabric of the event. But also met all the cool people in person, as it was practically my first TI with actual people attending the event (aside from players and production).

And there were also a couple of secret collabs before and after TI (not all of them related to the event). Some of it might pop up throughout 2024, but I can’t give you any details before that.

Kind of a fun side activity by the end of the year was helping to set up a couple of custom community events and tournaments: gunina_ok scrims, gunina_ok cup, etc. This ended up being a great experience for me (working on it with some other professionals from the scene, too), but also reports for these events turned into a testing ground for new features essentially.

Usually I also release a “Stats Recap” of the competitive year, but I spent pretty much all time after TI12 ended in bed: at first recovering my energy after the event and then being sick. So I kind of missed the timing to make the blog post, HOWEVER the 2023 competitive year reports are still there and publicly available on my site.

Other (cool) stuff

One thing I felt really proud of is giving more spotlight to amateur events in 2023.

Throughout the year admins of amateur and semi-pro leagues contacted me to set up the reports for their events. I tried to set up reports for as many seasons as possible, and with some cooperation by league admins we were also trying to track down the missing matches (e.g. unticketed matches or something like that), as well as clean up the historical data as much as possible, to make sure the reports are up to my standards.

It’s always great to see awesome community efforts put together, and it’s my pleasure to help people, hosting this kind of events as volunteers, to get the same level of treatment as The International, elevating the quality of community content. Well, at least that’s what I tell myself.

There are still a couple of community leagues which I wanted to add, but didn’t have time to set everything up properly: older RD2L Mini seasons, AD2L, LD2L. And it also gets increasingly harder to track when the new seasons of these community leagues start and end. But that’s the problem for the future me.

And, as mentioned above, I’ve had some experience with this kind of community events myself throughout the last months of the year. We didn’t have a ticket (well, we had one for half duration of the event) and all the matches were added by parsing replays pretty much. But every other aspect of that was cool.

As a side note: if you’re hosting a community event and would like to get a separate report too (or maybe you don’t even have an in-game ticket) — feel free to hit me up on discord and we’ll be able to figure something up.

Another thing I wanted to make for a while was top-X ranked reports. Well they should be something like 7k+/8k+/9k+ MMR reports, but it’s pretty much impossible to find any information about average MMR in the finished games (reliably), so I took the leaderboards approach. Technically these reports focus on top-50%/20%/10%, rather than using any specific number as a limit (because different regions have different numbers of players in their leaderboards), the only exception being top-100 reports.

For now these reports just kind of… exist? You can compare meta between different Immortal sub-brackets, you can even take a look at the builds people have here, but I would still prefer the main Immortal Rank Meta Trends reports family over the High Rank ones because of the sample size. Though I made these cool custom versions of Immortal Rank icon for every version of the report, so here’s that.

However my plan is to eventually add these reports to the Lurker. I have a lot of data in my databases, but all this data can only be accessed by me, and reports only show 10% of stuff. Lurker (previously known as IMMAPI) was intended to be a way to “lurk” around the Immortal Rank databases, look at matchup details and find some interesting matches for research purposes. And now, with High Rank reports being a thing, I would probably make them the main focus of the Lurker instead.

As a bonus I also set up (privately) an annual ranked database, as well as warding prototype database (focusing only on the last month).

Another huge thing was “reviving” Devilesk’s interactive map and updating it to the latest Dota versions (I should probably update it to 7.35, but I’m too lazy). It wasn’t a huge deal initially (I just had to understand how it works and write some sort of documentation/notes for myself), but the problems came with 7.33 update, which required to get much deeper into the underlying code and make sure everything is updated to the new map size (including the custom game used to gather the map data and the SFM scene to render the map image) and aligned properly.

With that also came and improved version of the map zones and elevation processing (used in Guame for warding sections), as well as dynamic previews for ward locations.

The last important change came in the form of the updated main page of the Stats Hub. Instead of a small boring list of featured reports it now shows some nice reports cards with logos and important details, divided into different sections.

With that also came improved categories navigation, named categories with descriptions and logos, slightly better search and improved recent reports section.

Other (minor) changes:

Skill builds and starting items stats (not public yet)

  • fixed some issues with algorithms, made sure that processing works more or less fine for ability draft and older matches
  • added consumables stats
  • early prototypes (for starting items and consumables specifically)

Added haverages and records in player/hero/team profiles

Collabs showcase page (on the main site)

Improved on-page sorting and search

Party graph fixes and player portraits for nodes

Improvements to Nerds Builds rendering

  • also groundwork for 3rd party builds and last updated section

Server-side stuff

New dev node

Analytics logger to get rid of Google Analytics and ensure better monitoring for potential attacks and API abuses

  • Throughout the year it already helped to prevent/block some malicious bots and attacks
  • It also helped coming up with the new index page layout (by researching which reports get more attention and generally tend to draw users in)

Reports items data merge tool

  • Used for Top-X patch reports (combining weekly items data snapshots, while removing items data from the main patch reports entirely to save space)

Live previews for wards/smokes (used only in Guame at the moment)

Several fixes to match data parser and combatlog parser

  • draft stage replay cutoff related fixes
  • healing fixes, taken dmg, etc


Match MVP

  • this is probably coming to the main reports soon
  • based on a heavily modified compendium fantasy system
  • is not intended to be a “100% definitely MVP absolutely true” metric, but rather something fun to play with (or use during 3rd party events)

Ranked wards

  • Not sure when (and if) it’s coming to the main reports, thinking about how to adapt it for now

Skill builds, starting items, consumables stats

  • Currently exist as a command line tool and some cheat sheets for teams

Tools for reports comparisons

  • Currently used for infographics, but I’m planning to remake it into a separate feature at some point

Smurfs “detector”

  • Technically it doesn’t really detect smurfs, but rather finds potential smurfs for a given player using annual database
  • Can only be used with my reports
  • Was good enough to successfully help with identifying or verifying several pro players smurfs during late DPC season (and also confirm that some known smurf accounts did not belong to certain players)
  • Currently exists only as a command line tool, not likely to be used anywhere on the site (and I’m not sure if I would use it myself in the future lol)


  • Quality of life features: tags orders, navigation and coloring, improved drafts layouts
  • Improved scrims parsing and recording
  • Inline search for most of the sections, improved navigation, removed teams navigation sidebar
  • Wards/smokes positions live previews
  • lrgcache import

Site Analytics

One of the coolest (in my opinion) major things I’ve done this year was the new server side request logging and analytics reports. Not going to get too deep into the details here, but by the end of the year I also had to implement my own frontend for the analytics database.

Prior to that I was using Grafana as my primary way to access live statistics (which I set up, along with the spectral analytics dashboard, right after adding the logger to my projects), but by the end of the year it started crashing, not being able to process all the data I wanted.

Another reason was the annual report, which was generated based on monthly snapshots and was not a part of the database. Making my own frontend as a sort of “snapshots viewer” also allowed me to generate more specific analytics reports (and save them to my archive), as well as have overall better control over the layout and add some neat little features.

Obviously I’m not going to show all the sections here, but I just had to tell you about this thing. And, of course, one thing it’s great for is making highlights of the year. I would like to take a look at some of them below (requests numbers are not counting bots).

The most popular project was, unsurprisingly, the stats hub (LRG2-main), followed up by the Builds section (NerdsBuilds-main). Surprisingly, the most popular page on my site turned out to be the hero builds list. Other projects are taking a small percentage of the requests.

The most popular build this year was my Spectre guide (awww), followed by a bunch of stats-based builds. Though generally speaking most builds for more or less traditional playstyles are in the range of 0.5–1% and are not too far off from each other.

One thing I did not consider (but it seems kind of obvious now) is that a lot of requests are coming from people manually typing URL for the build they need. It’s not really surprising since it’s rather easy to make such URL (just type something like “stats_antimage_safelane” or something), and I only found out about such use from the giant list of “failed” builds requests (because of typos or inconsistent hero tags).

Reports have a much cleaner spread though. The most popular report (7.64%) was “Immortal Rank Meta Trends: Last Week” report, followed by a bunch of patch reports, Competitive Premium 2023 (DPC) and The International 2023 reports. The most popular reports outside of DPC and Immortal Meta categories were “Riyadh Masters 2023” (0.95%, though surprisingly Riyadh was still less popular than the last DPC major) and DreamLeague S20 (0.45%, which is funny because S21 is much lower on the list). Though The International All-Time Report came close (0.43%).

The most popular amateur events were RD2L Season 30 (0.30%), followed by RD2L Season 20, Gunina_ok Cup Season 1 (our event!) and Midwest Dota 2 League all sharing the same percentage (0.22%). The closest event after that was the latest season of The League of Lads (0.20%).

Another interesting thing to note: people seem to generally prefer the main Immortal Rank Last Week report over top-X versions. Comparing versions of the Last Week reports (which are the most popular anyway) Top-2500 Meta is 2nd (0.66%), followed by Top-100 Meta (0.53%), Top-500 Meta (0.43%), with Top-1000 Meta (0.39%) being the last.

The last thing to note are the competitive reports. Competitive Tier 1 2023 and Pre-TI12 reports both share a rather small percentage of 0.15% and Pre-TI12 Ranked is close by at 0.12%, which is related to the rather small timespan when these reports are needed. I need to check this theory, but it kind of makes sense to me that people would only be interested in how players perform and what heroes they play right before TI.

Speaking of heroes (and I think I kind of broke the percentages in this section lol, but they just seem to be 10x smaller than they should be), the most popular hero in the reports was, unsurprisingly, Abaddon. Because, well, the hero was strong for a long time, and also it’s the first hero you see after opening the “Profiles” section. Followed by Nature’s Prophet, Alchemist, Spirit Breaker and Kunkka, all being rather strong heroes since 7.33 and pretty much until the year ended (even now they are pretty good).

The most popular players are not really surprising either. Though, there are less South American players at the top, compared to last year. I’m also surprised to see 33 as the top-6 most popular player in the reports, the real star player.

Looking at the teams is more interesting in this regard though as it kind of shows which teams did a better job with the media (or maybe gave more creative freedom to their media managers). LGD and Team Liquid are, unsurprisingly, at the top: LGD is still one of the strongest and most beloved teams, while Liquid always had some of the best content in Dota and an impressively big fanbase. Those two titans are followed by Shopify (ex Evil Geniuses), which I can’t really say much about as I wasn’t following the team too much, but with Arteezy performing for the team it’s not really surprising either.

Team Spirit, Gaimin, OG and Secret all did a great job with their content in 2023. Seeing 9Pandas (ex HellRaisers) on the list is a bit surprising though, as I haven’t really seen that big of a media presence from this team, but I guess it’s another case of the “star roster” and great results drawing a lot of attention to the team.

Not seen on the screenshot, but still being right below 9Pandas are Team Aster (1%) and Tundra (0.92%).

In terms of country of origin this year was… peculiar. Percentages of users coming from Russia and Ukraine increased significantly throughout the year and stabilized at 2nd and 3rd places with 13.73% and 3.51% of requests respectively.

And in the 2nd half of the year there was a significant increase in users coming from China, Hong Kong and Singapore. And while a big chunk of requests were search engine bots, the numbers still went up for user requests as well. I wasn’t really able to trace the reason, but it seems like it started with someone linking one of my reports in a Chinese forum post.

As for user languages, English is leading with a massive lead, followed by Russian (12.09%), Chinese (1.03%) and Ukrainian (0.04%). There is also Brazilian Portuguese locale, but it didn’t really get much use throughout the year.

One thing to note is that it seems like a lot of users tend to just switch to English language anyway. Taking 2nd most popular language as an example, number of users with Russian language as their system/browser language is almost 15%, meaning that 3% of users prefer to just switch to English. And in this case it can’t be an issue of the translation quality as this locale is always updated by me personally at the same time as English locale gets updated.

And the last thing to note before talking about the plans for 2024 are the bugs. One huge improvement that came with the new analytics logger was way it allowed me to record all exceptions as they happen, when they happened, how often they happen and where they happen. This allowed me to track down a lot of small bugs and fix about 8 critical exceptions.

Oh, and I will also leave the full 2023 report available on my Patreon/Private Telegram channel, in case you’re curious.

Plans for 2024

There are a lot of things I am really excited to do in 2024, and hope to get enough time to get all of this done.

I would like to divide all the plans below into three separate blocks, starting with some small things first.

Small Things First

This section is about the Small Things First.

  • More community events. I want to start hosting more “spectral scrims”, along with Artifact and maybe Underlords events, and even some regular custom game brawls.
  • Match stats explorer. While most of the matches in my reports are available elsewhere, there are still some cases when I either filled the data manually or parsed replays from unticketed lobbies. For these cases it’s pretty much impossible to find the data anywhere, and I usually spend a lot of time and effort to get everything right for my databases (e.g. rewatching the VODs to fill in as much missing data as possible). Match stats explorer is essentially a frontend for matches in my (currently live), aimed at giving access to some of the match stats (except for ranked reports). And it will be useful for my community events, hehe.
  • Nerds Builds Improvements. I want to get back to this section at some point and implement a search bar at the navbar at the top. I would also like to make some adjustments to how skill builds and starting items work. And I was also considering adding 3rd party builds at some point: default in-game builds, as well as Torte De Lini and GoX guides.
  • Reports quick switch in a category. This feature actually already exists, but it’s hidden behind the early preview. One thing I would like to solve is figuring out which category to use for the report when rendering the switcher dropdown.
  • Redesign. The initial design was heavily inspired by the Dota Pro Circuit page and was intended to be used for “small reports” which were essentially pretty reddit posts. Since then this design made less sense and I wanted to move away from it for a while now.
  • Replay Hunt. There were a couple of corrupted/remade matches throughout the 2023, as well as one particular tournament from 2022, which I can’t just ignore. It’s a lot of manual work, but I want to get it done eventually.
  • Minimap Generator. I started thinking about this ever since 7.33 was out. Comparing current iterations of minimap images to the older ones is depressing, and I would like to do something about it. In theory it should be rather easy to “generate” a good looking minimap image, using the map metadata (same one that’s used by the interactive map) and a bunch of presets made as vector graphics (which I have to make first).

Bigger Things

  • Skill builds, starting items, consumables, ability draft support. I was planning to finish this before 2023, but something went wrong (priorities changed). Thoughout this year I was doing some testing during my free time, and implementing all this into the live version should not be as problematic. Though I still need to make a UI for that later on. Two major roadblocks (aside from finding time to work on that) are Spell Names (which I also want to support the current locale AND be at least partially patch independent) and database query optimizations.
  • Reports Lurker. Technically I already have the API for that, but it needs to be updated and then it has to get a new UI. One major concern I have is about the privacy of the players. While, sure, there are ways to check the match history of a pro player who turned off public stats sharing, I would still like to implement a system that would hide the player’s identity. There are other, smaller, issues, but nothing that can’t be solved.
  • Artifact logs parser.
  • Players/teams ranking for reports
  • Turbo Meta Trends and maybe Herald Meta Trends.
  • Player with hero stats in the reports and other Player Profile improvements.
  • More content: blog posts, videos, features, etc.

Massive Projects

  • Artifact stats hub. This will serve as both a testing ground for ideas and engine AND a passion project for me. Currently I’m working on a “logs parser” that would help making Artifact reports a reality, and I would like to use them during my Artifact community events. But there are still a lot of things to do.
  • Reworked reports engine. A lot of stuff will be tested with the artifact stats hub first, after that it will be backported to the main project. Some major features I want to introduce are Subreports and various database optimizations. (this is what I called “Kamina/Simon” before, just not using the codename this time)
  • SuperNote. It’s a project aimed at talents and production. Basically it’s a private collection of all the notes, trivia, different stats from multiple reports and other useful features, all in one place. With mobile friendly interface and an option to print pretty much everything you want, even all the data for the event to use it as a sort of “Super Note” for the event. Currently I’m researching the topic, but there is enough experience in the topic (and also tools I already used for this purpose) to make things easier.
  • Live match recorder. It’s another tool for broadcasters and talents, and basically it’s an option to record match stats right as the match happens (using GSI or Valve’s Live Match endpoints). This should be useful for records tracking and various trivia, but also for having at least some sort of version of match data to work with in case the match is not available in the API yet (or replay is broken, or something else happened). Another use I have for this tool is recording custom game stats during community events (somebody just has to be spectating the game to keep the recording going). I think this will be the most ambitious project, but also the most promising one, especially in combination with SuperNote and Analyst Dashboard (which heavily relies on Lurker and Live match recorder).
  • Heroes Archetypes. This will be a brand new section in the reports, which will have to copy most of the functionality of the Heroes section. Not going too deep into the details, it will group heroes into certain “groups” by what they do and give insights about the teams (and players) in terms of their playstyle. There are other cool things coming out of this simple concept, and I think they will be so cool that this feature is practically going to be the most insane thing I’ll make with Dota stats for a while.

Closing words

That’s about it! This time I have some really big plans for the year, so I’m pretty sure most of what I planned won’t happen (haha). But let’s hope I will be able to make as much as possible.

Happy 2024 and stay spectral!

Also don’t forget to follow me on Twitter, Telegram or join my Discord.