Building Eloot

Building Eloot

I had already worked on a couple projects, Gitcoin and Blox, that experimented with using GPT earnings as donations to streamers.

I had never worked on a project where GPT earnings were earned exclusively for personal gain. A colleague who was having success operating one of these sites needed development help and that's how I first got involved.

The code was hard to look at. It was written by a very junior engineer with little to no experience in the industry. I don’t blame the engineer for what he came up with given his limited experience, but it would become my problem.

There was no design direction or branding, the UX was clunky. I was aware of some of these issues but not to the full extent until after I joined. Working within the codebase was painful. You couldn't change a single thing without breaking something else.

There were even memes about how badly the website worked in live chat. Yes - the website had 24/7 live chat, but we’ll come back to that later.

None of this was shocking. These situations happen in our industry all the time. When everything was telling me to walk away from this, that it’s going to be a waste of my time, I couldn’t.

How is this website growing month over month? I was so intrigued at the idea that a product which was so poorly built, so poorly designed, in an over saturated market could still be generating a modest profit. I didn’t understand how this was possible and wanted to learn more. After all, if the bar is this low, who knows how far I could take it by contributing my expertise.

So I made the guy a deal. I told him the reality of the situation, that to really grow this thing you need a more technical founder to own these problems. He had some coding experience but his expertise fell more on the business and marketing side of things. This was already a big system that had been contributed to for a little over 2 years, so ambitious rewrites were not on the table just yet.

He accepted, and so I started to get my hands dirty. My immediate focus was to identify and put out all the fires that had been quietly burning unnoticed. I spent a few months addressing uncaught exceptions, silent restarts, CPU and memory spikes, and silenced alarms. My goal was to get this system to a stable state, despite its ugliness.

The next thing I worked on was addressing pressing business needs. Where are we bleeding money the most right now and how can I help that? I expected most losses to be due to chargebacks and fraud but surprisingly, the security measures put in place at the time seemed to be holding up ok.

I spent a few months working on back office software to help manage support cases which were eating a ton of our time while simultaneously contributing to churn.

Our bounce rate was super high. Many users were coming from mobile devices but our mobile experience was sub par. There were also some performance issues that likely contributed to bounce. So I spent a few months rewriting the UI to be more mobile friendly and optimized performance to improve load times.

The next thing I worked on was distribution. I noticed many of our competitors had mobile apps. This was also a frequently requested feature by many of our users. So I spent a few months porting the app to Cordova and publishing it to the app store.

At this point I’m learning the business more. I understand what typical industry numbers look like, that integration with offerwalls is painful, that users on these websites are normal people with diverse backgrounds.

I also understood the competitive landscape and I was trying to find ways in which we could differentiate ourselves to be a more competitive player in the space. I noticed that most GPT sites fell into one of three categories.

  1. They were big enough to be generic and had already established market dominance, like SwagBucks.
  2. They started small, but grew quickly by targeting specific demographics with unique branding, like Gamekit or Gamehag.
  3. They started small and remained small. These sites churn by getting pushed out offerwall partnerships because they are unable to meet certain volumes of traffic or the partnerships are terminated due to fraud.

Our site didn't fall into any of these categories, so what was it that made us different? Why was this product succeeding despite having no apparent differentiating factors? I determined it was ironically one of the features I always disliked the most - the live chat.

I didn’t like live chat because it was hard to moderate and cost money to support. We staffed a few people in different time zones to have constant moderation coverage using tools I built to manage all the usual stuff - profanity, spam, bot accounts, suspicious links… etc.

I had spent several months rewriting live chat to include more moderation tools and chat tools like emotes, mentions, whispers, embedded content, help menus, chat commands. It was like a mini Slack embedded into our website.

I realized the thing which made us different and allowed our ugly product to grow, was being able to create a sense of community and provide excellent customer support. At the time when you googled our brand, reviews ranged from bad to great, but the general consensus was that we were trustworthy and had great customer support.

There were people that I talked to in live chat almost every day - about their week, their life experiences, their goals. I got to know some of these people really well. And it all came from using software I wrote. It was a really fulfilling experience to create software that encouraged people to come together like this.

