I launched my first successful side project and I didn't like it

In 2020, my first side project started. I created something that I myself lacked, then started selling it to others, and to date, the project has earned me over $15,000. But just a few months after the release, the support exhausted me so much that I wanted to shut it down. Below you will find the story of my little adventure in the world of entrepreneurship.

In the second half of 2020, I had some free time. I had just finished a project for a client and decided to dedicate a few months to creating Python course – just for variety. At the same time, I developed an interest in applying technical analysis to stock trading. Following the advice of an “Internet investing guru” (yes, I know how that sounds), I began day trading based on some arcane pricing knowledge known as harmonic patterns, which tell me when it’s best to buy and sell (listen, don’t judge me too harshly, I shudder as I type this).

Like many others traders investors, I used
TradingViewthe most popular online platform for technical analysis. Compared to what other stock brokers at the time offered, TradingView was a cut above: a user-friendly interface, an extensive set of tools. You could even write your own scripts using a monstrous scripting language called PineScript – implementing all sorts of tools, graphs and metrics for your charts.

But they didn't have a script that would plot harmonic patterns for me, so after a few days of manually drawing them, I got tired and decided to automate the process. It took me a few weeks to master the language and create a script that automatically plotted harmonic patterns on charts. Thanks to this script, the time I spent searching for securities to trade was significantly reduced. So I wrote another one to plot potential patterns for the future.

Great! If I found it useful, maybe someone else will be willing to pay for the use of these scripts. After all, harmonic patterns are not a new idea; the first one, the Gartley pattern, was described back in 1935. There are books, articles, and videos on the topic, so I was certainly not the only one using them.

Luckily for me, TradingView does support paid access to scripts, albeit in a rather confusing format. The most expensive plan allows you to publish your script with “invite-only” access, thus controlling who can use it. I paid for the appropriate plan and created a landing page linked to Gumroad to process payments for a monthly and annual subscription.

Promotion of scripts

Now I had to somehow let TradingView users know about my script – it’s not that easy to find a script with “invite-only” access. TradingView doesn’t promote them in search results, but on the contrary, prioritizes free open-source scripts. And even if someone finds my scripts and my website, I still have to convince them that they are useful and work as they should. Even though I gave a money-back guarantee for any subscription within 14 days, people were reluctant to give their bank card details to some obscure website.

So I made a couple of smaller scripts, using large chunks of existing code as a basis. The source code was still hidden, but people could use these scripts for free – only their functionality was cut down:

  • Only some pricing options are available;
  • the number of past days for which data can be displayed is limited;
  • There are no automatic notifications about the appearance of a new pattern.

Nevertheless, people liked the scripts and started using them. When questions came in about missing features, such as notifications or identifying other patterns, I directed the questioner to the paid version.

Then I posted a few “ideas” on TradingView — screenshots of popular stock charts with current and possible future harmonic patterns generated by my scripts. Finally, I created a YouTube channel and posted videos showing all the capabilities of my scripts (partly so that I wouldn’t have to explain everything over and over again).

And so I sat down and waited for the money to start flowing like a river.

Nothing happened for two weeks, but then I got my first sale! Someone paid for a month of access to one of the scripts. It was the first time in my life that someone on the internet paid me for something. It was a great feeling! He later asked for a refund because he thought the script was useless, but I still remember the excitement I felt when I was lying on my couch one evening and got an email from Gumroad saying, “Hey, someone paid nine bucks for your creation!”

Yes, this month was also not bad… but I will remember the first sale for the rest of my life

The number of free users was slowly growing, and some of them were upgrading to the paid version. In my quest to strike while the iron was hot, I posted an offer for anyone interested – if they left a comment, they would get a week of free access as a trial period. There were some takers, and I had to log into TradingView each time and manually grant everyone access. Some of these trials converted into paid subscriptions, but most did not. The number of subscribers slowly but surely began to grow.

Demanding clients, fraud and the final destination – burnout

As my scripts gained more users, I began to receive emails with questions and suggestions for new features. The lion's share of these emails contained requests for free access. Others contained very simple questions, the answers to which could be found in the script descriptions.

