<!-- -->DocuPanda Blog Building a SaaS with DocuPanda<!-- -->

Building a SaaS that makes money in under 24 hours

Uri Merhav
Uri Merhav

2024-11-05

A long time ago, I was a salaried employee for LinkedIn, leading the standard corporate life, as a Machine Learning Engineer.

Life was good, life sucked. You get a good salary, you play a lot of ping pong, and you have good work-life balance. But you spend a lot of time doing stuff you know to be useless or unimportant. You feed the corporate bureaucracy. You have repeating meeting that should have stopped 3 months ago but no one will pull the plug on it. You rest, you vest.

A fairly faithful depiction of corporate life in Sillicon ValleyA fairly faithful depiction of corporate life in Sillicon Valley

Then I met a clever person in San Francisco. He told me how he made a living — he built his own SaaS. No investors, no weeklies, no JIRA tickets. He just built a solution that’s super useful, figured out how to grow, and lives off its revenue. The tech equivalent of hunting for food. I didn’t know one could do that.

So this post is intended for you. Leaving your cushy job at Google to pursue a bootstrapped startup may be daunting. Heck, never mind daunting. It’s probably a mistake. Don’t do it. Yet.

I want to show you that dipping your toe is easy. You can hack together a website that offers real value to your users, and charge them for it successfully, in under 24 hours.

Maybe this will show a bit of promise. Maybe you’ll be tempted every day to make it better and not watch Netflix. Maybe one day you can make a reasoned calculation in your head where it’s not a silly gamble to leave everything and bet on it, because you know what you’re getting into.

I’m aware of the click-baity nature of an article that shows you how to build anything at all in a day. So here’s the caveat. My claim is distinct from saying I found the infinite money hack. This isn’t a “DO THESE 3 THINGS TO BE WEALTHY FOREVER” article.

What you can do, is come up with a quickly testable idea, piece together a modicum of utility to someone else on the planet, and get them to pull out their credit card for it. In a day. No weekly standup or JIRA tickets required.

And I think that’s pretty awesome, and a ton of fun to do. So I’ll show you how, and maybe this will inspire you to try it yourself.

Validating your idea

If you’re just starting out, I think you should ask yourself just three questions, and proceed even if your confidence in the answers is only medium:

  1. Am I solving something that people need to get solved?
  2. Is there a reasonable expectation that people will give me money for it?
  3. Can I launch it within days, not years?

You do NOT need to convince yourself that nobody else on the planet has recognized this need (if that’s the case, most likely your idea sucks or extremely hard). You do NOT need to have a clear estimate of the market size or a story of how this will be a rocketship to the moon which gets to a billion dollar valuation.

The echo chamber around entrepreneurship is skewed, and focuses on the guys with the big wallet. VCs are professionals who invest large amounts of money and are correspondingly only interested in multibillion dollar exits to justify a large deployment of capital. They want to find startups whose execution requires inordinate capital investment, with proportionally big prizes. If you’re trying to build the next social network, you’ll need hundreds of millions of funding until you hit profitability. If you’re just building a self-owned bootstrap, “this can get to a billion dollar” ceases to be a prerequisite, and almost any idea can make you personally wealthy.

I’ve seen aspiring founders drown in this endless market research timesuck, and then give up. Don’t spend your time asking what’s the total addressable market, how big can you grow, what’s the expected customer acquisition costs, etc.

Most likely you will amount to zero due to analysis paralysis and get back to playing ping pong because it’s extremely unfun to google for Gartner Reports about the total market projections for Broccoli farming apps in 2025.

You’ll gain more by trying.

I love this meme because it’s true for so many thingsI love this meme because it’s true for so many things

As for what your idea is — I don’t need to tell you how to find ideas. If you live in this world, you’ve encountered an itch that isn’t properly scratched. Scratch it.

If you haven’t encountered anything you feel is broken, a hack I like is searching existing transactional markets like Fiverr or Upwork, and see what jobs are getting posted repeatedly and could conceivably be automated. But that’s just the machine learning engineer in me, gravitating to my natural advantages. You should probably find your own idea source.

My idea— a tool to redact PDFs
Feeling the itch

I felt this itch a bunch of times, as I’m demoing my startup’s document extraction tool (docupanda.io). We work with many healthcare and financial companies. They want to test us with a document, but need to first get rid of any personally identifiable information, which is a drag.

If only there was a tool to automatically detect sensitive information in a document and overlay a big old black rectangle on it!

Validating the itch

Just google “PDF redaction”.

Oh no, there are three other companies that already offer exactly the service we want! I guess that means I thought of a bad idea and need a more unique idea that no else is solving.

Not.