We even got free chat support from seasoned users when new users needed help. This altruistic behavior came from having established a sense of community.

We felt like with community being our core differentiator, we should double down on other community related features to encourage higher retention and stimulate more growth. Before we started building, the original founder that hired me left the business for personal reasons and I had become the sole operator. I had inherited a team of 5. We ended up building:

We also overhauled our branding and focused on targeting a very specific demographic - gamers. We felt like gamers not only already made up a significant portion of the GPT communities, but many offers would only be suitable for gamers to complete and were often the highest paying offers available.

Eloot lander redesign

Cyberpunk 2077 was on the horizon and people were really excited by this game and its art style. I drew inspiration from the art style and created our own cyberpunk themed branding and design.

The design was very techy and hard to accommodate into a website. Lots of fragmented edges, and intricate line work were not easy things to do in CSS. I needed to build a small custom UI library that would generate all different types of customizable panel configurations purely with CSS.

The borders and line work you see in the screenshots are all code. This was a very fun project.

Eloot app redesign desktop 1Eloot app redesign desktop 2Eloot app redesign mobile 1

I produced and directed a video ad to match our branding by working with a VFX artist and voice actor so we could start expanding our reach (here I come IMDb xD). I think the end result was fantastic, both artists were really talented and nailed the delivery. At this point in time I was happy with our core product offering, our team, or branding and design. We were ready to grow.

And then the chaos began. There was a looming danger in our dungeon of “deal with later” that had finally emerged, and we called that beast The Dreaded Backend. That rewrite we did a hard pass on 2 years ago when I first joined? It’s now 4 years old.

“Sure, it’s a brittle system but still gets the job done!” - We told ourselves. But the issue with brittle systems is that they are impossible to make changes to. So once pieces of a brittle system go live you do not and can not touch it.

The alternative is a rewrite - but for a large system that has so many co-dependencies folding into itself, there is a lot of difficulty in replacing pieces because often there are 10 others attached. A good visual analogy would be like trying to pull out a fishing hook from a tangled bundle of line.

Our new features, branding, and campaigns, ended up being so successful that we attracted a new group of users that began committing fraud in ways we had not seen before. The scale of some of these attacks were large and logistical. The security systems we had in place were not ready for these types of attacks.

The repercussions came in the form of chargebacks, as high as $50,000 some months. These types of events also caused a loss of reputation and trust with the offerwalls. We needed to do something fast but our systems did not grant us the agility. Definitely in between a rock and a hard place.

Over the next year it was a constant game of cat and mouse. Feature development and focus on growth came full stop. We implemented several new anti-fraud systems, painstakingly slow at the mercy of The Dreaded Backend. We integrated with third party anti-fraud and scoring vendors. We had mandatory 2FA verifications, recaptcha, email verification, and manual user approval process for first withdrawals. We raised withdrawal minimums to give us more time to analyze account behavior.

The fraud died down but the conversion rate plummeted. Was this the true cost of operating a successful website in this space? Do the security mechanisms really need to be so heavy handed? It was sad. I was really saddened by what had become of this ugly, beautiful product.

Over the year we had spent building anti-fraud systems, our working capital took a serious blow from chargebacks. We were getting really close to being unable to cover our operating costs so I had to do what was hard and pull the plug. I left enough in padding to give everyone a month's pay from our close date to help them transition into their next role and went offline.

So what could have been done better to prevent this from happening?

The best thing we could have done was to start with a system built on a stronger foundation by a more senior engineer. Sometimes that’s not possible and I get it. I was late to the party and had to work with what we had. I was ok with that.

I also could have done more market research to understand what we would need at different levels of scale to continue being successful. If I had known we would be battling fraud so aggressively, I would have built anti-fraud features well before the growth features and a branding overhaul.

I would say my biggest lesson learned is that kicking the can on scaling issues, both operational and technical can cripple the agility of your business. If we could do it again we would pay down scaling debt early and often, balance feature growth and marketing better. I would do more market research to stay ahead of what's coming next.

Some of the milestones we reached with our small startup: