How to Start a Business

A Cool Idea and Costly Lessons: The Rollercoaster Ride of My App Development [Journey in Coding] #4‍

Angus Cheng
June 14, 2024

Previous Post|Why My App Didn’t Make Money Initially and What I Learned [Journey in Coding] #3

June 2021, A Very Cool Idea

This is around the time I came up with a very cool idea. Actually the idea was implemented in May 2021, but that month had a lot of stuff going on, so I’ve rolled the “very cool idea” into this month instead.

At the time I had a problem. It was coming to the conclusion that a generic bank statement converting algorithm did not exist. I could create converters for different banks though. So what? Make the user tell you what bank they use and then run a parser for that bank?

Hell no. A bank like HSBC operates around the world. They probably have multiple formats for all the countries they operate in.

Also, if you give a user an input field, they’re going to mess it up. Users are very good at messing stuff up. It’s much better if the app can just figure out which parser to use based on the PDF itself.

I came up with this strategy:

  1. Use pieces of text or images in the document to identify the document type.
  2. Run a specific converter for that document type.

Example 1

  1. Oh look. This PDF has an HSBC logo on it. It has a width of 400 pixels and a height of 200 pixels. This must be the PDF that goes by the name of HSBC_HK_1.
  2. Hello HSBC_HK_1, good to see you again. I will convert you using the HSBCHKParser1 converter.

Example 2

  1. Ah, a new PDF has come to me. I don’t recognise this fellow. Well I’ll give him the name UNKNOWN.
  2. Since we don’t know who you are. I will convert you using the GenericTransctionParser converter.

The idea here is simple. Do a lot of work identifying PDFs. Write a lot of code to work for specific document types.

End of Month Numbers

July 2021, Enter Subscriptions

Bleeding Money

At this point you may have noticed that I spent $14860 HKD on Google Ads and brought in $2037 HKD in revenue. For the third time in this series, I was not succeeding as an entrepreneur.

This was the first time I had used Google Ads so I naively thought :

“It’s just a simple matter of getting the ads to convert 7x better. Once I can do that, all will be good”.

Experienced users of Google Ads will say :

“You aren’t going to get a 7x improvement. You are broked”. 

Google Ads has so many settings to set. It seems like it should be possible. I feel like the mega brains at Google intentionally put in all those settings so that it seems like the ads can be tweaked to run more efficiently.

Non Bank Statements

For some reason, people would go to a website called Bank Statement Converter and then upload a PDF that was not a bank statement. Then they would email me and say :

“Yo this didn’t work. What the hell man!”.

Some would be tempted to reply saying :

“Hey man, look at the name of the website”. 

But I’m a cool dude and I think differently. If they sent an email, they probably care a lot about getting their data out of the PDF.

I came up with the idea to create a UI that would allow users to specify regions on their PDF. Then my app would use the spacing around the text to try to put it into a table.

It’s not a perfect solution. This UI appears when the user clicks the Preview button or when we can’t find any transaction data in a PDF. I’m not great at making user interfaces, I can do the logic part of a user interface, but I really struggle with the HTML and CSS part.

So instead of coding the UI myself, I posted a job on

I hired some guys in Vietnam to do this. They did a good job, their code was a bit gross but it worked. Nice work guys. Shout out to David T.

Google Login

I implemented a Google login/registration flow. I think I did this because I couldn’t think of anything better to do. Now I know that when you can’t think of what to code, you should email your users and ask them what they need. It’s better than just imagining what they need.

I did notice something interesting after implementing the Google registration flow.

  1. 50% of users who registered with an email and a password would upload a PDF.
  2. 90% of users who registered with Google would upload a PDF.

Said more simply, the Google registration flow had a lot less drop off. This drop off term has to do with the Money to Angus Funnel.

Money to Angus Funnel

  1. A person uses the app for free without logging in.
  2. They run out of free credits.
  3. They register for some more free credits.
  4. They use the app for free some more.
  5. They run out of credits again.
  6. They buy more credits.
  7. Angus gets money.

At any of the steps a user can stop using the app. This is because I cannot put a gun to the head of people and force them to use my app. If a user drops off at any stage before Step #7, I do not get any money. That is bad.

Soon after that I removed the email/password registration method. I forced everyone to sign up with Google to reduce the drop off rate and make more money.

Every now and then someone tells me they don’t have a Google login or they want to sign up with their email. When that happens I pass them a special link.

Did this move reduce drop off and lead to more revenue? I’m not sure, at the time I was convinced it did, but I haven’t done the proper analysis to determine that.


Up until this I was selling one off credit packages for Bank Statement Converter. Are you really running a software as a service business if you don’t sell subscriptions?

I wanted to try out selling subscriptions for unlimited credits instead. Instead of $X for Y amount of page credits the plan would be $20 every three months for unlimited page credits.

Which works out to about $6.66 a month. Pretty cheap. People seemed okay with this plan and I got 12 subscribers that month.

End of Month Numbers

Next Post|“Be a Doctor” : Grueling Growth, Discrimination and Rethinking My Startup [Journey in Coding] #5

Written by Angus Cheng (Link)


Active Here: 0
Be the first to leave a comment.
Someone is typing
No Name
4 years ago
This is the actual comment. It's can be long or short. And must contain only text information.
Your comment will appear once approved by a moderator.
No Name
2 years ago
This is the actual comment. It's can be long or short. And must contain only what if text information.
Load More
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form.
Load More


Angus Cheng
Founder of