The existence of competition that’s solving this exact need, and buying up sponsored clicks from google, validates that this is a niche that actually makes money.

Clicking through the first three results, I see the competition has weaknesses:

  1. One of them is a desktop app: many prefer a web solution
  2. The other requires a credit card before you even get started: certainly this could be optimal pricing for them — but it means all the people who refuse to start with a credit card will keep looking and go down the list to find me.
  3. I spend a half hour trying them out. A few of them introduce a lot of complexity. Most of them over-redact, e.g. removing my bank’s phone number and every single transaction in my bank statement, instead of only removing the identifying information.
  4. Many solutions are just aid tools to let you draw rectangles on a PDF. I want to identify and draw them automatically, saving the user time. So it’s a very differentiated product, which I think is much more useful.
Build a frontend with a landing page and a pricing page

Many people suggest building a website that only promises some functionality and doesn’t do anything, to evaluate how many people sign up. First see if people want this, and only later implement the functionality.

Maybe it’s sound advice, I don’t know. For sure it’s remarkably unfun and unsatisfying to build. So I can’t in good conscience recommend it. I recomment that you build a web page that actually does the thing you’ve promised, even if it’s a very basic iteration of that thing.

Spinning up a frontend and hosting it

This section really depends on your skillset and background.

For me, the easiest way to spin up a new SaaS is to git clone my existing codebase for a SaaS I cofounded, DocuPanda.io. Then trash 99% of the code, and rewrite the existing onboarding page from scratch, so that now it redacts PDFs. I will reuse my existing privacy page, pricing page, landing page, etc, and prompt GPT to change up the language to reflect what our tool does instead of DocuPanda.

You could say that I’m cheating — I’m starting out with a template for a working SaaS to show how easy it is to make a new working SaaS. Doesn’t seem fair.

Guess what: you’re also starting with a template of a working SaaS. You could buy a template like Divjoy, which is excellent but somewhat outdated. Or maybe you want to use Saasfly.io template. Or you can one click deploy a simple website from Vercel, which is a bit bare bones but you can make changes from there. I would recommend hosting your solution on Vercel regardless of which template you use, by the way (not affiliated, just a happy customer).

There’s a good chance you’re reading this article and you know how to code generally but not how to build an actual website — just browse through the templates, follow along the docs, then make changes. GPT is your friend and will help you redesign entire pages and figure out the language. You’re not aiming for perfection here, you’re aiming to be launched.

If you don’t know how to code at all, you may be able to use bubble.io and other disruptors that let you get away with not knowing how to code and still building a website. I don’t have experience on that front, but I firmly believe that any resourceful person with GPT and Google will figure out how to host their own, reasonably performant two-pager website that can do something complex that is useful to its users.

My tech stack

My tech stack, if you’re curious, is just:

  1. Vercel.com hosting for the website
  2. React, Materials UI frontend
  3. Google Firebase for authentication
  4. Stripe for billing
  5. Docupanda.io for understanding documents and redacting them.

You’re probably not familiar with the last one. I’d already mentioned this, but to keep worth having a full disclosure, I’m its Cofounder. DocuPanda is a service which is generally designed to understand documents. So for example it might look at rental lease PDF and give the rent, the payment schedule, move out date, and whether pet alligators are allowed.

DocuPanda can also ground its understanding in exact page and bounding boxes, showing where in the document a result came from (e.g. highlighting the page and section where the rent amount is mentioned). So, I think “Where’s the personally sensitive information in this document”, is something that I should be able to build with DocuPanda’s public API. I suspect it’s good enough to build a minimal viable product for my PDF redaction tool. As long as I give my users a way to fix mistakes and review results, they can probably find value from our this service, despite its limitations.

Brand Identity, Name, Logo: 0.05 hours

Name: The product redacts documents. The domain redact-doc.com is available. No other business seems to use this name. Done.

Logo: Prompt Flux to generate a simple icon that shows a redacted document.

Not bad.

Brand Identity: whatever you inherited in the template you’re using. You can change it later. I changed the color from green to purple. No one cares.

Done.

Build the basic frontend functionality: 4 hours

This is the bulk of our work in this project. Whether this can realistically take hours and not days depends on your idea. If you feel that you’ll probably need many months to launch, I strongly suggest you strip away from your idea. If you really can’t, I suggest you move on to the next idea. It’s better to launch fast and fail a couple of times before you commit months or years. You’ll learn faster.

So let’s reason through what is the bare minimum we need our web page to do:

  1. We want to identify and propose rectangles that contain sensitive information in the PDF the user has uploaded. We’ll do that using DocuPanda.io.
  2. We want to build a frontend that lets people upload a document, and see the rectangles overlaid over their document. They should be able to add more redactions, and when they click save, it should generate a new PDF with black rectangles wherever the user chose.