There were also those who wanted to buy the source code.

Or access it for free. For personal use, of course!

Some people asked for specific features because a YouTube channel they watch recommended something like that.

Or they insisted that I do something that I don’t know what – from their point of view, it probably sounded obvious.

There were quite a few people who asked for advice on how to trade something and whether it would fall or rise in price (they were almost always talking about cryptocurrencies or forex).

What's worse, sometimes such requests were accompanied by a description of life circumstances in the spirit of “I'm a poor student, I want to make some money” or “I went broke trading, but your script makes a very good impression, I'll win it back with it.” Why would you bet on some random instrument if you don't even understand how it works? And on top of that, ask some random stranger on the Internet for financial advice?! It's just pathetic. I created a tool for people who know what harmonic patterns are. For people with an investment strategy who just want to automate the process of building charts so they don't have to do it manually. And not for some kind of adventurer “investors” whose entire strategy boils down to “this random script I found five minutes ago says that the stocks will grow, I need to buy it.”

Sometimes I was offered a job. Hurray! Professionally write PineScript. Hurray, cancelled!

I was also offered cooperation with the owner of a “group of active traders”.

I even had the opportunity to practice foreign languages!

Disputes

It happened that people opened disputes. A dispute means a complaint to PayPal that an unauthorized charge was made to the user's card. Then the decision is left up to PayPal – either admit they are right (and return the entire amount + charge me $20 as a “refund fee”), or not admit (then I keep the payment).

In general, I try to accommodate my customers as much as possible. I sell software, which means I have an unlimited number of copies, unlike sellers of physical objects; it costs me nothing to produce new copies, and there are no shipping or returns costs. So if someone writes me a message like, “Oh, I forgot to cancel my subscription and it lasted another month,” or “The two-week warranty period has passed, but it turns out the script doesn’t work for me,” I’ll just give them their money back. I want things to be good. I started selling these tools out of a desire to help others. I have no desire to charge people money for a product they don’t need.

But I also don't want to have disputes opened with me. Too many disputes are a risk for PayPal to freeze the account.

Sometimes, trying to settle things amicably is not enough. Especially when good intentions cannot be demonstrated due to sleep. The first dispute with me was opened by a client who wrote to me in the middle of the night asking how to cancel a subscription – he opened the dispute half an hour after this message. Although it would be enough to look at the letters from Gumroad, there is a link to manage the subscription. The letters are short, just a few lines of text, so it is not as if the link is hidden somewhere deep. Other people who wanted to cancel a subscription at least found it. Well, or you could have waited and not opened a dispute immediately after the letter.

Fortunately, after I explained that I could and wanted to return the money on the condition that the dispute was closed first, the buyer agreed to my offer. We closed the dispute, and a little later he got his money back.

There have been a few more disputes over the years, but none of them are as exciting. Typically, someone would file a claim with PayPal, not respond to my messages or theirs, and PayPal would then dismiss the claim as unfounded.

Yes, and about fraud

Politeness and compliance pay off handsomely and make online communication much more enjoyable for everyone. However, sooner or later they will cause someone to try to rip you off.

In my case, this happened three times. The most common scenario was paying with a stolen credit card, but Gumroad caught that and declined the payments. However, the first encounter with fraud took me a little by surprise. I don’t have many screenshots because the person deleted their account with TradingView, but it went something like this.

First, Mr. Scammer (not his real name) asked for free access to the script. This is common – I get requests like this on a regular basis. After I politely but firmly refused, he tried to make a payment, but the service declined it, sending a message asking me to contact Gumroad. This didn’t seem like a red flag either, more like a technical glitch. Finally, I received a notification that he had paid for the subscription.

Two months later, I received a letter about a payment dispute. The dispute was opened by Mr. Scammer. I asked him why he did this – he had never mentioned that he wanted to cancel the subscription or return the money. And that's when things started to look very suspicious.

Translation

