top of page

The Blueprint: Introduction

Welcome to “The Blueprint,” a series about roster philosophy and data science in the NBA. This collection of pieces explores Aneesh Namburi’s personal ideology in modern team building while incorporating a custom Python dash app to provide statistical backing, as well as a tool for future player/role identification.

In the latest edition of 'P.I. Pulse,' Aneesh Namburi shares his introduction to “The Blueprint.”

In the NBA, the goal is to win a championship.


Over the past year or so, I’ve seen a few really good basketball philosophy pieces on my timeline. As someone who has been thinking about this kind of stuff for as long as I can remember, I wanted to try my hand at creating a formal philosophy that possesses statistical backing — one that combines the often individualistic viewpoint of draft scouting with the holistic idea that is roster construction.

The majority of this philosophy came to me shortly after the Toronto Raptors won the 2019 NBA Finals. Considered the first “non-super team” to win an NBA title since the 2014 Spurs (another influential team in my philosophy), I thought they were an intriguing case study on how to build the framework of a modern championship team. When I took a closer look at their roster structure in a broad context to other winning organizations of the decade, I noticed overlap between many of the teams. While on the surface there are obvious distinctions between each, a deeper look shows a general similarity in how the roster seems to be constructed. The point of this specific series is to look at why each of the roles are so valuable in a championship context and how I think we can identify these talents in the draft scouting process using both film and data science.

PSA: The following four paragraphs contain boring code work, please feel free to skip this if you are not interested. Thank you to Todd Whitehead and especially Carlo Surace for brainstorming and helping me create this program.

