I turned off the ads in September 2021 and the next month I made even more money. This wouldn’t have happened if I hadn’t raised prices. Also, a big portion of the revenue from the previous month came from one customer. In November 2021 I was expecting to bring in less money than the previous month.
One day I got a tech support email from some guy in South Africa. I notice he’s a ‘digital marketer’. I ask him if we can talk and discuss ideas to help me grow Bank Statement Converter. We talked and he suggested that he runs Google Ads for me.
No thanks. It’s too expensive. Also I suspect he won’t be able to do much better than I did. He then suggests we run a cold email marketing campaign using Lemlist. Sounds more interesting. I then agreed to pay him $600 USD for 20 hours of marketing work. I signed up for LemList and gave him the login details.
A week goes by, and he hasn’t replied to my email or done anything with LemList. I prod him with an email and he makes some excuse about power outages disrupting his work. He then inputs some contacts into LemList and sets up a template.
Two more weeks go by, and he hasn’t done anything new in LemList. I fix the template for him, and schedule the emails to go out. It annoys me that I have to finish his work for him. Also I assess that the work he’s done would take me about three hours to do. He has done about three hours of work in the space of three weeks.
I send him this email:
Hi XYZ,
Overall I got the impression you don't really have the time to take me on as a client. There were long gaps between our emails, which led to bad results. I think in the end we were only able to send out about twenty emails.
Last month Bank Statement Converter brought in about $450 USD in revenue, so I can't really afford to spend money that doesn't yield results.
If you'd like to talk more about this we can get on a call.
Angus
He never replied to the email, I think he knows he did a crap job and was embarrassed. Or, more cynically, maybe he was just happy to pull $600 USD out of me.
I learnt a lesson from this, don’t hire someone until you know how to do their job. Otherwise it’s hard to tell whether they’re good or not. It also made me think poorly of people who work in marketing.
Around this time the resulting data we would send out looked a bit like this:
Not too bad, but it was annoying that the description spreads across multiple lines. I did this because it appeared like that in the PDF, and it was hard to figure out how to join the descriptions together.
Users would tell me they didn’t like the descriptions spread across multiple rows. I started fixing the results for specific banks. Then I thought “Why not just aggressively merge the descriptions up?”.
Algorithm
That’s much better. The algorithm doesn’t work for all bank statements, but it works for most. We can configure a special row merging strategy for those bank statements and cover the common case with this strategy.
I started to get bored with coding Bank Statement Converter. Instead I spent most of the month learning Rust and solving Advent of Code puzzles. I really enjoyed the speed of Rust, but I did not enjoy fighting with the Rust compiler.
I think it’s really cool that Rust enforces memory and thread safety through its compiler. However I did not enjoy coding in Rust.
Around this time some crypto bros appeared and asked me if I would help them create an NFT collection. They said I could be the CTO. I got greedy and agreed to do it in exchange for a portion of the revenues generated from selling the NFTs.
My job was basically all tech related stuff:
This NFT project dragged on for months, and by the time we were done the NFT market had collapsed. So we decided to pause until the market recovered. It still hasn’t recovered, and probably never will. I’m embarrassed that I was part of this, and I wasted a large amount of time working on it.
I decided to take over the cold emailing from the marketing guy. I started sending out one email every 20 minutes during an 8 hour window. The first email goes out on December 21st 2021. I got my first reply from someone a week later. The reply is strange:
Thank you, Angus.
I would like to use your software & promote it to other accountants.
Regards,
I replied to this, but he didn’t respond to me. I just checked and this person has never signed up for Bank Statement Converter. Aside from strange messages I also got a few angry replies.
I don’t know who u r and ur emails look like scam! If u have something to offer, talk straight.
Kindest Regards,
[NAME]
This guy was from Canada and he had his phone number in his email signature. I called him three times but he hung up on me every time as the phone was dialling.
Most people ignore the emails I send out. After two months of cold emailing people I was able to sell two subscriptions. It doesn’t seem to be a very effective marketing strategy for me.
All I did was fix conversion issues that customers reported to me. The rest of my time went to the NFT project.
One day I get this message from Google:
The Google Account angus@bankstatementconverter.com is now disabled. It looks like it was being used in a way that violated Google's policies.
I assume I was banned for sending out too many unsolicited emails. Cold emailing isn’t against Google’s policy, but it is if it’s automated and the volume is too high.
Lemlist recommends you send out emails every 20 minutes in an eight hour window, so you don’t get banned by Google. I was sending out emails around the clock:
This was annoying, but it really was my fault. I think LemList should put tighter restrictions on their customers. I reckon Lemlist should make sure their customers know what will get them banned from Google and strongly advise they don’t set up overly aggressive campaigns.
I decided to stop cold emailing users. I cancelled my Lemlist subscription and bought a FastMail subscription. It was very easy migrating my emails from Gmail to FastMail.
Our NFT project was fancy watch themed. We hired people to make the layers for the watches, but we forgot about the metadata. That meant we had to go through the hundreds of layers and assign metadata values.
I don’t know anything about fancy watches, so I had to get on a call with a guy who owns a watch store. I’d share my screen, show him the layer, and then he’d think up attributes for that layer. Attributes like patina and lightly used. Doing this made me like watches a little bit more, but I’m still not a fan of luxury products. I would never buy a fancy watch or any other luxury product.
A fair amount of people were creating multiple accounts to get more free credits. This annoyed me. I realised I could block people from the same ip address from creating multiple accounts. So I did. This led to people getting blocked from creating an account and then buying a subscription. So I guess that improved conversion rates.
I was using Monit to automatically restart my app when it crashed. One day I realised I could use systemctl instead.
Systemctl is short for “system control”. Cool guys like to pronounce it as “system cuttle”. This makes it sound like Linux systems are controlled by a cuttlefish.
I use Ubuntu Linux, and systemctl is bundled with that. It’s basically a part of the operating system so it will be running. I figured I might as well use systemctl and then I could delete Monit. That would mean I would have one less process running. So I did that. Thank you system cuttlefish.
I made six Git commits this month. I was busy with the NFT project.
Someone from the Australian Tax Office (ATO) emailed me and wanted to get on a call. They told me they’re from the financial crimes department. The ATO has the power to get bank records from any business in Australia if they suspect that business is doing a financial crime.
Usually the banks will give the ATO CSV or Excel files, but some banks send over enormous PDFs instead. The ATO wanted to use Bank Statement Converter to deal with the enormous PDFs. I tell the ATO their idea is a grand idea, and I’d be happy to sell them a subscription.
Now, at this time a user can buy an unlimited subscription for $90 a year. That means even a cashed up organisation like the ATO would only be paying me $90.
That ain’t right! This leads me to start thinking about how to get more money from bigger customers.
A bit later the person from the ATO tells me they’re worried about data privacy and security concerns. They ask me if the application is end-to-end encrypted. I tell them it’s not because end-to-end encryption means even my server cannot read the PDF, which would make it impossible to process the PDF.
I suggest that I make them an offline version of Bank Statement Converter. That way it’ll run on their machines and the data never leaves the ATO. Surprisingly they did not like that idea. They tell me updating offline apps is a pain and they much prefer cloud solutions.
The conversation fizzles out and I fail to sell my services to the Australian Tax Office. What a shame.
I have a customer who emails me every few weeks asking me to help them login. This is interesting because I only let people login with Google. All they have to do is press a button. I think they’re often using new computers and they often forget which Google account they bought a subscription with.
I always help them login, it’s not too hard, I just copy and paste the answer I gave them from a few weeks before.
My discussions with the Australian Tax Office made me realise I need to figure out a way to get more money from the bigger customers. I came up with a Corporate Unlimited Plan. It costs $45 a month or $270 a year. This lets big customers set a domain name and then everyone with an email address under that domain has an unlimited plan with Bank Statement Converter.
Then I sat back and waited for the money to come rolling in.
But the money did not come rolling in. Not many people bought the Corporate Unlimited Plan. It’s much cheaper to create one account and then share that login with all your colleagues.
One person does buy a yearly corporate unlimited plan, they’re friends with the forgetful customer I talked about at the start of this chapter. This is the first time I see someone buy the app through word of mouth. I suspect this happens quite a lot, but it’s hard to track.
In 2022 the deadline for filing a tax return with the IRS was May 2nd 2022. This is why April was such a good month, lots of Americans were playing around with bank statements. The tax return filing deadline is around the same time every year.
The NFT market collapses and me and the crypto bros still haven’t launched our NFTs. Damn. The bros decide to delay the launch until the market comes back. I suspect the project is dead and the NFT market will never return.
The bros I worked with all had full time jobs, I was the only one working on this full time. That was a bad idea.
It was also a bad idea to do this because I did not believe in NFTs. I knew the NFTs had no value, but I agreed to help for the easy money. Selling something I knew has no value made me feel like a scammer.
I would have been better off getting paid for this instead of taking equity, however I left my job to be an entrepreneur. Getting paid for hourly work wasn’t the goal.
Password reset flows are always a pain in the butt to implement. So I just didn’t create one. Whenever someone asked me to reset their password I manually bcrypted their password and hacked it into the database. Eventually I got fed up with that and implemented a password reset flow.
I only mention this because I think it’s a cool way to save development time. A lot of features you think are essential for launch probably are not. Dom and I launched Bank Statement Converter without a database and without the ability for people to register accounts.
I was listening to Y-Combinator talks by the founder of Intercom. Intercom is a chat widget you can embed on your website, it’s a nice customer support tool.
I thought “I should add that in, I like talking to my users”. Intercom turned out to be very expensive. So I used a freemium alternative called Crisp Chat. I highly recommend it. I’ve done a lot of sales conversations and customer support work through Crisp Chat. I’m still on the free tier, but one day when I need one of their premium features I will be happy to pay for it.
Written by Angus Cheng (Link)
0 Comments