– Hello, I have re-subscribed to <...>. Can you give me access?
— Hello, I sent you a letter. You sent a request for a chargeback on the July subscription payment. Why?
– Sorry, it looks like it's my wife. My wife controls my spending. I forgot to tell him that I subscribed to tradingview indicators. How do I pay then? Do I have to pay again?

Surprising grammatical errors in themselves are not a warning sign either. They are common in letters from both active and potential clients, and should not be automatically taken as an indication of fraud. But this whole story with the wife, who controls all the spending, and opened a dispute because you, supposedly, forgot to warn her about buying a script on TradingView? This is even more wild than the poor students who periodically appear on the horizon who can’t scrape together fifteen dollars, but are in dire need of a script for day trading.

While waiting for the dispute to be resolved, Mr. Swindler tried to pay for the subscription again, but this time with less success.

Gumroad Scam Attempt Alert

So his wife not only tracked his spending, but also slipped him stolen credit cards? I wrote to him that I was banning him from using my scripts; if he tried to make a payment again, I would immediately block his access. This stopped any further attempts.

Of all the scams, this was the most entertaining. Usually when I catch someone red-handed, they just stop responding to messages rather than showing any creativity.

Translation

Hello, I just received a message from my payment provider that you used a stolen credit card to pay for a subscription to <...>. Why would you do that? I have blocked your access to the script.

Burnout

Replying to comments and sifting through comments on TradingView to grant access to requests took up a small amount of my time each day. Just a little bit, but I tried to respond to comments once a day or more. When I didn't have a full-time job, it was just a minor irritant. But when I started logging in after a long day to see yet another email asking me to implement some magical method for determining take profit levels suggested by a crypto YouTuber with fifty subscribers, I quickly became fed up with it.

The worst part is that after a few months I stopped using scripts myself. Day trading was fun when I didn't have to work. It gave me a nice break from recording videos and motivation to learn more about financial markets. But after starting a new contract, I gave up day trading – I didn't have the time.
But I still had clients who needed attention and potential clients who asked a lot of different questions. I was starting to get tired of supporting the project. There were times when I would spend an hour answering detailed questions from a potential client, only to have them disappear into thin air. There were times when the product would get a one-star rating on Gumroad simply because I didn’t want to accommodate some commenter’s quirk in terms of functionality. On those days, I wanted to shut the project down, refund the remaining clients, and delete my TradingView account.

Anyway, the project brought me some money every month. I couldn't bring myself to kill this tiny laying hen. So I decided to sell my “chicken”.

How I sold the project (or tried to sell it)

I started looking for platforms where I could put the project up for sale. I found a few and decided to post an ad on

IndieMaker

And

Transferslot

(Three years ago, he seemed more active). He prepared a detailed description of the product, including details such as the number of views on the YouTube channel, the number of unique visitors to the site, the number of subscribers on different platforms, and, of course, revenue. He even shared some ideas about further development of the project. For example, if we could get one of the free scripts promoted in the weekly TradingView newsletter, this could increase sales of paid scripts.

Then, based on random recommendations from the internet, I set a price – an amount roughly equivalent to five times the last year’s revenue – and sent the ad out for publication.

IndieMaker published my ad, and soon I received an inquiry from a potential buyer. But after asking about recurring monthly income growth and assets related to the project, nothing followed. I received other messages, but these were outright spam (“Hi, I'm interested in your project, send us an inventory list”). My ad was never posted on Transferslot. I suspect the site was already abandoned when I submitted it.

If you have any experience selling projects online, you're probably shaking your head in disapproval (and if you haven't, here is this article Patrick MacKenzie is the best way to understand how it all works). People who buy software businesses are looking for simple, low-risk projects with boring technical content and a proven history of stable or growing sales. No one wants a project written in an esoteric language (PineScript), running on a third-party platform (TradingView), and intended for a very narrow layer of traders.

After a couple of weeks without any response, I wondered what to do next. I could submit my ad to bigger platforms like Flippa and pay for its hosting. But I had a feeling that the project was too niche, and I wouldn't be able to find a buyer on other platforms either. Especially one who owned PineScript, which is necessary to maintain and improve the source code.

