First business failure and the lessons from it
Back 3/22/2025

First business failure and the lessons from it

How I failed my first SaaS and what I learned from it

Escape room mini game

Before diving into the solo dev journey, I was watching the progress of indie hackers and solo makers—one of them being Marc Lou. In one of his videos, he shared all his startup attempts, and the first one was a Facebook game for escape room businesses. I thought it looked kinda ugly and not fun at all, and figured I could build a much better mini escape game. The idea clicked for me—it felt somewhat validated, I knew I could build it fast, and I already had a plan for reaching potential clients.

So I started building. I had a working prototype done over the weekend and picked up SvelteKit along the way (love it, highly recommend). The next day, I used Claude Sonnet 3.7 to create a pretty slick landing page—just tweaked the copy, swapped images, and fixed a few bugs. Next step: getting contacts. I’ve done some web scraping before and I’m a lazy dev, so I found a Czech escape room directory and scraped phone numbers (no emails, unfortunately). After cleaning the data and grouping unique owners, I ended up with about 60 contacts.

Obviously, I wasn’t about to copy-paste 60 messages manually. So I built an iOS Shortcuts script that looped over a CSV and sent them for me. This whole process took about 4 days. You can check out the result here.

Then I sent the game to a few friends to try and look for bugs. Most of them liked it and said it was fun. Of course, there were some bugs—which I fixed. After about a week, I sent out the 60 text messages. Thanks to PostHog on the site, I was able to track visits and gameplay. The CTR was nuts—around 80% of people visited and spent 4–5 minutes on the site.

I got about 8 positive replies saying they liked the idea and would "think about it" (lol—classic non-buyer response). Still, I felt kind of validated. Riding that wave, I scraped hundreds of US escape room emails. I figured US businesses might have more budget (especially since one of the Czech replies was “cool idea but too expensive”).

I set up my Resend account and started sending out semi-personalized emails. The results were trash—only about 4% CTR. Still not sure why.

Here’s roughly what the email looked like

From: Tomas from MiniEscape

Subject: 🎯 Boost Your Escape Room Bookings with This Fun Game!

Hi {{business_name}},

Give your website visitors a reason to book—let them play a quick mini escape game to unlock an exclusive discount! 🎟️✨

It’s simple:

🔹 The game runs on your website.

🔹 Visitors play, get engaged, and if they win, they receive a discount (you choose the amount).

🔹 More fun = More bookings! 🚀

🎮 Try it out: https://escaperoomwidget.com

Interested? Let’s set it up! Not for you? I’d still love to hear your thoughts.

Best regards,

Tomas

Anyway, I realized that even if I could tweak the emails and improve CTR, around 100 people saw the game and didn’t see enough value to buy it. So I killed the idea. The biggest mistake? I thought I was copying a validated idea—but I wasn’t.

Marc’s FB game was more of a viral marketing tool. Players would share it with friends. Mine was a widget embedded on a business website, meant to increase conversions—but I had no proof it actually did. The ideas sound similar but the value prop is completely different.

Business lessons learned

1. SMS > email for open and click rates.

2. Don’t try to sell on day one. I should’ve installed it on 1–2 escape rooms, tracked results, and built a case study.

3. Focus on real value. If it’s not a painkiller, it’s gonna be a hard sell.

4. “I like the idea” ≠ validation. “Can you install this today/tomorrow/this week?” is.

Tech I learned

1. Bought a domain, self-hosted on my $18/mo VPS (8 vCPU AMD, 16GB RAM, 160GB NVMe), set up DNS records for email, used Caddy (super easy, highly recommend) as a reverse proxy for multiple domains, and used PM2 to manage my Node.js app—great for MVPs.

2. SvelteKit (love it, really hope adoption grows so it plays nicer with LLMs).

3. PostHog with session recordings—super useful for debugging, and the free plan is generous.

4. For contact, I made a form that sends to a Slack channel via webhook (no DB needed). Also used Slack for error monitoring—uncaught errors sent straight there.

5. Built an iframe widget embeddable on external sites. Not rocket science, but something I always wondered how to do when I was starting out.

6. Built i18n with a reactive $state. Honestly not sure why you'd need a whole translation package for SvelteKit.

Final thoughts

Even though I didn’t make a single dollar with this project, I ran into a bunch of real-world business problems—marketing, email campaigns, distribution—and picked up a lot of useful tech along the way. So I’m still kinda happy with the experience. Moving on to the next idea, and bringing these lessons with me.