I would love to share my actual Python script, but I decided to keep the code private mostly to maintain intellectual property (if people are interested in my program, please email me at Instead, I’ll give an explanation that hopefully shows my process creating this dash app:

First, I created a sports reference query for all individual single seasons from 2011-12 to 2020-21, grabbing all players with at least 375 minutes and 100 points (very few previously drafted prospects fell below this threshold) on two different sheets that I merged — one containing “traditional” box score stats and another with the advanced stuff available on sports reference. Next, I loaded the BBALL Index data sheet that contains offensive role types into Python, and by cross-matching the list with the sports reference sheet, once again merged the NBA data with the college numbers. This created a data frame concatenating player, season, school, and offensive role to prevent read errors from the program and keep each input individual.

There were a couple issues with the 1:1 merging and transfer, so I had to map the columns of the new merged data sheet and min-max scale (transfers everything within a 0-1 range individually) the statistics. Additionally, I added two separate callbacks. The first makes sure the correct season corresponds to the player we select, as there are obviously many duplicate names in the system and Python automatically matches the two in a way that produces duplicates/errors. The second is the main one that my whole program centers around, grabbing the player I choose based on the season and stat categories selected, removes the visual columns to leave only scaled data, converts the data frame to an array, and assigns a list of euclidean distances to that final column, thus returning the 10 closeout historical players.

Now comes the actual dash app. The layout consists of three dropdowns (player, season, stats) that output the specific season stats that I choose and finds the 10 closest players via a similarity score, also showing the 10 closest players' BBALL Index role. For example, if five of the 10 resultant players ended up being spacing bigs, that is a pretty strong indicator, whereas if zero of the 10 closest players hit that spacing big label, it at least gives someone a second thought about what said prospect’s role might be. Essentially, this allows the user an understanding of the different projected roles (based on the following roster philosophy) that a player could have in the NBA based on “similar” players’ stats.

I’m only going to write on 10 of the 15 roster spots, as once you leave the main rotation there are so many more variables at play outside of on-court value. For data science purposes, the roles will be divided offensively, but obviously defense will be included in the descriptions. The increased variance in scheme, role, and available metrics makes defense significantly tougher to quantify and project. I will spend more time on the “star” roles, as they carry a larger burden (specifically offensively) on team success, and in proxy, are much harder to find.

Before I get into the specific categories, let’s dive into how I break down the rotation, outline this series, and identify commonalities that I look for in terms of player evaluation and roster construction. Additionally, I want to give a few disclaimers:

  • I would call myself a very novice programmer and data scientist. In terms of training, I’ve taken two statistics courses during the 2019-20 school year and have about nine months of extremely “fly by the seat of your pants” experience through my internship. As I return back to school next fall and switch my major more focused towards these areas, I plan to make updates and fine tune this piece and program accordingly, specifically in terms of decision-making once players are on the team, transforming rosters from individual pieces into a cohesive championship unit.

  • Due to my inexperience as a programmer/data scientist, there are still some measurables that I want to add but have not, yet. Things such as three-point rate, free throw rate, and a variety of Barttorvik and play type stats will hopefully be added soon.

  • I used the offensive role type data from BBall Index to make my work significantly easier and save time. While I came up with my roles on my own and there are minute differences between the two, using their roles allowed me to focus on building the program/app itself rather than having to focus on essentially creating a data set, as well.

  • The results of these searches on the apps are not supposed to indicate player comparisons, rather they are more hints towards what kind of role the player might be.

  • I know I’m taking a very analytical/business-like approach to a sport, but hopefully I do not sound inhumane, robotic, etc. when describing things like player contracts, draft value, or asset management. I’ve spent basically my whole life around this game, whether it be playing or analysis, and my experiences (both personal and observational) have further instilled that this game isn’t just wins and losses, numbers, or X’s and O’s, and it is extremely easy for some people to treat others so heartless with little regard to the person, which is more important than their value as a basketball player.

  • Finally, a special shoutout to not only Todd and Carlo, but also PD Web, Henry Ward, Spencer Pearlman, Jake Rosen, Mark Schindler, Evan Zaucha, and the wonderful team at Pro Insight (specifically Matt McKay), and many more for their invaluable help letting me bug them over the past few months about this piece.

Rotation Outline (4 and 5 spots are interchangeable)


Guard Creator

Glue wing

Shotmaking Wing

Big Wing/Forward

Playmaking Big

Bench Unit

Backup PG Lower Usage Scorer

3/D Wing

Stretch Big

Roll Big

Outline of each piece

  • Intro to role (value)

  • Fit into team concept

  • Data science portion: historical context + 2021 draft targets in each role


  1. Wing Initiator

  2. Guard Creator

  3. Bigs

  4. 3/D Wings + Big Wing/Forward (Off Ball Wings)

  5. Lower Usage Scorers

  6. Backup PG

While I’m not going to brand myself anywhere close to a coach, there are some loose schemes that I have in mind when considering how I’d build a roster. Offensively, I have become a big proponent of incorporating non-static ball screens into the Integrity Hoops Offense (recommend Coach Daniel’s video and Henry’s “Exposing the Blueprint” series if you are unfamiliar), with minor devolutions to standard late game sets in clutch situations. While I don’t necessarily have an issue with the pick-and-roll heavy based offenses currently in the NBA, the league is always progressing, and I truly feel like the combination of advantage generation and constant movement with spacing that this offense provides has the potential to be the “next big thing” in the league. On defense, I put an increased emphasis on pick-and-roll versatility, but prefer coverages played at the level of the screen or just 4-5 position switching (depends on the guard or big on the court). There’s nothing special about my help principles, and I prefer icing closeouts unless that gives players their strong hand. The idea is that the combination of moderate aggressiveness, player decision making, and rotational movement should generate more havoc and turnovers than average.

The past few seasons, we have learned that a lack of adaptability can hinder playoff success. You can stick to a certain scheme and have a very successful regular season, but as teams transition into the playoffs, the length of the series allows opposing scouting departments to often mitigate both players and teams as a whole. Now don’t get me wrong: this does not mean that the team should lack an identity. Rather, teams should possess the ability to win using multiple methods, as well as possess counters to other common play styles in the league.

On the individual scouting side, I’m going to divide things into two lenses: physical tools and skill.

The best way I can characterize my general philosophy is prioritizing as much size, decision making, and functional athleticism (read Jake Rosen’s Stepien debut for a deeper understanding into that last concept) as possible while maximizing skill versatility (side note: this hurts to say as a former small guard whose personal favorite players are also small guards).

Mental makeup also occupies a large portion of this individual scouting puzzle, but there is an enormous amount of nuance to it, and I currently do not have the resources nor the experience to explore that right now. Check out work from Henry and Evan Zaucha for great intros into that space.

When it comes to physical tools, players should have at least one outlier physical trait — whether that be size, strength, length, mobility, or something else. From Marcus Smart to Derrick Jones Jr., we’ve seen players able to play out of their “natural” position due to physical tools, and it tends to boost lineup versatility for the better on their teams. In more extreme examples, we’ve seen players such as Ish Smith and Boban carve out NBA careers due to specific elite physical traits.

In terms of skill, I prioritize the combination of multiple avenues to success to counter off-nights or effective game planning, as well as a standout skill that provides consistent value each time you step on the court (it could be versatility!). Rather than your three-point percentage or assist numbers that vary on a night-to-night basis due to factors often outside of your control (although they do matter, but remember, numbers need to be looked at in context), the standout skills that I instead look at are things such as shooting gravity or advantage creation that draws help.

By now, there should be some added clarity regarding my general ideologies about basketball as well as the general direction of this series. Stay tuned for the next piece, where we delve into our first role, arguably the most important within modern basketball: the wing initiator.


Recent Posts

See All


bottom of page