While I waited for other potential buyers to bid, I wondered what I could do to make the project less of a hassle. I'm a programmer, dammit! We're not meant to mash buttons or send the same email over and over!

Switching to autopilot

I assessed my capabilities and decided to automate the following components of the work:

  • Paying for Gumroad should automatically grant access to the script on TradingView and send a welcome email. This will free me from the most time-consuming part of the job – no more starting each day by visiting TradingView to grant access to those who paid for the subscription at night.
  • A chatbot to manage subscriptions so I can do all the manual work (cancelling subscriptions for refunds, extending trials, etc.) with simple commands from my phone, without having to log into TradingView.
  • Finally, the ability to have an online form where people could request a trial by leaving their TradingView username. This form would run a Python script that would grant access to the chosen script for a week.

I implemented all this with the help of

n8n

which combined different services – webhooks, Telegram bot, Python scripts, email distribution, etc. I will describe the technical details of this system in a separate article.

Once I was done with the automation, users were able to request a trial via an online form or pay for a Gumroad subscription and have the whole process done automatically. Every now and then, when someone canceled their subscription, I had to send a short message to the Telegram bot to set a date for when they would be unsubscribed.

The hardest part was to switch off emotionally and stop worrying about the project. I like helping people. That's why I became a programmer – to create programs to help myself and others. When I get an email, I try to answer it thoroughly. Over the years of working with clients, I have learned to explain in a simple and understandable way. So I spent hours answering questions from potential buyers who eventually left and never came back. And even when I posted a link to the trial access request form, many did not bother to read the explanations and continued to write comments and send messages with requests.

This had to stop. I started by only logging into TradingView on weekends and handing out access in bulk. I would reply to any comments asking for a trial with “I just gave you access, but it would have been quicker if you had used the form I linked to” in the hopes that others would see the message and use the form. I still paid special attention to those who were already using the product, and would reply to their emails every evening. But if someone had not yet used the product, I would wait until the weekend to respond. Eventually, I stopped reading comments and messages on TradingView altogether. Those who really wanted a trial would eventually read two sentences, click the link, and fill out the form.

Did it have a big impact on sales? I wouldn't say it did. Most of those asking the silly questions would never have become paying customers anyway. They were just looking. They found a script that supposedly predicted price fluctuations and wanted to know how to get rich with it. The principles and rationale behind it? Who cares. They have a dozen more scripts planned to be tested by the end of the day.

Did this shutdown have a significant impact on my mental health? Not the word! The project went into autopilot mode, and checking my email or TradingView account no longer seemed like a heavy cross to bear. Interest dropped significantly, as I stopped releasing updates, and people decided that the product was no longer relevant (even though it does its job no worse than it did a few years ago). Revenue has been falling in recent years. But I don’t care. I’m happy again.

What's next for this project? I suppose it will continue until I decide it's not worth the trouble of including it in my monthly accounting reports, and then I'll shut it down. But for now, the $200 I'm getting each month for almost no effort is a nice passive income.

What I learned

Don't burn out on a side project

The terrible truth that most programmers learn the hard way is that releasing a product is just the beginning. Once it's out there, you'll have to support it: fix bugs, implement new features, settle disputes and scams, and answer a whole bunch of emails (often from curious people who will never become customers).

Support becomes easier if you have a lot of products and you do it “in bulk”. Or if the project can replace your main job, and you have a whole day left for support. But if you do it in addition to your regular work, time runs out at a terrible speed. You need to set some limits. Otherwise, all available time will go to work on the project.

It's much more interesting to work on a side project if you're one of its users and sincerely want to make it as good as possible. When you love a project, everything goes like clockwork, and the prospect of devoting all day to it seems like a dream come true. Conversely, it's much harder to maintain a project when your interest has already moved on to something else, you don't want to mess around with it anymore, but there are still active users who need to be pleased.

