In 2018 I stumbled upon a project with quick online lotteries. I played a little, and the simple mechanics hooked me.
The whole game happened right on the home page. A user landed in one of the rooms, which differed by the minimum bet. The first player placed a bet and waited for a second one. As soon as a second participant showed up, a 60-second timer started. During that minute other players could join the game, and those already in could raise their bets.
The chance of winning depended on the size of your bet relative to the total pot. If one player bet one ruble and another bet two, the odds were roughly 33% against 67%. If ten seconds later a third player came in with ten rubles, the odds were recalculated. Some joined with a small amount hoping for luck, some raised their bet as the round went on, some waited for the last seconds and came in with a big sum. In short, everyone tried to come up with a strategy of their own, hoping to take the pot every time.
After a minute a winner was picked at random and received the whole pot minus the service fee. Then the next round began. And so on…
At the time the project had a steady online audience of several hundred people, sometimes reaching about a thousand. So there was always someone to play with, and I found it quite interesting.
The business model itself was appealing too. The platform did not play against its users; it gave them a place to play against each other and took a percentage of every pot. With several rooms running at once and draws happening almost every minute, the economics looked quite interesting and promising even with a relatively small audience.
I showed the site to a friend who was also a colleague (at the time we both worked full-time at the same company) and suggested building a similar project. We were both developers, the project looked technically simple, and on top of that it was a chance to get real-time experience, which we had almost none of back then.
So, having discussed the implementation details, the shares in the future company and how we would split the future million, we rushed into battle: coding.
We will do the same thing, only much better
The original project had sign-in only through VKontakte (which the whole Russian-speaking internet once used), so we decided to add regular registration and several other social networks. It also charged a rather large fee on every draw; we were going to take less. Beyond the core mechanics we planned jackpots, extra draws, a chat, a player rating, achievements, badges, luck statistics and a whole set of other features.
The same went for payments. Where the original supported only one way to top up, we were going to have significantly more.
The logic seemed perfectly reasonable at the time: if a working product with hundreds of users already exists, then we take the same idea, make the product better, richer, more convenient and cheaper for the player, and get our share of the market.
We agreed to split the project 50/50, ordered and paid for the design, and started development. As the foundation we used PHP and Laravel, which we knew well, while figuring out Node.js and the real-time part of the game mechanics in parallel.
All of this happened after our day jobs. Today many technical questions can be sorted out in a few minutes with an AI model, often with a working prototype right away. Back then almost every unfamiliar technology had to be studied separately: read the documentation, experiment, and only then get something working.
The work moved along gradually, but the amount of it turned out to be far bigger than we had expected at first. A seemingly simple project started growing into a solid piece of infrastructure. Over several months of development we made good progress on the backend, but the frontend, the admin panel, the user dashboard, endless testing and deployment were still ahead. In short, we got a little discouraged, but we had no intention of giving up.
We decided the problem was the frontend. So we needed a frontend developer
A little over three months into the project we had a decently prepared backend and a prototype of the game itself. On the surface it seemed only a little was left to polish: hook up the payment providers and… Oh, right, we already had a finished design but no markup at all (yes, back then it was done by hand). Since neither I nor my colleague liked writing markup, the thought that all of this had to be packaged into a beautiful, optimized frontend started to scare us. We were sure that solving the frontend questions would let us launch the project. So we approached another colleague (from that same company) with an offer to join as a partner.
He kindly agreed, we were delighted, and we got back to work with renewed energy. Two months later we had moved forward a bit. On the surface it seemed only a tiny bit was left: hook up the payment providers (a slight déjà vu), finish the admin panel, fix a ton of bugs; in short, polish the project.
As for the frontend developer we had invited… Sometimes people cannot or simply do not know how to say “no” for mysterious reasons (either it feels awkward, or they overestimated themselves, or something else). In the end about 20–30% of the plan was done, along with the eternal promise: “It will all be ready soon.” Spoiler: soon never came.
Meanwhile, something far more important was happening.
And then it turned out that just writing code is not enough
While we were building our improved version of the project, which was supposed to be ten times better than the original, clones started to appear. First a few. Then a few more. I do not know the exact number; I personally came across about a dozen. And the most unpleasant part was not even the number of competitors. During the months we spent building a big product (working in the evenings after our full-time jobs), other teams managed to implement almost all the ideas we had considered our advantages.
By that point, when the market was already packed with similar sites, our situation looked roughly like this:
- About six months of development;
- Most of the product was ready (with bugs and rough edges, but something worked);
- A raw demo version already existed on our own domain;
- The core mechanics worked and the project could be tested;
- We still had no payment providers and no admin panel.
And while the admin panel was not the biggest problem (as developers, we could have administered everything through the database and code for a while), accepting payments was decisive for a proper launch.
And this is exactly where the technical project suddenly stopped being only technical.
Harsh reality and legal
Up to a certain point we had mostly been solving tasks familiar to any developer. Even if some technologies were new, we were in our element: finding documentation, studying, figuring things out and writing code. At the time none of us had any experience with the business side of launching a project. In other words, we not only did not know how to solve business problems, we did not even think about them.
The project was aimed first of all at the audience of the CIS countries, so we needed to accept rubles, hryvnias and other currencies, top up the internal balance and let users withdraw their winnings. And then it turned out that far from all banks and payment systems are willing to work with lotteries without a license.
Next came the question of the legal setup. Do we need a company? Where and how do we register it? How much does it cost? What are the requirements for projects like this? Which payment systems and banks will agree to connect us after that?
While we were looking at this whole pile of questions and thinking about what to do with it, new factors came into play. Our unique extra features stopped being unique before we even launched. The large number of identical services diluted the audience. On some projects the online count dropped so low that from time to time a player simply had no one to start a new round with. Some of the recently launched competitors gradually began to disappear.
We closed before we launched
Our project was already deployed and publicly available. It was hosted with a Russian provider. And even though we had not really launched yet, we received an official notice from Roskomnadzor about violating the requirements of Russian law.
The gist of the letter was that under the laws of the Russian Federation we were obliged to stop our activity. It was followed by a letter saying that our hosting provider had no right to serve such a project without a license, and if we did not remove it within a week the account would be blocked.
We needed to look for abuse-resistant hosting abroad, which cost noticeably more. We needed to keep dealing with the legal side and look for payment solutions. We needed to finish the project, test it and fix the defects. We needed to keep competing with the clones that had already launched. We needed to work on promotion. There were far too many “we needed to”.
Each of these problems on its own was solvable. Together, though, they were an impossible burden. In a few months the idea went from “let’s build an interesting project, gain new experience and make money” to a rather long list of tasks, most of which had nothing to do with writing code at all.
At some point we simply burned out and stopped seeing enough reasons to continue. After discussing the situation, we decided to close the project.
Takeaways
Today a list of problems like this looks to me like an ordinary set of tasks that need to be studied and solved one by one. I already have experience registering companies, going through compliance and dealing with some legal questions. And I owe much of my current experience precisely to stories of failure like this one.
Entrepreneurial experience is hard to get from books, other people’s stories and advice alone. A significant part of it comes after your own failures. Once you spend six months building a product before the first launch, you start to understand the meaning of an MVP much better. Once you run into payment restrictions, you check them much earlier in the next project. Once you get the division of roles between partners wrong, you build the next agreements differently.
There is a good saying:
Failures are the price of success!
Once you have launched projects several times and run into all kinds of problems, they gradually turn into routine tasks. And with every new launch you evolve. The main thing is to be able to analyze, draw the right conclusions and move on.
Even though we did not manage to launch the project, build a profitable business and make a million, we went through an interesting journey and gained valuable experience.
For better or worse, I rethought many things only years later. And I still keep discovering something new for myself.