Let’s first build the frontend. Imagine we already have a bunch of rectangles around sensitive information that we’ve identified. How would we build web page that overlays rectangles on top of the PDF, lets users drag them around, and lets them add more of them? Sounds daunting, I’m not a frontend whiz.

Prompt GPT O1 to do it, and don’t take no for an answer. Here’s a video of me building the basics of this component in 30 minutes.

In the video I try to avoid using my prior knowledge of how to build frontend code. I try to stick with just prompting GPT like a monkey repeatedly. Do this enough times and you’ll learn actual frontend. But again, the focus here is on getting stuff done and not getting bogged down.

It’s not going to win awards for best design ever, but I’d call that servicableIt’s not going to win awards for best design ever, but I’d call that servicable

Build the basic backend functionality: 1 hour

This part is unique to my idea, and it wasn’t chosen on accident. I know I already own this tool — DocuPanda.io, so I should be trying to use it. DocuPanda finds the information you need in a document consistently, and it can also highlight the page and section where that information was found.

Building a Schema

In DocuPanda you can define a schema that says what you want to extract from documents. Most people use it for stuff like extract rent from a lease, specific clauses from a contract, line items from an invoice or utility bill, etc.

But it can support some pretty niche use cases, that include fiinding out specific contract clauses, answering complex scientific questions given an academic paper — and also, I think it should be capable of finding all occurrences of Personally Identifiable Information (PII) in a document.

So how do we proceed?

  1. Googled around to find what common forms of PII there are. Pasted a docs page from AWS, which solve a similiar problem only on plain text and not PDFs. Then I asked GPT to broaden that list and make it more generic.
  2. Uploaded some documents that contain my PII into docupanda, and in the schema creation I wrote “You need to find personally identifiable information, here’s a list of types”. Paste that list, and hit run.

Creating a schema to find PIICreating a schema to find PII

I made a video tutorial of the entire process, so you can follow along if you’re curious.

Getting locations and redacting them

Getting the bounding boxes from DocuPanda is easy. You just make a call to its API. DocuPanda can localize the page and section that contain any information it finds.

Here’s what that looks like on DocuPanda’s website. On the left you can see it extracts exact account number values, names, etc. On the right you can see how the highlighted value maps to a specific section in the document.

You can probably already notice a limitation. Right now the localization is done at entire section levels, so we’re not highlighting specific words. We can improve on that later, right now we’re trying to get to the finish line and launch.

So all we need to do is write code that uploads a document to DocuPanda, standardizes with our PII detection schema that we just made, and pulls down the rectangles. And then we need to apply the redaction on to the PDF, making the rectangles into black ink on top of the PDF. I made another video tutorial that shows how we do that. This is pretty technical, and again boils down to the same point I’m trying to make, which is you can get a lot of mileage with not knowing much and prompting GPT O1 like a monkey on acid. You can watch this process below.

Ultimately, you wind up with very simple code that’s still a bit too long to quote in a blog post, so you can check out the gist here.

Wrap up: 2 hours

Take a look at the final result: pdf-redact.com.

If you look at Docupanda’s website, the plagarism is obvious. All I’ve done to convert from my template to this website is to take my existing page, explain to GPT what Pdf-Redact is about, paste in the landing page content, and ask it to give me an updated page with language that reflects what updated language to reflect what Pdf-Redact does.

I grabbed the images from undraw. If I had more time I’d prompt Flux to give me some more relevant pictures.

To be sure, the result is a website that looks generic and it’s far from polished. It got me to the finish line, and it’s always better to launch first, improve later.

To test out if website is useful, I’ve used Google Ads ability to generate a campaign automatically based on your website content. I removed a couple of irrelevant keywords they came up with, but otherwise their first guess was generally fine, targeting keywords like “Redact PDF” or “remove PII from PDF”.

Great, lets give Google $30 a day for a bit and see if this is good enough to convert anyone at all. I’m not expecting this ads campaign to be profitable in this preliminary form. I do expect to get a first signal if this is useful at all.

Results

So far I’ve made a whooping $19. Give me a chance though, it’s only been a day since my google ads campaign went live.

I’ll keep this service running, and who knows — maybe it ends up growing. It’s on our development roadmap to let DocuPanda localize individual words instead of entire sections, and at that point my product will become pretty powerful.

I hope you’re reading this and feel like building something of your own. Please try. DocuPanda is my years-long journey, which is what you hope a SaaS will grow into after those first 24 hours.

If your business could also use DocuPanda’s ability to find information consistently from PDF documents and scans, I hope you consider trying it out.

Happy building!

© 2024 Hoss TechnologyTermsPrivacy