If your side project isn't a source of genuine joy for you and you prioritize other things, it's important to set boundaries. I decided that I would focus my support on paying users. I also stopped adding new features and promised myself that unless something broke in the script, I wouldn't touch the code. I had a list of additional improvements I wanted to implement someday, but I deleted that list. I already have a paying audience, which means people find some value in the tool I've built. Sure, I can add more and attract new users. But that means investing more in coding and support, all for the sole chance of expanding my audience.

Use the services of a registered seller

If you plan to sell your product globally, consider going with a registered seller like Gumroad or Paddle. That way, you don't have to worry about what tax to charge in which country (you're essentially selling your product to Gumroad, and they're reselling it to the end user). The last thing I wanted to do when selling my products was agonize over tax calculations. I went with Gumroad, which at the time of writing charges a 10% commission, plus an additional 3% or so for PayPal/Stripe.

There are probably better options out there, so do your research before you make a choice. Once regular payments start coming in, it can be tough to move your active users to another platform. Gumroad's fees have been increasing over the years, but I always thought it was too much trouble to move, so I stuck with it.

Selling a product to people is not easy

I had this conversation with one guy.

– Hi, cool script! I gave it five stars. Can you add a take profit level for me?
— Sorry, I can’t. The underlying methodology doesn’t allow for precise calculation of take profit levels. And there’s no point in doing so, since they need to be determined manually, say, based on support and resistance levels that are displayed on the chart. Different people will have different take profit levels, depending on their attitude to risk.
– I see, but can you add to this, please? I'm sticking to the approach [вставьте сюда имя криптотрейдера с YouTube]and he uses [какой-то особый уровень тейк-профита]I want the script to be drawn for me.
– Look, it won't work. These levels are heavily tied to your trading system. They won't work for the majority of people, and they will slow down the script for everyone.
– Well, okay.

A few days later, he cancelled his subscription and changed his five-star rating to two stars.

B2C is a complicated thing (I don’t mean that B2B is easy, it has its own difficulties). But that doesn’t mean that B2C is not worth getting involved with. There are many people who are great at interacting with customers. Among the most famous is Peter Levels (@

levelsio

), the creator of projects like NomadList, RemoteOK, and most recently PhotoAI. According to his Twitter profile, his recurring monthly revenue from his projects is a whopping $200,000. But while B2C is easier to break into than B2B companies, you'll need a lot more customers to reach comparable revenue levels. And more customers means more work.

Show Kindness

Try to treat customers kindly. Well, kindness in general makes the world a better place. But in dealing with customers, never assume that they are acting out of bad intentions. Of course, there are those who will try to deceive you. But many “problems” come down to a lack of mutual understanding. For example, people may demand a chargeback because they think that this is the only way to get money back for a subscription they forgot to cancel. When someone asks me for a refund, no matter the reason, I give it back and wish them luck in their future investments. I'll find something more interesting to do than squabble with disgruntled customers for twenty.

If you are nice, people are more likely to use your products and recommend them to others. One of the reasons Amazon gained popularity so quickly early on was because they had excellent customer support. Ten years ago, when my Kindle stopped turning on (which was probably due to unintentional but excessive force being applied to the device), Amazon support said, “Don’t worry, we’ll send you a new one for free.” There are people who will just send me a free replacement without requiring me to prove that the product broke on its own? I was shocked! Especially considering I was living in Poland at the time, where post-communist roots mean that if the salesperson isn’t rude to you, it’s considered nice.

So I wanted to do the same with my customers. Meet their needs, give detailed answers to questions, generously hand out refunds and even discounts upon request. When someone complained that the script wasn't working because it didn't do what they wanted it to, I offered alternatives and the ability to issue a refund. And it paid off. I received a lot of kind words from users, and although maintaining the project was starting to wear me out, the positive feedback I received from time to time has kept me going all these years.

That's the story of my first side project. It was fun at first, got a bit of a drag in the middle, and now it's mostly just a source of passive income that will dry up one day.

Was it worth it, financially? I don't think so. If I had spent all that time working on the client's project, I probably would have made more. But the experience I gained from this side project will be invaluable when creating the next one.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *