/ code

One Year of Bootstrapping a SaaS Startup

Hey! This is an article about me bootstrapping Klart.co, a bookmarking tool for designers and developers, for a year as a solo founder. I worked on it as a side project and put in on average 4 hours a day.

First version (May)

Last year in May I set out to build Klart.co, a simple tool to capture screenshots of websites I liked. The first version was super basic and pretty much built on a weekend. After installing the chrome extension you could save a link and screenshot of any website and browse them on Klart.co. It looked like this, and had no support for tags, real-time updates or anything like that.

First version of Klart

Iterating quickly (May)

Klart's first users was mostly friends and people coming from Twitter/blog posts. After I got some feedback, I decided to build support for real-time updates using Socket.io. Why did I build real-time support this early on? Because some users didn't think their snaps were saved when they used the extension in one tab, switched to Klart and nothing had happened. This is when I realized how important it is with real-time updates if you can make changes to the data from other sources than the current tab.

I also felt that I needed support for tags since organizing became a mess when the number of snaps started to grow.

Real-time and tagging

Launching on Hacker News (May)

After building these features I was ready to launch on Hacker News and see what people say. Consequently I was also featured on Product Hunt after being on the front page of HN for a while. This is when things started to actually take off and I started to get tons of great feedback. I also decided to answer all comments, since if people take time to give me feedback, responding is the least I can do.
Answering comments on HN

First customers and failed payments (May)

Although I had gotten a few paying customers and some beta testers before launching on HN, launching was an obvious boost. About 10 people signed up and paid for Klart during launch and another 3 or so had trouble not getting their payments through Stripe :( which was a bummer for a me launching my first business. The frustration when people want to buy your product but some bank/payment stuff is in the way is just 💀. I could have invited them in for free and try to charge them some other way later. This is probably what I'd do if it happened again.

More customers and feedback (June-Aug)

As school finished in June I went to Asia for a two month work + vacation before heading to Singapore for an exchange semester in August. I kept working on Klart and I got some 5 or so customers. I also noticed that using the app on bad WiFi in Asia meant terrible performance. Since Klart is a tool for designers, and saves all screenshot in full PNG resolution, it could take a while to upload.

Decreased traffic and growth (Aug)

After the launch on HN and PH traffic did decrease drastically. Don't let this break you. One of the mistakes I made while launching was to not collect emails in some way, since Klart was a paid-only product. Doing it again, I'd probably offer something for free to be able to get back to potential customers later.

Depressing - Don't let it break you

Back to drawing board - performance in Asia (Sept-Oct)

As mentioned earlier, performance on bad WiFi was really bad. I wanted to be able to offer a better experience for myself as well as everyone else with slower connections. I looked into mainly two things:

  1. Saving snaps took a long time and you couldn't add tags until it was saved
  2. Loading images in app took a long time

The biggest problem I had with (1) was that you weren't able to add tags before the image had been uploaded. In other words, a blocking UI. I solved it by allowing users to add tags while saving and doing all async stuff in the background so users could keep browsing while it happened.

For (2) I looked into how Facebook served previews. They have some pretty advanced techniques creating fixed JPEG headers and stuff. But I'm not Facebook so I settled with creating a 4x4 GIF of the image and inlined it in the JSON as base64 and presented it with a gaussian blur. This proved to be enough to deliver a much more pleasant experience.

If you're into UI/UX you can read more a about what I did with the chrome extension and image previews.

Image preview

Pixels - A natural part of Klart (Nov)

Klart started to feel like a really nice way to save design inspiration and ideas now. I had used it myself to save hundreds of designs, and ideas. I was thinking about the next step for Klart and realized that I had saved a lot of beautiful designs. I decided to use this to build a simple design inspiration website. Every day I'd post designs that I save publicly so you can browse them and be inspired.

I initially launched it as Daily Pixels but later changed it to Klart Pixels since I figured it fits the Klart brand nicely. You can check it out here.

Klart Pixels

Time to think (Dec)

After finishing my exams in December I travelled around Asia again for a month before going back to Sweden and started working full-time as a developer. I had some time to think during this period and realized that Klart could also be super useful for teams.

Exploring new markets (Jan-Apr)

January through April was slow on the development side. I had just started a new job and got home from 7 months in Asia. I was mostly doing research and thinking about what problems individuals/freelancers/businesses had with saving, organising and discussing ideas. I also analysed the needs for me, as a team member, at my new job.

Klart 2.0 (May)

During the year, I've received great feedback and I think many pieces fell into place when I decided to expand Klart into a tool for teams too. Things that people generally wanted was:

  1. Notes
  2. Sharing
  3. Team plans

The initial design was simple but not scalable to add these features. For example: I used a modal for the "show state" of a snap. Displaying tags, notes, discussions inside would be a mess. So I decided to redo it a bit and I'll probably write a more detail post about that soon.

I also decided to lean towards the designers + developers audience. One of the obvious changes as a consequence, is that for each snap I show the 5 most dominant colors. I'm also able to optimise for other use cases and have a clear audience to build for (including myself).

Now

I'm currently working on getting Klart ready for teams with notes, comments, discussions and a better filter that supports both search, tags and archival status. I'm also going to update the chrome extension to support saving to different teams. Hopefully I can land a couple of teams as customers this summer. We'll see :). This is what Klart looks like now.

Klart.co today

Lessons learned

  • There are lot's of ups and downs. What keeps me going is the freedom of self employment and opportunity to work on something I am passionate about.
  • Making a product where you are the customer makes a lot of sense. It's more fun and you know the market better.
  • Building an MVP quickly (< 1 month) is great for momentum and feedback.
  • Building a paid product for consumers is hard. Offering something for free is a good way to keep in touch.
  • It's easy for me, as a developer, to dig deep into technical problems that are not really essential at the moment. Be aware of this is you're an engineer starting a business.
  • It's possible to build a SaaS business part-time as a solo founder. Find balance to stay motivated.
  • Building and selling to an undefined audience is hard. Make sure to know who you are building it for and selling it to. Know how to get your first 10 customers.
  • Show up and share your work, every day. It might not look interesting to you. But it can be super useful and inspiring for others.

That's it! If you'd like an email when I write something new about bootstrapping. Sign up below. You can also ask me anything on Twitter @drikerf and I'll get back to you right away 😊.