Retiring and Refocusing Projects

I've got a lot of projects going on. It's time to retire some, and refocus some others.

Out of the ideas I've created, DraftKick has been the most successful. It has generated thousands of dollars in profit this year, which isn't exactly a living, but is still very nice.

None of my other projects has brought in any revenue to speak of. Some are costing far more than they could bring in, while others are neutral: They either cost nothing more than the $12/year I spend on the domain name, or they bring in just enough to cover their expenses (typically for hosting).

Even so, they all consume bits of my mental bandwidth. I'd love to be able to cut out a few ideas that didn't take off and see if I could build something that could complement the success of DraftKick.

For the record, this are my current family of projects, in reverse chronological order of creation:

Potential Retirements

First off, I need to retire some projects. These are the leading candidates:

@SavesBot

SavesBot was a fun little covid project to scrape FanGraphs' closer depth charts and tweet about any changes. It got some good traction (hundreds of followers, more than my main account!).

Unfortunately, it was a victim of Twitter/X switching to a paid API. It's a fun gadget, but it's not going to make any money, so I don't see any viable path for keeping it up.

Open Projections

I thought open source baseball projections could attract some contributors. But that never happened. It's still the same, pretty basic code that I wrote myself as an improvement on Marcel.

And that basic code did pretty terribly in Jeff Zimmerman's tests of 2022 projections. I was actually a little surprised, as I had initially back-tested the projections on 2018 and 2019 with pretty decent comparables with Steamer and The BAT.

There are some anecdotes that agree with the conclusion from testing. This year, I was watching pitchers like Julio Urias and Alek Manoah, where the Open Projections believed in their past results more than other systems (which predicted terrible results based on indicators like their below-average strikeout-rate). Both of those pitchers bombed in 2023, more evidence that Open Projections needed some refinement.

The final blow was the hosting cost. The Open Projections hardware needs are pretty minimal. It has a SQLite database of daily player stats that's less than 1GB. It loads the last ~7 years of stats into memory to build the projections, which requires several GB of memory. It runs for a few seconds each day to build the projections, but uses no CPU for 99.9% of the time. It's the sort of thing that can run reasonably quickly on my low-end laptop with no problems.

My original host for the daily Open Projections build (PythonAnywhere) capped storage at 1GB. As I watched my DB grow slightly closer to that limit with every day of player stats, I decided to move it to Linode. For the same price ($5), I would get 25 GB of storage--an abundance when I really only needed 1GB.

But, on Linode, I discovered that their 1GB of memory wasn't enough to run the projections! PythonAnywhere was stingy with storage, but they had let me use the memory I needed to run the projections. I refactored the code to consume less memory on Linode, but it still failed on their 1GB box ($5). And their 2GB machine ($10). Finally, with 4GB ($20), it would run my projections without issue.

Linode had also been bought by Akamai. Within a day or two of my problems, they announced that their $20 VPU would be increasing to $24 a month.

Anyway, I'm currently paying $24 a month to build projections that aren't very good. And I'm paying $24 in order to use a good chunk of memory for less than 1 minute a day, while idling the other 99.9% of the time. I don't think I can continue that.

The Open Projections code can stay on GitHub. The license (MIT) allows anyone to use it or modify it. But I think I'll shut down my own daily projections build.

Refocusing

I'm still reflecting about what to do with a couple of other projects. I think they need to be shifted somehow to better resonate with fantasy audiences. That may mean combining a couple of ideas into a single project and killing off some other aspects.

Projectile

I envisioned Projectile as the commerical side of the Open Projections. The projections are free, but converting them into custom fantasy values would come at a premium.

It has done okay: a couple hundred dollars of revenue that at least has offset the hosting cost ($5/mo.)

But even that success has come from adding other projections. People are paying for the ability to view projections side-by-side, customized for their league. Most people (including me, to be honest), don't really care about the Open Projections on Projectile.

I also think that DraftKick occupies a similar space, and it improves some aspects of Projectile. DraftKick's league settings are faster to edit and more flexible, for one thing.

There are a couple of other Projectile features that I'd also consider ending:

Projectile Daily Email Snapshot

I know part of the problem here has been my lack of promotion, but I've only got a dozen people signed up for a free daily recap email. It doesn't seem to be very valuable.

Projectile Chrome Extension

This is another one that has surprised me, because I find it so useful. The Chrome store says it has only got 30 users.

Fantasy Wayback

My goal for Fantasy Wayback was to generate a tiny bit of ad revenue. However, I haven't even succeeded in getting it approved by AdSense. (It needs more text on the page, I think.)

It is, at least, low maintenance.

Consolidation

So maybe what I'm thinking about is some sort of feature consolidation. What does that look like?

Baseball Reference for fantasy?

The first idea would be to merge the historical dollar values from Fantasy Wayback and the projected dollar values from Projectile.

So you have your standard player pages with:

I guess it would be expanding Projectile to include the full history of baseball.

However: If it's no longer just projections (Projectile) or historical stats (Fantasy Wayback), maybe it needs new branding? Maybe bringing back the Last Player Picked brand?

Really, the bigger change than including past history would be a smoother interface, using some of what I've learned from DraftKick. Entering league settings on DraftKick is much nicer than on Projectile. Likewise, my JavaScript dollar value calculator from DraftKick would feel more responsive than the Python version on Projectile. I've also got a nice projection aggregator that allows custom weighting (once again written in JavaScript).

Those changes would require a big shift behind the scenes, but I've got the JavaScript code already, so it's not a full rewrite.

Projectile's pay-per-league hasn't attracted very many users, so I could see turning this into a completely free tool. Could I replace a couple hundred dollars of subscriptions with similar amounts ad revenue? Or, are there any other monetization models that could be more effective?

The biggest question may be: Is this change significant enough to have a real impact? If people aren't using Projectile now, is this enough to change anyone's behavior?

Full Chrome extension

A different vision for merging the various dollar-value-charting tools could be as a single Chrome extension.

Imagine:

Chrome extensions are all JavaScript, so (as with the previous idea), quite a bit of the code has already been written.

This could perhaps be more useful than a separate site, as it doesn't require users to check yet another site. (And I've always felt a little guilty using other people's raw data on a separate site.) But can it ever be more than a free tool?

Also, Chrome extensions are essentially desktop-only. Most people are looking at player pages primarily on mobile.

Kill them all

The other option would be just to kill off Projectile completely.

It would be admitting that DraftKick is just the better version of valuing players for custom league settings.

In this scenario, I could choose to keep Fantasy Wayback around. Unlike Projectile, it's a static site that's easy to host for free. I just run the PHP scripts once at the end of each season, and upload the new version of the site.

Ending Projectile would open up bandwidth for something completely different, like a baseball simulation game or something else from my list of ideas.

Conclusion

I figure I've got about a month to figure this out. I'm happy to get any input if anyone has it.

DraftKick Basketball is available now!

If you're still tracking your draft with a custom spreadsheet or even just pen and paper, you need to try DraftKick.

It is packed with features to help you succeed on draft day:

  • Projected availability
  • Keepers
  • Salary cap (auction) drafts
  • Custom league configuration
  • Editable projections
  • ...and more

It's completely free to try out!

Hi,

I'm Mays. I've been playing fantasy since I was in high school (over two decades ago).

My speciality has always been player valuation—converting player stats into rankings and salary values. VBD for fantasy football? Rotisserie z-scores? We go way back. In 2009, I started Last Player Picked, a site that generated fantasy values customized for your league.

You can find me on Twitter at @MaysCopeland or email me at [email protected].