Apart from my usual activities, this year I devoted a significant portion of my time to another project. Its codename was raceentr.io (like race center, or race enter, or race entry), and it was meant to revolutionize the endurance sports event experience. During the one-year-long period, there were emotional ups and downs, and I learned a ton about business, startups, human nature, and tech. In this blog post, I’ll try to summarize the story.
The birth of the idea
During the winter of 2020, I was busy picking up different web frameworks. The best way of learning them was by building, and I did so. I always came up with a project idea, built it, and learned a lot while doing it. This time, I wanted to get to know Vue.js, and my next project was to build a signup platform for running events. Having been to many races, I realized that the signup process was suboptimal. There was no single website to find races, so runners had to look for them in Facebook groups, different calendars, and websites. There was a website collecting the vast majority of races from Hungary, but that was coming from the early 2000s. Such a registration platform didn’t seem impossible to implement from a technical point of view, so I was determined to build it. After working on it for a few months, I had to pause the project as I got my first job as a junior software engineer.
Months passed, and the next time I touched the project was after coming home from a hackathon in the summer of 2021. I wanted to apply the knowledge I picked up during those few days, and the project (in its former name, VO2JOG) came in handy. I spent the next night analyzing the market, looking at the features of competitors, planning the product, and brainstorming about low-cost marketing channels. I didn’t have to wait a month until all this work turned out to be useful. I stumbled upon an advertisement for an event called Ideafest 2022, a startup competition specifically for Hungarian high school students. I immediately got excited and started following the event. Soon, there was a roadshow happening in my town. I went there with the hopes of finding an idea and a team I could join. To much of my disappointment, there were neither ambitious teams nor exciting ideas I could have joined. Instead, three people showed up (including me), and I had to resort to my plan B and reach for the VO2JOG idea in my back pocket. Although I believed my idea was far from a winning one, I had to realize that it was up to me to build a team.
Entering Ideafest
Soon after, I realized a problem: not only was my professional network small, but it also lacked any high schoolers. After asking around a bit, I got a recommendation for a similar-aged person. I called him and summarized what the whole thing was about and emphasized that we had good chances of winning and therefore going to the U.S. A day or two later I got a text from him saying that he was not interested - not a good start. The next potential teammate was a friend of mine, Gergo. We were sitting in school on a compulsory arts day, watching some tedious movie about an artist, when it occurred to me that I should ask him. I told him about the event and my whole idea, and he agreed to join despite his lack of experience in the field. As for the third team member, I had to seek a new recommendation again. This time it was Dominik, and we met once at a presentation competition a few years ago. Luckily, he accepted the request. After presenting VO2JOG to the newly formed team, we decided to stick to my idea due to a lack of alternatives. VO2JOG was now ready to take over the world with our trio.
The very first stage was filling out a proposal form about the idea. After we got the green light, the regional finals were awaiting us. That event had already required teams to pitch ideas and answer questions from the jury. Our (or at least my) excitement level went up as things turned more serious. We immediately conducted our very first customer interview with a local running event organizer. It couldn’t have been better. The person confirmed that the pain points were real and that they were experiencing them. Manually checking who’d transferred the entry fee, sending out emails for those who hadn’t, and barely any visibility were just some of the things they were struggling with. Even better, he told us that he alreadThisy had a very similar idea in mind, but he lacked the resources to build it.
Both my optimism and motivation skyrocketed. I was sure that Ideafest was a stop, not the destination, and we will have actual users on the platform within a year. Therefore, the work could not stop. In my spare time, I worked on the pitch deck and thought about the product. While on my daily morning runs, my mind kept spinning on the business model and features. Pitch day was nearing, and although I liked public speaking, I realized I might not have been the most suitable person for the job. Hence, we agreed that Gergo would do the pitch, and I join him for the Q&A. The pitch deck was ready, and the week before the event, we agreed that he writes write the speech. We also set up an initial feedback call with our “mentor”, on both Saturday and Monday. On Friday, he texted me that he was ready. The first issue arose when I opened the shared document, and it wasn’t exactly what I anticipated. But no worries, he was very new to the startup world, so I’ll simply rewrite it, and he can still present it. The second issue popped up on Saturday: 25 minutes before the call, I received another text that Gergo was not going to make it for the call. It was up to me to present something. Having rewritten the speech the night before did improve my chances of presenting something, but I blew it. Despite the hardships, I was optimistic that we could still present it during the “final call”. Time went on, and as there was neither new activity in Notion on Sunday nor a response to my text (I was left on unseen), my anxiety level spiked. I promised that there wouldn’t be any hiccups on Monday. Yet, as we approached the end of the weekend, fulfilling the promise seemed distant. Around 8 pm, I had a tipping point. I made the call that I’d be the one pitching. After some practice, it turned out that we were still around three minutes over the limit. I had to reduce the speech length and learn it as soon as possible. At 10.30 pm, when I’d almost finished, my phone beeped. Gergo texted me, claiming he was now taking care of it. A bit too late.
The regional finals
Fortunately, this didn’t stop us. We aced the pre-presentation on Monday, and I pitched with high expectations the next day. The jury seemed convinced, so we qualified ourselves for the national finals. I remember, as we were stepping out of the building to the dark street, somebody asked whether we were going to celebrate. My grumpy answer was “let’s celebrate with work”, I drove home and purchased the domain raceentr.io. I meant it as a joke, but still, I was aware of what was coming: the prototype. Up until this point, the most I’d done was create some Figma mockups. However, I was itching to build something. After all, how else would we organize our first events and gather feedback?
Since it was already the middle of December, not much happened afterward. We received some prizes and raised a little bit of regional media attention. Yet, for me, the timing was perfect. Due to the holiday season, I had some more spare time available. It meant that I could make significant progress on the platform. Normally, it would’ve been impossible to build it from scratch. Still, this required some planning from my side. In my day job at Varia, we also had a big feature coming up. It would’ve kept me occupied for a few weeks. However, I couldn’t wait for working on raceentr.io. Therefore, as my school workload decreased, I started putting in as many hours as possible to my work. It was simple: the sooner I finished during the Christmas break, the more progress I could make with raceentr. As a result, in these eight days, I spent around 66 hours coding. Although roughly 8 hours a day shouldn’t sound like a lot, this was pure coding/implementation time. The reality was probably closer to 10-11 hours a day. I almost managed to pull it off by Christmas, as the 24th was my last “intense working day” (ten-plus hours a day). I wrapped up my work the next day, did some further testing, and submitted the PR, officially finishing my work for 2021. I have to mention here that this has been one of the most complicated pieces of software I’ve ever written. I’ve been proud of it up until this day. It consisted of 483 changed files, standardized the view types in Varia Research, introduced proper state management through caching, rewrote the universally used paginated data loader to support caching, and wrote thorough automated tests for it. Despite being a relatively stressful time, looking back at it, I only have good memories.
Building the platform
Still, this left me approximately two weeks to build the platform from scratch. I wanted to get it into a state where I only had to make tiny adjustments later, and all the main features were ready. I could have built on top of the existing VO2JOG codebase, yet, my intuition told me that it was faster if I started from scratch: at the time of writing it, I hadn’t developed software professionally. Just after having a year behind me, the difference was enormous.
I knew that these decisions would significantly affect the outcome. Therefore, I didn’t want to rush choosing the right tech stack. Common wisdom says that the best tech stack is the one you are familiar with. Still, I intended to use the opportunity to learn some new frameworks and libraries. Choosing the backend was quite simple: Node.js paired with Nest.JS, Apollo Server, and PostgreSQL. All technologies I’ve already worked with, but not on a daily basis. For the frontend, however, this wasn’t so clear-cut. I was split between Angular and React (Next.JS). On the one hand, I’d already worked a lot with Angular so I knew that I can move fast. On the other hand, React was something I wanted to try further. In the end, the deciding factor was Angular’s poor SSR support, and I picked React/Next.JS. I also picked Chakra-UI and urql (hoping to avoid spending countless hours on the Apollo Client GitHub issues). It took me two days to finalize the stack, but finally, I was ready to rock & roll.
The subsequent two weeks weren’t eventful. I mostly woke up, went running, ate some Christmas treats, coded, architected, drew wireframes, planned features, and repeated the last four steps until I fell asleep. I wanted to hit the sweet spot between getting something out quickly without accumulating too much technical debt. After all, the national finals weren’t the ultimate goal. Besides, you can’t disrupt an industry with a codebase sinking in tech debt (or can you?). By the end of the two weeks, there was a seemingly working product in my hands. Sure, some features remained unimplemented on the admin page, and some backend requests were making too many SQL queries, but it worked, and that mattered.
Later in January, we also got a mentor in the form of Roland. He was the CEO of a Hungarian sportstech startup. Oddly, our products did intersect a bit. Fortunately, their focus was remote training sessions and gym reservations. In the months leading up to the finals in March, we met every week, further discussing the business model and the idea. We also refined our pitch deck and started organizing presentation practices (with me presenting). These turned out to be invaluable. They gave me the experience of being and moving on stage, something many other teams lacked. During this time, I wasn’t working on the product due to time constraints (studying and working).
Pitch day
The week leading up to the pitch day was quite eventful. I was planning on taking the week off to dot all the i’s and cross all the t’s. Yet, I started developing flu-like symptoms. On Tuesday, it got slightly worse. I still believed that some extra sleep would cure me quickly. Beforehand, I installed a TLS certificate and did some final testing, but I fell asleep. The next time I woke up was Wednesday, with a frog in my throat. I quickly sent a text to the group chat to let the others know they had to take care of the last part: uploading some mock data. On Thursday, the day of the event, nobody knew whether I could speak. On top of that, the mock data violated DB constraints and produced runtime errors. While other teams were building their booths, I was furiously trying to figure out where the bugs were and deployed the changes. The lesson is clear: if you spend 150 hours working on a prototype, don’t let a runtime error prevent everybody from seeing it. Spend that extra hour getting everything 100% ready. During the event, as the pitches of other teams started, I was delighted to see that I wasn’t far off when I said that we had a realistic shot at winning. We came sixth out of ten, and the jury was already worn off. After swallowing some painkillers, I took the stage and entered a flow state immediately. I managed to stay within the time limit, not leave out anything, and do all the show elements. The first jury member to speak was ecstatic: as if it was Shark Tank, he immediately said that “he was in” (our first investment offer?). They congratulated us and managed to ask questions we had clear answers for. Sitting down, I was cheerful that we were flying to the U.S. Surprisingly, the next few pitches were also of much higher quality than the first batch. We were lucky enough to start and raise the bar. Fortunately, the reaction by the jury matched the result, and we brought home the trophy. The way home was not particularly interesting. We spent our time chatting casually. At this point, I’d already made up my mind that pursuing the product further wasn’t the best option for me.
The aftermath
The story didn’t end with traveling home from Budapest. Our success raised a surprising amount of media attention, from regional newspapers through TV stations and podcasts to national radio. Although I doubted that the media attention was justified, I didn’t mind exploring what it was like to give interviews. Still, the more important question was what was coming next? I was pretty sure there was not much for me to win here. After all, I was a junior SWE with just more than a year of experience. Even though I was involved in most of Varia Research’s product lifecycle, I realized that jumping into my own company would have been premature. I was a fan of steep learning curves, but getting a few more years of experience appeared much more productive. Besides, I knew I’d move abroad to study within a year. There were too many unknowns to make such a long-term commitment. On top of these two reasons, there were also some minor ones (small market with low margins, wanting to expand my network first, no realistic exit opportunities, etc.). The opportunity cost was unbearable for me.
On the other side, there were some opposing forces. Attila, the event’s regional coordinator, set it out to convince me that it was still a good idea. It wasn’t purely about me: he’d join the team, and it’d be positive PR for the local ecosystem as well. It resulted in at least three meetings of at least four hours each, trying to convince each other. My mind was already made up based on the information available, and no new information was presented. During this time, one evening, I got a phone call from an unknown number. The person on the other end was an executive of a local energetics company, offering support and investment if we wanted to move forward. Although it didn’t change my mind, it still felt good.
The prize: a trip to the U.S.
As promised at the beginning, the prize was a fully-funded trip to the U.S. It started as a 12 days-long trip with healthtech startups going there to meet investors. Yet, the date collided with our final exams. The new schedule left us five days fewer, meaning we could only visit New York City and Boston. Overall, it was a fun and memorable week. The only thing I missed was some extra startup-oriented programs: doing the Columbia campus visit was fun but didn’t quite cut it. But at least we had enough time to visit the main sights. However, thinking at a meetup that an MIT-graduate entrepreneur was a homeless person was a unique experience (as more frequent members said, they thought the same at first). Visiting the pika house at MIT is also something to remember for a long time.
Putting raceentr.io slowly to sleep
Around the end of the summer, there was one more attempt to bring raceentr.io to life. Gergo and Attila started doing the marketing and sales part of the product, (presumably) hoping that by seeing some initial success, I’d change my mind and get on board. I have no information about how many emails were sent out to organizers (if any), and what results they yielded. Still, at the end of October, I woke up one morning to see a text from Gergo. It was an unusually long and formal message, saying that he saw there was no point in pushing this any further if I didn’t get on board. He had realized that our working styles were vastly different and incompatible, likely leading to conflicts later down the road. I agreed, and the 27th of October officially marked the end of the project.
Conclusion & takeaways
It’s hard to highlight one single takeaway. After all, all these events happened over almost two years. I would’ve expected to see the most takeaways about different frameworks and databases. Still, I have to admit that I learned the most about human nature and startups. However, as this post is already lengthy enough, what I took away from this is going to be in a separate blog post.